In a lot of large software projects there are some very critical requirements that require very critical choices be made early. For example, when building large web-application that has to sustain millions of requests per minute, a choice of the database, database schema and scalability options can play a critical role, yet it might be impossible to decide upfront which option suits your needs better. Typical agile-style decision would be to run a couple of architecture spikes to stress-test the potential solutions. Unfortunately sometimes such trials can take as much time as a half of the whole project.
A little unexpected way of solving this challenge would be to delay the decision as long as possible. The later you make a decision, the more information you have, the more time you can spend or research and eventually you can make a more educated choice. In some cases it is even reasonable to simultaneously develop several solutions in order to make sure that at least one succeeds.
A Toyota Prius Case
One time when Toyota was starting the development of the first mass-sold hybrid car in the world – Toyota Prius, they had three engine options: one not so good option, that could be developed on time for sure, one ok option, that was somewhat more complex to develop and one potentially brilliant option, that could be developed on time only if everything went well.
Toyota engineers decided to simultaneously develop all three options. Even if the best option wasn’t ready, they still would have the acceptable option on time. I don’t know which of the three options eventually went into sales, but many have heard an unbelievable success of the Prius hybrid car. Three engine development teams took a lot of money, but missing a market window would cost a fortune more.
Your experience
Have you ever tried simultaneous multiple options development? Did the invested efforts pay off?
I’ve heard this Toyota story from Mary Poppendieck on XP2006
Comments
Post new comment