Skip to main content

Why software development estimates are terrible

I really like this quote with Nobel Prize winning physicist Richard Feynman. He is describing a scientific mindset that applies to software development just as well as physics:

Stakeholders, business people, and other normal people mistake building software with things like manufacturing or building. When I had my roof replaced recently, the contractor measured the roof, determined the materials to be used, allowed a margin of error for possible dry rot, and came up with a bid that was within $300 of the estimate (he was under), and he finished when he said he would. Perfect. He was dealing with known quantities and he is a professional. Why the heck are software estimates and roadmaps so terrible when lots of other professions clearly have estimating worked out?

The difference with software is that we do not start with a known system. All modern systems of any complexity and age tend to be big, or even huge. Millions of lines of code might be involved. Depending on the size of the company, thousands of developers might be making changes to little pieces of it every hour of the day. Millions of customers use the systems that were created by thousands of people, many of whom are no longer with the company. I am not describing any one company - I am describing every large company that I have ever worked or interviewed with. If we want to compare roofs to code imagine that you have to make an estimate to re-roof a house, but you have never seen it before. And it is the size of the moon. And it is made of all different stuff that is of different ages and condition. And there are millions of people under the roof. And there are thousands of people building and tearing down different parts of the roof the whole time that you are supposed to be roofing it. And it is raining. And snowing. And Sunny. And Hailing. And there might be an earthquake tomorrow. And several parts of the roof are definitely on fire. Now, please give me an estimate that is precise - I need to know exactly what day you will finish and how much it will cost - and you need to tell me now. No right now. In this meeting. Go.

You may think that I am exaggerating, but that is what it is like every day. Why do we do it? Well, as Mr. Feynman says, we are not afraid of not knowing. We love a mystery and finding things out. It is the biggest puzzle ever, and just like playing horseshoes in a lightening storm with farm dogs running around you (I have done this, too), you just never know what crazy thing will happen. How will we make it work? How long will it take? Secretly, we have no idea, but we really want to find out. This sort of acceptance of uncertainty is maddening to business people who want to announce release dates. The best a good estimator can really do is just watch his or her team go through a few release cycles and pad all of their estimates. If they usually take twice as long as they estimate, then double them. What kind of process is that? Did Edison know how long it would take to invent the lightbulb? No. He famously went through dozens of prototypes, and he was just trying to put current through some wires. We are way, way past that, now. So if you are a normal person and you have the misfortune of having to ask software developers how long it will take to build your feature, just remember not to be afraid of not knowing.


Popular posts from this blog

Reducing CO2 in your home the nerd way

For Christmas my wife gave me a Netatmo weather station because I am a home weather station nerd. The Netatmo is very cool, but it has an unexpected feature: it measures indoor Carbon Dioxide (CO2) levels. As soon as I set it up, the Netatmo began to alert that our indoor CO2 was at an unsafe level. The notes said that outdoor CO2 is usually around 400 ppm, and numbers above 1500 ppm could be unhealthy. On that first day, my house was at around 1300 ppm. Prior to that, I never gave indoor CO2 levels a thought. I began to do some research and discovered high levels of CO2 can cause symptoms such as fatigue, headache, breathing difficulties, strained eyes and itchy skin.  My family does have all of these issues, especially on the weekends when we are home all day, but I never connected that to indoor air quality. Previously, I installed a Nest thermostat . The Nest is very smart and saves energy by learning your habits and programming itself. Unfortunately, it is so efficient, that t

Rooftop Playgrounds

This week I have had some meetings in a tall building in downtown Seattle, and when I took a moment to look around and enjoy the view I have noticed playgrounds on rooftops. I saw this daycare playground: and this playground on top of a school: I think that this is a really cool use of space. A friend that grew up in NYC said that her school had a rooftop playground, too. The delinquent in me wonders how many toys and balls go over the side, but I bet the teachers are pretty strict about that. Downtown Seattle has always seemed a little unfriendly towards kids and it is neat to see spaces being carved out.

Dutch Oven Balsamic Chicken Recipe

This is a family favorite that is easy to make. It smells so great right from the start, that the first time I made it, my youngest son walked in the house while I was cooking and yelled, "Daddy! Make that one again!" It started life as a recipe on Delish .com, and I have cooked it several times, making small changes, to make it slightly less pretentious, and to work out issues with the directions. I also doubled the recipe so we end with a few leftovers for lunches. Ingredients  1 c. balsamic vinegar 1/4 c honey 3 tbsp. whole-grain mustard 6 cloves garlic, minced Salt Freshly ground black pepper 8 bone-in, skin on, chicken thighs 4 c. baby red, potatoes - or Brussels sprouts (or both) cut in 8ths (12oz bag) 2 Tbsp. Herbs de Provence 2 Tbsp extra-virgin olive oil to cook the chicken Preparation Marinade In a large bowl, combine balsamic vinegar, honey, mustard, 1 Tbs Herbs de Provence, and garlic and season with salt and pepper. Whisk until combined.