Wednesday, May 26, 2010

Baking Bread

If you want to make bread, there are steps you have to follow.

You must:

1) Have a recipe
2) Mix the ingredients
3) Knead the dough
4) Let the dough rise
5) Put the pan in the oven and bake it

You don't get to skip steps.  If you want to end up with bread, you have to have a recipe, and follow the steps.  The output of each step is the input to the following step.  It makes the next step possible.  If you don't mix the ingredients before trying to knead the dough, you're not going to end up with bread.

What would you think of a baker who put flour still in the bag, a stick of butter still in the wrapper, and 2 whole eggs still in their shells into a pan, then directly into the oven?  Would you consider him a process genius who came up with a brilliant shortcut that the rest of us dummies never thought of?  Or would you think he's a little, um, "special"?  Would you expect to be able to dine on a delicious loaf of warm bread for dinner?  My guess is that if this describes your chef, you can expect to order takeout a lot.

Making software is like baking bread.  There are sequential steps you have to follow to produce high quality software.  There are no shortcuts.  Notice that it doesn't matter whether you're in a hurry.  It doesn't matter whether you have a desired delivery date.  It doesn't matter whether you're a startup.  It doesn't matter that you're short-handed.  It doesn't matter whether the customers are nagging you or that the board of directors is breathing down your neck.  You have to follow the steps if you want to make software.

The steps are well known.  It's not necessary to invent them.  You just have to know what they are and follow them if you want to end up with high quality bread...

...or software.

Todd Shoenfelt

No comments:

Post a Comment