This is actually a true story that I am about to tell you. I heard it from a friend talking about his childhood a couple of weeks ago. When I listened to him, I could immediately compare it to many of the software projects I have seen.
So, once upon a time there was a little boy who was quite industrious. He had an idea, a vision if you like. He wanted to build the playhouse of his dreams. It was a very special playhouse, as it was supposed to be underground. He dreamed of decorating with furniture, a periscope to watch out for “enemies”, having candy and soft drinks stored away and lots more.
The little boy started to create the Big Plan of how the playhouse should look like. He drew drawings, made lists of all things he wanted to have in the playhouse, started to save money for all candy he was going to buy, and decide which of his favorite toys that was going to be there with him.
After having worked on the planning of the playhouse for a long time, created his drawings, made lists of things to do, he was finally ready to approach his parents to ask permission. His parents, who had been doing gardening around the house for years, said to the little boy
-Of course you can dig a playhouse in the back yard. Go ahead!
The little boy ran to the garage to get the shovel out and began digging away in the lawn. And he dug and dug, drank lemonade, and dug some more. After a couple of hours he had made a beatiful mess of the lawn and had created a hole, perhaps 10-15 centimeters deep. The back yard was full of stones and almost impossible to dig in! Frustrated, the little boy understood that his idea wouldn’t be realized.
So how is this applicable on a software project? Well, I have seen it happen, over and over again. Someone comes up with an idea, and then lots of planning takes place. Nice gantt charts, a huge requirements specification and a fine and sturdy architecture (on paper). After a while there is a team of people who are surprised that reality deviates from the plan (no, not the other way around).
What I want you to take away from this story is, please, don’t make all the plans up front. See if the idea (vision) will fly by doing a prototype, or a spike, or a proof-of-concept, or a sprint. Then evaluate the result and make a new plan. Making all the plans up front is just a big waste. You need to iterate the planning as well.
Oh, I almost forgot! The little boy grew up and became a professor at the Royal Institute of Technology in Stockholm. I guess he learned from his mistake. Why don’t we?