Creating a new software product typically feels very chaotic, from a management viewpoint. Teams are designing new solutions, working on the edge of innovation, testing new concepts and changing accordingly. Their world is full of uncertainty which makes work unpredictable and highly variable. Planning has always been a difficult exercise for these teams. The same is true for most software development projects.
Our natural reaction is to invest more in a solid preparation. Get the design right, after which we let a team of skilled professionals develop the system based on rock-solid specifications. Just like designing a car and then managing it’s mass production.
Many IT-professionals are still in denial, thinking they can design an entire new application without writing one single line of code. Reality has proven that the gap between a useful application and its initial design doesn’t shrink linearly when we invest more in the upfront study. Instead, it’s much more interesting to minimize the initial investment and use a feedback model that allows us to test ideas fast and regularly. This way, we can validate all the initial hypotheses and learn what really matters to their customers.
Neither is a new car designed on paper only. BMW has recently revealed their car design process. As shown in the video, they rely heavily on creating prototypes for testing ideas, many times in clay. From many different designs, in the end only one makes the final cut. It is a process of continuous learning, each step bringing them closer to the end product.
The same ideas can be applied to software development. Let’s take a limited amount of time to create a high level design of the new system, based on a vision. When this foundation is constructed, we will continuously test and learn by developing new pieces of the system. Learning leads to opportunities to correct our many assumptions. However, changing a system in development is hard, because many tasks are half-finished and every piece of code seems to be connected. That’s why your process and engineering practices need to be adjusted to cope with this.
What do you think of this comparison?
(image by chelmkamp)