Kirk Rader  1.0-SNAPSHOT
Software Development Life-Cycle

How to create, operate and maintain complex software systems.

Overview

"Agile" vs. "waterfall" is a false dichotomy promulgated by consultants in the business of selling "agile by the pound".

Ignore SAFe and its ilk, here is how long-lived, complex software systems are created, operated and maintained by enterprise-sized organizations at a scale beyond that which can be accomplished by a single scrum team working toward a simple GUI-centric MVP:

Use automation to the greatest degree practical at every step, including but not limited to:

  • Requirements / user story / issue management and tracking tools
  • API code generation, documentation extraction and discovery frameworks
  • MVC and similar runtime frameworks
  • Automated test frameworks and code quality checks
  • CI build services
  • Deployment scripting tools
  • Container orchestration platforms
  • Monitoring and reporting frameworks

This is "Agile?"

Agility, ca. 2001:

...we have come to value:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Manifesto for Agile Software Development

The trouble, of course, is in a naive, if not outright self-serving interpretation of the Manifesto. For example, almost no-one pays attention to the final "That is..."" clause!

Let's Get Real

Agility, ca. 2017:

We value:

  • Individuals and interactions over processes and tools
  • Collaboration between individuals across multiple teams, mediated and facilitated by processes and tools
  • Working software over comprehensive documentation
  • Usable, maintainable, verifiably working software
  • Customer collaboration over contract negotiation
  • Clearly defined roles and responsibilities that promote efficiency, reduce duplication of effort
  • Responding to change over following a plan
  • Calm and responsible change management

"Working" software that no-one knows how to use or maintain has no value, and that requires up-front analysis and design, copious documentation of API's and similar dependencies, properly documented, preferably automated test cases and reports, detailed user guides and release notes etc.

Summary

Quality products are created by skilled artisans working collaboratively, consciously, methodically and proactively – not reactively to constant changes of priorities and goals or chaotically changing dependencies.