Explanations
Agility and Bureaucracy
Listening, testing, coding and refactoring. That’s all there is to software. Anyone who says different is selling something. – Kent Beck, Extreme Programming Explained, 1st Ed., 2000
Listening as if crossing thin ice, testing as a boat on dark water, adapting as a stranger to a far shore, simplifying as a melting snowflake … – Lao Tzu, 3,000 years earlier.
XP Explained was the first book on Agile software development. Three years before publication, Beck shared drafts of it on the world’s first Wiki, which his long time engineering partner Ward Cunningham built around a hive of veteran developers cataloguing design patterns in the 1990s.
The design patterns in Beck’s book attacked a form of bureaucracy called “Waterfall”. Every aspect of Waterfall development was planned, budgeted, diagrammed and controlled by hierarchies of committees, who had to sign off before its developers could write a single line of code. Testing and debugging happened afterwards as if the developers were trying to pass a school exam.
The result was invariably late, low-quality, unfit for purpose, and inflexible in the face of change. Which meant programmers in back rooms were asked to quietly bang out ad hoc hot-fixes. Blaming chaos on these “cowboys” justified Waterfall just as the failures of Waterfall necessitated the cowboys. Technical debt in the form of duplication, ambiguity and and inconsistency in the codebase grew until either the business failed or a new project kicked off to replace the old codebase with a new one generated exactly the same way.
Beck’s genius turned the Waterfall game upside down. Instead of tests last, they came first - not a document to check but code that ran red or green. Instead of a phase up front, design became a discipline of merciless simplification, continuously paying down technical debt before it could compound interest. And that simplification work - called refactoring - was only possible because of automated tests up front. Instead of sitting in committees, business worked continuously face to face with programmers in self-organizing teams and …
And that’s all dust now. No biological teams develop software now. The programmers have gone the way of blacksmiths, and biological business people are swiftly following them. I don’t come to praise Agile but to bury it - a modern business with biological employees is horseshoes on a Tesla.
While replacing salaried people with robotic ones cuts the bottom line, it doesn’t grow the top one. To open market bottlenecks, a business must learn better and faster than its competition. So Agile development is dead, but agile organization remains critical. Every participant in the business, biological or software, must share their learning in decisions that embrace change. Or the business will lose to others that do.
Bureaucracies learn slower than agile organizations even if their participants are learning faster. If modern organizations can’t afford biological bottlenecks, they can’t afford bureaucratic ones either. So then … what makes an organization agile?