Planet Agile
Because methodologists need an “enemy” to make their pet process look good, Agilistas use Traditional methods as their whipping boy. In this post, I’m gonna turn the tables by arguing as a Traditionalista (yet again) and using the exalted Agile methodology as my whipping boy. First, let’s start with two legends:
Requirements And User Stories
As you can see, the Agile legend is much simpler than the Traditional legend. On planet Agile, there aren’t any formal requirements artifacts that specify system capabilities, application functions, subsystems, inter-subsystem interfaces/interactions, components, or inter-component interfaces/interactions. There are only lightweight, independent, orthogonal, bite-sized “user stories“. Conformant Agile citizens either pooh-pooh away any inter-feature couplings or they simply ignore them, assuming they will resolve themselves during construction via the magical process of “emergence“.
Infrastructure Code And Feature Code
Unlike in the traditional world, in the Agile world there is no distinction between application-specific Infrastructure Code and Feature Code. Hell, it’s all feature code on planet Agile. Infrastructure Code is assumed as a given. However, since developers (and not external product users) write and use infrastructure code, utilizing “User Stories” to specify infrastructure code doesn’t cut it. Perhaps the Agilencia should rethink how they recommend capturing requirements and define two types of “stories“: “End User Stories” and “Infrastructure User Stories“.
Non-Existent Design
Regarding the process of “Design“, on planet Agile, thanks to TDD, the code is the design and the design is the code. There is no need to conceptually partition the code (which is THE one and only important artifact on planet Agile) beforehand into easily digestible, visually inspect-able, critique-able, levels of abstraction. To do so would be to steal precious coding time and introduce “waste” into the process. With the exception of the short, bookend events in a sprint (the planning & review/retrospective events), all non-coding activities are “valueless” in the mind of citizen Agile.
No Front End
When asked about “What happens before sprint 0?”, one agile expert told me on Twitter that “agile only covers software development activities“.
As the process timeline template below shows, there is no Sprint -1, otherwise known as “the Front End phase“, on planet Agile. Since the Agile leadership doesn’t recognize infrastructure code, or the separation of design from code, and no feature code is produced during its execution, there is no need for any investment in any Front End work. But hey, as you can plainly see, deliveries start popping out of an Agile process way before a Traditional process. In the specific example below, the nimble Agile team has popped out 4 deliveries of working software before the sluggish Traditional team has even hatched its first iteration. It’s just like planet Agile’s supreme leader asserts in his latest book – a 4X productivity improvement (twice the work in half the time).
Process Scalability
The flexible, dare I say “agile“, aspect of the Traditional development template is that it scales down. If the software system to be developed is small enough, or it’s an existing system that simply needs new features added to it, the “Front End” phase can indeed be entirely skipped. If so, then voila, the traditional development template reduces to a parallel series of incremental, evolutionary, sprints – just like the planet Agile template – except for the fact that infrastructure code development and integration testing are shown as first class citizens in the Traditional template.
On the other hand, the planet Agile template does not scale up. Since there is no such concept as a “Front End” phase on planet Agile, as a bona fide Agilista, you wouldn’t dare to plan and execute that phase even if you intuited that it would reduce long term development and maintenance costs for: you, your current and future fellow developers, and your company. To hell with the future. Damn it, your place on planet Agile is to get working software out the door as soon as possible. To do otherwise would be to put a target on your back and invite the wrath of the planet Agile politburo.
The Big Distortion
When comparing Agile with Traditional methods, the leadership on planet Agile always simplifies and distorts the Traditional development process. It is presented as a rigid, inflexible monster to be slain:
In the mind of citizen Agile, simply mentioning the word “Traditional” conjures up scary images of Niagara Falls, endless BRUF (Big Requirements Up Front), BDUF (Big Design Up Front), Big Bang Integration (BBI), and late, or non-existent, deliveries of working software. Of course, as the citizenry on planet Agile (and planet Traditional) knows, many Traditional endeavors have indeed resulted in failed outcomes. But for an Agile citizen to acknowledge Agile failures, let alone attribute some of those failures to the lack of performing any Front End due diligence, is to violate the Agile constitution and again place herself under the watchful eye of the Agile certification bureaucracy.
The Most Important Question
You may be wondering, since I’ve taken on the role of an unapologetic Traditionalista in this post, if I am an “Agile-hater” intent on eradicating planet Agile from the universe. No, I’m not. I try my best to not be an Absolutist about anything. Both planet Agile and planet Traditional deserve their places in the universe.
Perhaps the first, and most important, question to ask on each new software development endeavor is: “Do we need any Front End work, and if so, how much do we need?”
Strip The Stewards
To absolutely no one’s surprise, the “takers” on Wall St. seem to be at it again. It’s funny how capitalism abhors “takers“, yet the biggest schleppers of your money dwell at the celebrated heart of unbridled capitalism – Wall St.
Capitalism is the worst “ism”, except for all the other “isms” – Unknown?
While government gets reviled for catering to average Joe Schmoe welfare “takers“, the hulking buttheads on Wall St. not only get off with a token monetary fine and a promise to “behave honorably” in the future, they get to set their own definition of “honorably“. As long as they’re too big to fail or jail, these psycho banks and the “innocents” who run them will continue to do as they please, knowing full well that small potatoes “takers” like you and me will bail them out when their wreckless, self-serving behavior triggers the next global crisis.
In “Prosecutors Suspect Repeat Offenses on Wall Street”, the NY Times states:
Just two years after avoiding prosecution for a variety of crimes, some of the world’s biggest banks are suspected of having broken their promises to behave. Typically, when banks have repeatedly run afoul of the law, they have returned to business as usual with little or no additional penalty — a stark contrast to how prosecutors mete out justice for the average criminal.
So, now that prosecutors are hot on the tail of some repeat big bank offenders, what do you suppose will happen to the guilty? The same old, same old:
Even now that prosecutors are examining repeat offenses on Wall Street, they are likely to seek punishments more symbolic than sweeping. Top executives are not expected to land in prison, nor are any problem banks in jeopardy of shutting down.
I think that the only way to medicate the psycho-orgs in our midst is to hit their stewards, the real people hiding behind the abstract corpo Hannibal Lectors among us, where it hurts – right in the pocketbook. Make it unambiguously transparent that the top tier(s) of executive management will be stripped of all their personal wealth if the narcissist monsters they run are found guilty of wiping out the IRA’s of thousands of the little people.
We don’t even have to jail them or demand their resignations. Simply treat them as big time drug dealers by confiscating all their property and making them start over again at step one. No more unconditional yearly bonuses and “but, I didn’t know” defense strategies. Put some teeth into “the buck stops here” and force them to, as Nassim Taleb suggests, place some “skin in the game“.
As the figure below illustrates, a “strip the stewards” punishment policy may not inhibit future normal-to-criminal behavior transitions after a reset to normal behavior, but it has a better chance of doing so than the current slap-on-the-wrist policy. What do you think can work?
Ill Served
You’ve been ill served by the software industry for 40 years – not purposely, but inextricably. We want to restore the partnership. – Ken Schwaber
2000 Lines A Day
I was at a meeting once where a peer boasted: “It’s hard to schedule and convene code reviews when you’re writing 2000 lines of code a day“. Before I could open my big fat mouth, a fellow colleague beat me to the punch: “Maybe you shouldn’t be writing 2000 lines of code per day“.
Unless they run a pure software company (e.g. Google, Microsoft, Facebook), executive management is most likely a fan of cranking out more and more lines of code per day. Because of this, and the fact that cranking out more lines of code than the next guy gives them a warm and fuzzy feeling, I suspect that many developers have a similar mindset as my boastful peer.
Unsurprisingly, the results of cranking out as much code per day as one can, can yield legacy code before it actually becomes legacy code:
- Huge classes and multi-page member functions with deeply nested “if” constructs inter-twined within multiple “for” loops.
- A seemingly random mix of public and private member objects.
- No comments.
- Inconsistent member and function naming.
- No unit tests.
- Loads of hard-coded magic numbers and strings.
- Tens of import statements.
Both I and you know this because because we’ve had to dive into freshly created cesspools with those “qualities” to add new functionality – even though “the code is only a tool” that isn’t a formal deliverable. In fact, we’ve most likely created some pre-legacy, legacy code cesspools ourselves.
How To Run A Company With (Almost) No Rules
- Set your own salary
- Vote your leaders in/out
- Come and go when you please
- Take vacation whenever you want
- If you finish your work by Wednesday, go to the beach and come back on Monday
- If you have to give back, you’ve taken too much
- Ask “why” three times and then stop
- Design for wisdom
A brilliant and emotionally moving talk from my favorite CEO of all time, Mr. Ricardo Semler.
Please, please, watch it. I guarantee that some, if not all, parts of the talk will fill your heart with joy! Well, maybe it will. If you’re an average, run-of-the-mill, anointed, business leader, it will either piss you off or strike fear into your bones.
If you want some more seminal Semler to whet your appetite, check out these two MIT-sponsored videos:
Make no mistake about it, Mr. Semler’s radical ideas are not a mess of pie-in-the-sky, Utopian psychobabblings. They’re the real deal, and they’ve been in play… in the real world… for over 20+ years at Semco.
The RGR Prayer
I recently watched an agile training video in which the sage on the stage made the audience repeat after him three times, the RGR prayer: “red, green, refactor“.
As I watched, I wondered how many of the repeaters were thinking “uh, this may be bullshit” while they uttered those three golden words from the sacred book of agile. It reminded me of those religious ceremonies my parents forced me to attend where the impeccably dressed, pew-dwelling flock, mindlessly stood up and parroted whatever the high priest dictated to them.
Let’s digress, but please bear with me for a moment and we’ll meet up with the RGR prayer again in short order.
I know it’s not much to go by, but assume that you’re given the following task:
“Given this input, design and build a box that produces this output.”
Rising to the challenge, you concoct the following three design candidates upfront (OMG!) so you can trade them off against each other.
Which design candidate is “better“? The monolith (A), the multi-element network structure (B), or the two element pipeline (B)?
As always, it “depends“. If the functionality required to transform “this input” into “that output” is tiny (e.g. a trivial “Hello World” program) then the monolith is “best” in terms of understandability and latency (time delay from input to output). If the required functionality is large and non-linearly complex, then the multi-component network design is most likely the “best“. Somewhere in between lies the two element pipeline as the “best” design.
Hard core agilista consultants like our RGR priest and those dead set against the “smell” of any formal upfront requirements analysis or design activities would always argue: “all that time you spent upfront drawing pretty pictures and concocting design candidates was wasted labor. If you simply used that precious time to apply the RGR prayer through TDD (Test Driven Development), the best design, which you can’t ever know a-priori, would have emerged – IT ALWAYS DOES.”
See, I followed through on my commitment to weave our way back to the RGR prayer.
Where Specialists, Dependencies, And Handoffs Are Required
Take a minute to look around yourself and imagine how many interdependent chains of specialists and handoffs were required to produce the materials that make your life quite a bit more comfortable than our cave dwelling ancestors.
Total self sufficiency is a great concept, but if you had to do all the work to produce all of the things you take for granted, you wouldn’t be able to. You simply wouldn’t have enough time.
In software development, above a certain (unknown) level of complexity and size, specialists, dependencies, and handoffs are required to have any chance of getting the work done and the product integrated. Cross-functional teams, where every single person on the team knows how to design and code every functional area of a product, is an unrealistic pipe dream for anything but trivial products.
Obsoleted By Modernity
While sifting through my desk at work, I stumbled upon a gadget that triggered some fond memories:
Do you know what it is? It’s a Royal Mark page embosser; a meaty and well built device that I used for many years until the onslaught of modernity made it obsolete.
Before the advent of e-books and safaribooksonline.com, I used to buy lots of “real” technical books. I would stamp them with my trusty Royal Mark embosser and stick them in my bookcase as soon as they arrived. But alas, since I don’t buy many dead-tree books anymore, I haven’t used my lovely Royal Marker in decades.
What gadgets or tools did you use heavily in the past, but have been obsoleted by newer technology? If you’re young enough, probably none; but eventually you will.




















