In a recent post, we learned that software, in its nature, behaves more like a living thing and less like something we can build. It is, for instance, really hard – if not impossible – to nail down all the requirements of a software product up front.
Multiple reasons make it hard to come up with a final list of specifications for a software product.
One primary reason is that requirements change over time.
The key to dealing with these changing requirements is short development cycles. The success of our software project depends on it.
Let’s take the automotive industry, for instance, and let’s have a closer look at Volkswagen (VW) and Tesla and how they approach development cycles:
Today, established manufacturers like VW struggle to stay competitive. New Chinese companies sell cars with software features that make our new smartphone look stupid.
VW is about to close several manufacturing plants and lay off thousands of employees in Germany to avoid going bust.
For almost a whole century, they have been manufacturing cars with a very traditional, conservative approach borrowed from civil engineering:
The design team iterated on the previous design of a model in the definition phase and the concept phase. After that, the new model went into pre-development, series development, and the early stages of the production phase. Finally, the new model went into mass production.
This whole cycle takes about four years. That means the design of the new VW models released today was finalized over 3 years ago.
Unfortunately, VW did not anticipate that in 2024, the average Chinese car buyer (a massive market for VW) would expect a 20-inch screen, self-driving capabilities, and ChatGPT integration in their car.
Even if VW wanted to, they can’t just add these features to a car designed 3 years ago. VW urgently needs a new vehicle platform that can satisfy today’s expectations and is flexible enough to stay competitive long-term.
But instead of releasing new cars based on the new vehicle platform, VW just announced that their new platform had been delayed … until 2029!
The hardware is done, but the software, supposed to be finished by the end of 2024, will not be ready for another 5 years. That’s a very, very long time when it comes to software.
Meanwhile, Tesla drivers can be excited to receive new updates that significantly enhance their five-year-old car’s capabilities at least every month:
- Two months ago: We can now check the surroundings of our car through our smartphone.
- Last month: Our Tesla can now drive hands-free on city streets.
- This month: We can now join video calls in our car using Zoom.
- Next month: Our car can now drop us off at the hotel entrance and park itself.
Tesla’s success in terms of sales and growth demonstrates that it can compete with Chinese car manufacturers.
What do the engineers at Tesla do differently?
They create new software versions incrementally and release them every week.
Not all versions make it through the internal testing phase, of course, but every week, at least one version is deemed good enough to go out to a wider audience. Not every version comes with a killer feature, but every month or so, a feature is included that benefits the average Tesla owner.
Short development cycles are the key to dealing with changing requirements.
Developing our software product in small daily increments opens the opportunity to collect early and continuous feedback. Releasing a new software version at least once a week puts us in a position to adjust the product to changing requirements over time. This, in turn, significantly reduces the risk of the project being a failure and losing all our investment.
I am curious. Do you already have a software product in development? How often do your developers release new app versions? Send me a message and let me know.
See you around,
David