The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

On the Importance of Defaults

I posted a piece on my blog that people in this forum may find interesting. It's about selecting defaults for software configuration options. Check it out at: http://ericomguy.blogspot.com/2007/06/on-importance-of-defaults.html

Dan
Dan Shappir Send private email
Thursday, June 21, 2007
 
 
In my enterprise software,  I make it a point to eliminate human tuning.  Whatever logic is used to arrive at the correct option selection I program into the software so that the software can tune itself.  Humans should tell the software WHAT to do not HOW to do it.  Runtime auto tuning is far better than depending on humans for setting configuration options or setting factory defaults that cover a majority of installations.  Selecting fixed factory defaults only goes halfway.  Programming the logic of arriving at defaults into the software goes fullway.
Donald Duck
Thursday, June 21, 2007
 
 
Obviously self tuning is ideal, when it is possible. Sometimes there are several options that could be valid, how do you choose which one to use? In some cases it simply impossible for the software to infer every setting because some extra information is required - information that is only available to the person configuring the system.

Dan
Dan Shappir Send private email
Thursday, June 21, 2007
 
 
How do we choose which one to use?  By what logic do we infer the setting?  Program the same logic into the software.  If the logic requires some extra information (like the website to contact) then let that information be handled as a separate piece of data.  Even in these cases we can make the software learn, for example it can try to contact websites that was contacted in past sessions.

Can you give examples where self tuning is not possible?
Donald Duck
Thursday, June 21, 2007
 
 
Sometimes it's just as much work for someone to teach the system something as it is to just enter the data in a configuration screen.  Why have the system try to infer the on-call pager #, for example, instead of just providing a place that the admin tells the system who to ring up in case of trouble?
Scott Meade Send private email
Thursday, June 21, 2007
 
 
> Can you give examples where self tuning is not possible?

Here is an example where it is only partially possible:

Our server can connect to a directory service for the purpose of identification and authentication. If our server is running on Windows and the directory service is MS Active Directory then our server is able to automatically configure itself appropriately. If a different directory service is used, such as Novell eDirectory or OpenLDAP, then some manual configuration is required. For example in some cases you must explicitly provide the address of the directory service. Also, in some cases you must provide appropriate credentials in order to be able to access that service. Obviously credentials are not something you can automatically infer (or we'd all be in a lot of trouble).
Dan Shappir Send private email
Friday, June 22, 2007
 
 
Agreed, credentials can't be stored anywhere.  But aren't credentials part of 'what' or rather 'who' not part of 'how'?
Donald Duck
Friday, June 22, 2007
 
 
Generally you are correct, but not in this case. As I wrote, in this case these credentials are a fixed part of the configuration, and are used to access the directory service. They are distinct from the credentials of any particular user being authenticated.

In any event, this is just an example. In my experience with enterprise software there are always some settings that cannot be automatically inferred by the software.
Dan Shappir Send private email
Friday, June 22, 2007
 
 
==>Can you give examples where self tuning is not possible?

Virtually any "trade-off" situations. For instance a cache situation -- you're trading for more speed, and the cost of additional RAM consumption.

Sure, you could "self tune" your way into a bigger, more optimal cache -- but I wouldn't want that done automatically without bounds. I may have something else running on the box that needs the RAM more. How is your self-tuning engine gonna know what my constraints/choices are?

In the case of, say, databases. Your self-tuning may decide more indexes are great and will speed things up. But we all know that in this situation we're trading away extra disk space for these indexes. We're trading away additional effort on INSERTS and UPDATES (the DB engine's gotta maintain the indexes when data's changed) -- this is being traded for the raw speed of indexes.

How's your self-tuning going to know if I can afford that extra processing with all my other constraints?
Sgt.Sausage
Friday, June 22, 2007
 
 
For one thing my database is 100% In Memory database.  So it does not need any Cache or Index.  My customers buy it knowing that the entire database will be in memory all the time.  So the given example of cache/index does not apply to me.
Donald Duck
Saturday, June 23, 2007
 
 
That's a weird enterprise app that has such a small amount of data, Donald
Elmer Fudd
Saturday, June 23, 2007
 
 
I can fit one million transactions in 1 GB of RAM.  My customers have hundreds of gigs.
Donald Duck
Saturday, June 23, 2007
 
 
First I would like to say that I'm feeling conspicuous using my real name in this thread :-)

Sgt.Sausage, if you read the post that I originally linked to as well as a previous post about configuring load balancing (http://ericomguy.blogspot.com/2007/06/counting-session-is-not-enough.html) you'll see that I have a somewhat different take on this than you do. While I agree that it may not be possible to fully pre-configure a system (or for it to auto-tune) without knowledge of all other constraints, I believe that in most cases the user or admin does not have the tools or capabilities or time to do it either. That is why I wrote:

"our approach is to select default values for configuration options as if the ability to change these values didn’t exist"

Another option is to bridge the gap using Professional Services, either internal or external (Consultant or System Integrator). But that puts the product in a whole new bracket regarding Total Cost of Ownership (also it assumes the System Integrator or Consultant is competent).
Dan Shappir Send private email
Monday, June 25, 2007
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz