To be Agile, you need a Platform
You can’t dance the tango in interstellar space
I’ve blogged often about problems with the ‘Agile’ approach to implementing software and systems. (If you’d like to read about my beef with Agile, there’s some links at the end.) This doesn’t mean that I see no value at all in agility as an objective, or with the tools and techniques of Agile Methodologies.
On the contrary, I’m sure that The Agile Manifesto was one of the best things that ever happened to the software industry. Without Agile’s demand for quick delivery of working software, we might never have adopted CI/CD, DevOps, Cloud-native and serverless technologies, and many other accelerants. Along with Agile came some of the most invaluable tools for developing quality software at pace: TDD; BDD; pair programming; peer review; et cetera; et cetera.
It’s just that I’m equally sure that agility is an incomplete and misleading paradigm for designing and implementing products and services. Agility can be a virtue — but not an absolute virtue. Too agile is at least as bad as too unagile or too ‘waterfall’.
Part of the problem with Agile, is that it obfuscates the inevitable fact that we need an un-agile, fixed platform in order to be agile at all — and the depth of platform rises in proportion with the degree of agility.
The MVA/TVP approach, which I advocate, presumes that some agility (quick iterations, the ability to swap requirements at any stage, and so on) is always desirable. Where MVA/TVP differs from Agile is in admitting that the more agile you want to be, the more stable a Platform you need — the harder the surface, the higher your ball will bounce.
Like much computer-y jargon, ‘Agile’ and ‘Platform’ are used in ways that have little to do with the original meanings of ‘agile’ and ‘platform’. Even so, putting both metaphors together can help make their inter-dependence vivid.
- You can’t dance the tango in Outer Space
- You’ll need an immovable fulcrum to pivot your world
It kind of amazes me that software engineers can be so abstracted from the physical origins of their terminology, to seriously talk about being ‘totally agile’: agile in a vacuum! Yes, I know we’re not ‘real’ engineers, but we are the type who should have paid a little attention in basic science class.
Every action, every change of direction, is made by pushing against something else. Archimedes knew this and Newton’s first and third laws simply back him up. Agile means nothing without support from Platform Engineering.
Links to some of my articles about Agile:
- Agile means Inefficient (literally, obviously)
- Agile isn’t what it claims to be
- The ‘Agile fails 268% more’ hype is actually very plausible
- Some suggestions to revise ‘Agile’ to make it more fit for modern software engineering practice