Another thin software development analogy

April 22nd, 2008

Software development is like making a table. It can be as fun, frusterating, time-consuming, rewarding, and difficult as you want.

Someone tells you the dimensions, the shape, the color they want, and acts like that’s enough to get a definitive estimate. A square, 4′x4′ table can be made in under an hour. Just nail a few boards together. Or it can take days (maybe weekx, I don’t know, I’ve never made a table), if you want to make it sturdy and robust, with intricate carvings, maybe a hidden drawer, and whatever other frills you can think of.

Of course, if you go to a table maker, you probably have a better idea what you want. I don’t think that’s the case with software development. I was asked to give some estimates today, to add some functionality to an existing app, and I’m just hoping I can get them right within an order of magnitude. Getting the functionality working, in the sense that the app can do what they want, if they ask it just right, any never want to change anything, would take only a few dozen hours. Getting it working right, so it won’t crash, and it errors gracefully, and it can be changed without a complete rewrite, and it has tests to verify that it works, might take a few hundred hours.

What type of table does your client, customer, or boss want? I think it’s usually safe to assume they don’t want the one-hour table. And the fancy table might be too much - they’re more concerned with the functionality. But that still leaves a lot of room to work with. If you try asking what they’re looking for, they’ll say they want a fancy table for a one-hour table price.

The trick is to give the estimate they’re looking for. When someone says, “give me an estimate”, what they mean is, “I’m thinking of a number”.

Leave a Reply

Name

Website

Comment