Skip to main content
Version: 2.0

Software Development

For two decades, I’ve watched software development methodologies come and go. Waterfall was the dominant approach when I began my career. Then Agile swept in, promising (and often delivering) speed and responsiveness. Today, many teams are hybridizing approaches, often leaning heavily into Agile frameworks like Scrum or Kanban. But something’s been nagging at me for years, and it's this: dismissing waterfall entirely is a mistake for technical leaders. In fact, with a few deliberate tweaks, it can be surprisingly effective, especially when leading teams building genuinely new things.

This isn't a contrarian take for the sake of it. It's born from observing that methodologies are tools, not religions. And the best leaders understand when to use each tool, adapting them to the specific context. This article isn't about advocating a return to rigid, Gantt-chart-driven project management. It’s about recognizing the inherent value of sequential, defined phases – particularly when dealing with the inherent unknowns of innovation.

Why This Works: Managing Uncertainty

The core challenge of building something truly new isn’t speed; it’s navigating uncertainty. Teams often struggle when requirements are vague, technologies are unproven, and the path forward is unclear. That’s where a carefully adapted waterfall approach can provide a surprising advantage. By investing upfront in understanding the problem and defining a foundational architecture, we create a stable base for subsequent development, minimizing costly rework later on. This isn’t about abandoning Agile principles; it’s about applying them within a more structured framework. Drew Procaccino et al (2002) demonstrated that early prediction of project success is possible, but critically dependent on a solid understanding of the problem space before writing code. Their research highlighted the importance of factors like clear communication, well-defined scope, and a robust architectural design.

The Challenges with Applying Agile to Truly Innovative Projects

Agile is fantastic for iterating on known problems with known solutions. It excels at incremental delivery and rapid feedback. But let's be honest – true innovation rarely fits that mold. As research suggests (Kaur & Sengupta, 2011), projects building genuinely new things lack a clear roadmap. They're characterized by exploration and discovery. Forcing this process into rigid sprints and user stories can feel… counterproductive.

I’ve seen teams spend more time pretending to know the requirements upfront to justify an Agile approach than they would have spent actually understanding the problem if they'd allowed for a more exploratory phase. They're forced to estimate effort for features that are essentially hypotheses. It’s like building a plane while flying it – possible, but incredibly inefficient and prone to costly rework.

Furthermore, focusing only on delivering working software can sometimes lead to technical debt accruing at an alarming rate. Without dedicated phases for design and architecture, you risk building a fragile system that's difficult to maintain and scale.

The Surprisingly Useful Core of Waterfall

Let’s break down the core principles of waterfall: requirements gathering, design, implementation, verification, maintenance. What’s inherently flawed about that sequence when building something genuinely new? Not much, if you approach it with the right mindset.

Here’s how I’ve found a tweaked waterfall approach to work in practice:

  1. Exploratory Requirements (1-2 Sprints): Forget “detailed specifications.” This phase is about learning. It's about conducting user research, prototyping, building proof-of-concepts, and identifying the fundamental technical challenges. The output isn’t a detailed spec; it's a high-level understanding of the problem domain and potential solutions.
  2. Architectural Design (2-4 Sprints): Now you define the system’s architecture. This isn't just about diagrams; it's about making critical technical decisions upfront – choosing the right technologies, defining the data model, and establishing the foundational principles of the system. This phase prevents costly rewrites down the line.
  3. Iterative Implementation & Verification: This is where you introduce Agile principles. Break the implementation down into smaller, manageable chunks. Focus on delivering working software incrementally, but within the framework established during the design phase.
  4. Continuous Refinement & Maintenance: As always, ongoing maintenance and refinement are crucial.

It's About the Right Tool for the Job

Agile is fantastic, but it’s not a silver bullet. As technical leaders, we need to be pragmatic. We need to understand the strengths and weaknesses of different methodologies and choose the right tool for the job.

When building genuinely new things – exploring uncharted territory – a tweaked waterfall approach can provide the stability and clarity needed to succeed. It’s about adapting the principles, not blindly following the process. We need to be proficient with methodologies, not worship them.

Ultimately, the best leaders don't worship methodologies; they master them. They understand that the goal isn't to adhere to a specific process; it's to deliver value to the customer. And sometimes, that requires a little bit of old-school thinking.

The next time you’re leading a project with significant unknowns, don’t dismiss waterfall out of hand. Consider how its principles can provide a stable foundation for innovation.