I recently penned a post titled “Stop Hiding Behind Complexity and Start Delivering Continuously,” and I want to expand on that idea here. The crux of my argument is straightforward: if anyone in your organisation claims that your software is too big or too complex for continuous delivery, they are either lying, being lazy, or simply don’t know how to make it happen. More often than not, it’s the latter, they just don’t understand how to transition from their outdated, cumbersome systems to a more agile, continuous delivery model.
The Path to Continuous Delivery
Let’s be clear: achieving continuous delivery is not an insurmountable challenge. It requires a genuine organisational commitment to improving both the quality of the product and the speed at which features are delivered. This isn’t about throwing more people at the problem; it’s about getting your product into shape.
- Assess Your Product: If your software resembles a lumbering, 500-pound gorilla, it’s time to rethink your approach. A bloated product cannot adapt quickly to new demands.
- Commit to Change: Just as you would if you were trying to get fit, you need to commit to changing your software’s architecture and processes. This means investing time and effort into making your product leaner and more responsive.
Drawing Parallels with Personal Fitness
Consider your own health. If you aspire to achieve a physique like Hugh Jackman in Wolverine, you wouldn’t expect to get there without significant lifestyle changes. You’d need to:
- Revamp Your Diet: Eating healthier is crucial.
- Exercise Regularly: A consistent workout routine is essential.
- Adjust Your Habits: You might need to change your daily schedule to accommodate your new lifestyle.
The same principles apply to your software. If you want it to be agile and capable of rapid feature delivery, you must put in the work to ensure it reaches that state.
The Challenge of Legacy Systems
I often see organisations, particularly in industries like aviation, struggle with legacy systems. These systems are like old mainframes that have been patched over the years but never truly updated. For instance, I’ve heard stories about American Airlines having to pull retired engineers out of retirement homes to fix their outdated systems. This is a clear sign of a knowledge gap and a lack of organisational will to modernise.
- Recognise the Risks: When systems are neglected, they become ticking time bombs. The recent outages at major airlines highlight this risk. They often stem from a failure to maintain and upgrade core systems, leading to catastrophic failures when external issues arise.
- Invest in Resilience: To avoid these pitfalls, organisations must invest in robust application lifecycle management. This means not just building a system and walking away but continuously improving and maintaining it.
The Importance of Continuous Improvement
The reality is that software development is an ongoing process. Just as maintaining fitness is easier than achieving it, keeping your software in good shape is less challenging than getting it there in the first place. However, it still requires consistent effort and investment.
- Learn from Others: Take a page from the Windows team’s playbook. They transformed their delivery process from a six-year cycle to continuous delivery by addressing long-standing issues in their codebase. This required a commitment to change and a willingness to tackle the technical debt that had accumulated over decades.
The Call to Action
So, what’s the takeaway? No matter how complex your systems may seem, you can move towards continuous delivery. It’s not just an engineering problem; it’s a cultural one.
- Foster Organisational Will: Leaders must recognise the value of investing in their systems. This means allocating resources, time, effort, and money, to fix existing problems and prevent future ones.
- Don’t Ignore the Signals: If you notice signs of trouble, such as frequent outages or slow delivery times, take them seriously. These are indicators that something needs to change.
In conclusion, the complexity of your software should not be an excuse for stagnation. With the right mindset and commitment, you can overcome these challenges and achieve a state of continuous delivery. Don’t hide behind complexity, embrace the work required to simplify and improve your systems. The rewards will be well worth the effort.