White Men Can’t Jump and Software Developer’s Can’t Estimate.

There are few things as predictable as software developers can’t estimate.  Nonetheless it software projects follow the same patterns.  Most small projects are underestimated by about 10%, medium size projects by 40% and very large projects by more than 200%.  As project size increases the error rate of the estimate increases with near mathematical precision.

Estimating problems are not to software development.  Gustav Theordor Fechner wrote a book Elemente de Pscyhophysik in 1860.   He coined the term “psychophysics.”   Over the years all the senses have been studied: vision, hearing, touch, taste and smell and the sense of time.   There are three main topics in psychophysical classification scheme: absolute thresholds, discrimination thresholds and scaling.  I am writing about scaling.  It is clear that the untrained are not good at scaling. On the other hand, those individuals that are good at scaling have been trained and they have adopted some sort of strategy to help them measure and then scale.   The point here is that estimating is a skill that can be learned.

The same pattern with estimating is seen over and over again.   A person is pretty good at estimating the height of a 20-foot tree and horrible at estimating the height of a 200-foot building.  The same would be true when they try to estimate the weight of a rock.  They are good at estimating the weight of a ten pound rook and very poor at estimating a 800 pound rock.  So it does not matter if we are estimating the weight of a rock, volume of a liquid, loudness, the height of tree or the size of a software project the error rate increases with size.  As size gets larger the error rate increases.

Musicians learn the specific vocabulary of dynamics.  Trained musicians can hear if one piece of music is being played louder than another piece of music.   As the music gets relatively louder they are able to distinguish loudness because they have been trained to do so.    Musicians are trained in scaling and they have a specific vocabulary for loudness.    They know that piano p means soft while pianissimo pp means very soft.  On the other hand they know that forte f means loud and ff means very loud.    If they are playing their instrument at p and their sheet music or conductor directs to play at ffff they know that means to turn up the volume about six times.   Musicians also know if they are to gradually get louder (crescendo) or gradually get software (decresendo).

You may be thinking that it is lack of experience that prevents people from estimating the height of a tree or loudness.  Wansink studied bartenders with an average experience of over ten years.  He removed all their devices to estimate the volume of liquor  they pour into a glass. When their strategies and measuring devices were removed they were unable to pour the correct amount of liquor into a glass.

The same would be true with musicians.  If suddenly all the symbols and strategies used by conductors to communicate with musicians were removed, then the musicians would have a difficult time playing at the right volume and right tempo. The musician would be constantly asking, “How much louder or softer?”

One of the values of measurement in software is it provides a vocabulary to communicate.  It allows developers to communicate with the core business and explain how much larger. Software developers are not aware of the importance of scaling.  They do not understand scaling is critical to sizing software projects.  The absence of a measurement of scale or an ability to size a software projects prohibits one software project to be compared to other software projects.

WeightWatchers trains dieters how to estimate their food consumption.   It is not just the amount of calories to consider because the grams of fat  and fiber are a important too.  Calories, fat and fiber are combined to determine points.  The point system is a method of scaling food consumption.  The “points” allow one food item to be compared with other food items.

The reason software development can’t estimate is because they don’t measure.   Those few that are successful at estimating software projects have adopted a strategy to size and scale projects.   The best estimators are those that base their size on functionality.

Read more at Reboot! Rethinking and Restarting Software Development.

Advertisements

The URI to TrackBack this entry is: https://davidlongstreet.wordpress.com/2009/05/27/software-developers-do-not-have-the-basic-skills-to-estimate/trackback/

RSS feed for comments on this post.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: