Modern Agile is Stupid: on why all great ideas are killed by simple-minded idiots, why Jira kills software, and how to be a good manager
Press enter or click to view image in full size
An idea in your mind is š»š¼š ššµš² šš®šŗš² ššµš¶š»š“ as the words you use to convey it.
Similarly, a process your software development team follows is š»š¼š ššµš² šš®šŗš² ššµš¶š»š“ as the document outlining it.
Language is low resolution, and by definition it will leave out a lot of the nuance and details.
Written-down processes are like the string that keeps a kite from flying off and crashing. They give the team some basic parameters to play within. Theyāre like a rulebook to a sport.
But the execution of the actual process is the kite itself, flying, adjusting to the wind, moving omnidirectionally.
Many managers and āAgile practitionersā cannot tell the difference between the two.
They spend their day writing docs and adding processes like ticket templates, planning pokers, definitions of done, etc.
Whatās worse, they actually think these things help.
Such people are one of the biggest wastes of air and space in software development teams. They are actively harmful to your teamās output.
Why Managing by Jira is a Terrible Idea
When I say āmanaging by Jiraā I mean the phenomenon whereby some managers want to add more and more pieces of templatized processes. They want to add lengthy issue templates, blockers so you canāt merge code that isnāt linked to an issue, worthless rituals like planning poker, etc. This is often referred to as āmeta work.ā Excessive meta-work is terrible for three main reasons:
- The sheer waste of time it is. In any given year, a teamās total working hours are finite. Out of 2000-2500 hours an engineer might put in on a given year, if you make them spend an hour more than absolutely necessary on meta-work youāre a bad manager. Youāre actively divesting their time away from feature and operational work that is beneficial to customers, and investing it into bullshit. The amount of time thatās necessary to be spent on meta work, even in a BigTechCo like AWS, is somewhere in the vicinity of 10% (around 1% in a startup with a team of 2ā3). If you make your team spend 30% of their time on meta work youāre holding the gross productive output back by at least 20% (in reality much more, as we shall see).
- It creates a self-perpetuating vicious cycle of bureaucracy. An environment that places undue emphasis on meta-work invites a particular type of employee: the sandbagger. These individuals excel at creating the appearance of productivity through meticulous documentation and process adherence, while their actual contribution to the product is minimal. In Jira, their work may appear impressive, but a glance at their Git commits tells a different story. This discrepancy is particularly problematic in large tech companies, where there are ample opportunities for paper-pushing. These sandbaggers not only fail to contribute meaningfully to the product but also set a dangerous precedent that values form over function. Then they get promoted and as they do, will typically worsen the situation with more meta-work. After all, they were rewarded for it. Note that not all sandbaggers are actually sandbagging in a sense of putting in low amounts of effort. Some of them work hard. Itās just that theyāre sandbagging the stuff that actually matters, the productive work that benefits customers.
- It kills actual productivity. Perhaps most importantly, meta-work interrupts the flow state that engineers need to produce their best work. Iāve lost track of the number of times when Iāve taken immediate action and fixed significant issues in a shorter amount of time than what it would have taken me to fill out the ticket template to the standards of some of the most Jira-worshipping managers out there. The death of inspiration and flow happens in teams where your calendar is filled with useless rituals like planning poker, multi-hour sprint planning, velocity analyses, or where you have to do things like over-segmentation of tasks into sub-daily lengths and story pointing.
Some Meta-Work is Necessary
Iāve been name-calling Jira a lot, hopefully itās obvious I donāt mean Jira specifically but any task management software (Asana, Clickup, or if you also work in Amazon our beloved āSimple Issue Managerā and its younger sibling Taskei).
I also want to be clear that there is nothing wrong with the most basic scrum/Agile processes per se (the āadvancedā ones like burndown charts are all bullshit). There are common needs that arise in software delivery, and scrum rituals offer some tools to address them:
- The need for communication and avoiding duplicate work. Scrum standups are a fine mechanism to address this.
- The need to learn from mistakes. Retrospectives are a fine mechanism to facilitate this.
- The need to work on the highest impact tasks at hand. Breaking work into sprints and re-evaluating every 2 weeks can facilitate this as well.
What I am saying is that just because you meet every two weeks and have a āretroā that doesnāt actually mean youāre learning from your mistakes. It is possible ā indeed likely ā to have retros with no true self reflection.
Whether you use the tools in scrum or not, solving those problems of communication, learning from mistakes, and prioritizing is is the difference between teams that move erratically like flies and teams that fly towards objectives like a peregrine falcon attacking its prey. Moving fast in no particular direction is actually worse than moving slow due to wasting time on Jira. Erratic movement tends to create much more cruft and tech debt.
Being a peregrine falcon is obviously better, and it requires some meta-work.
I want to also be very clear that I am not hating on checklists or step-by-step processes in a generic sense. It is a well-known fact that preoperative checklists and pre-flight checklists have a tremendous positive effect in avoiding accidents. I myself have written dozens if not hundreds of runbooks, step by step processes, and checklists for specific tasks in my career. Boiling down atomic processes to known checklists (or better yet, automating them) is usually good. The damage is in thinking that the entire product delivery process can be boiled down to a checklist.
Some āActual Workā Looks like āMeta-Workā
I also wanna point out that some of your work output is actually best placed in Jira (or in my case and other Amazonians, Taskei).
Just 2 days ago I worked on an issue. The ticket was automatically cut because of a latency alarm ā our serviceās latency in a particular AWS region was higher than expected. This was a second occurrence of this ticket so I looked at the work that two previous on-call operators had done. They done log diving and ascertained the following:
- Identified the top calling customer (about 5000 queries per second into our system, mostly sustained during business hours)
- Identified a different customer that seemed to have some kind of syncing workflow triggering every 3 hours, where they would hit us at 10,000 queries per second for a few minutes and then send zero calls until the next workflow
- Chased down a couple of leads that didnāt pan out.
They posted screenshots and log outputs of all these things into the ticket. This is not meta work. It is real work.
From there I went on to investigate our I/O latencies with that customerās call path and saw that most of their latency was coming from a thing that should have been cached. So then I went on to investigate caching metrics for that customer, saw that our cache was not working as well as it should, and immediately introduced a small TTL increase to the cache.
My teammates saved me re-doing multiple hours of work by putting the work into the ticket. But of every entry that went into that ticket, 0% of it was meta work. 100% of it was real work.
So please understand, interpreting what im saying as a call to ban Jira or something like that would be utterly stupid. Google docs or quip are much worse places for this type of work.
Why Idiots Think This Way (Prescriptions)
Business methodologies, business frameworks, and other forms of watered down step-by-step guides are catnip for idiots. Itās simple: weak minds crave simple solutions. They want a paint-by-numbers approach to success, and Agile promises just that.
These halfwits see a world of complexity and instead of rising to the challenge, they retreat into a comfort zone of checklists and buzzwords. Agile, with its neat little ceremonies and easy-to-digest principles, offers them a security blanket. Itās the corporate equivalent of thinking a green smoothie will solve all your health problems.
The truth is, software development ā hell, any complex endeavor ā doesnāt work that way. Itās messy, itās unpredictable, and it requires actual thinking. But thatās too much for these simpletons. Theyād rather play scrum master and feel important moving sticky notes around a board.
Itās the same mentality that has CEOs swearing by their morning ice baths or meditation routines. As if freezing your ass off at 5 AM is what separates you from Jeff Bezos. Itās magical thinking for adults who should know better.
Real success in software development comes from deep understanding, creative problem-solving, and the ability to adapt to changing circumstances. It comes from experience, intuition, and sometimes, just rolling up your sleeves and grinding it out.
But thatās HARD. Itās difficult to resist the siren song of Agile authors promising you better results without you having to stay technically sharp.
Jira as the Maker of Terrible Managers
Probably the worst kind of manager is the toxic asshole manager, who chooses fear over charisma, threats over understanding, appeals to authority over data, yelling over persuasion, self over team, etc.
Another terrible kind of manager is the micromanaging manager, and thereās many other ways in which managers can be bad. But those other ways donāt concern us today, as the topic of this article is meta work.
Past a certain size, a team cannot operate well without a good manager. But managers obsessed with meta-work are, at their very best, like this guy:
The reason why these managers want to much to go into Jira is so they can have a sense that they understand wtf is going on with their team. This is usually because of laziness, incompetence (lack of technical ability), or both.
As a result, their concept of management is to encourage the team to adhere to these processes. These terrible managers obsessed with meta-work stay on the surface of things. An example:
In AWS our CI/CD system has a feature where it shows a little box at the top right with a warning if they notice youāve taken too many manual actions. CI/CD should be fully automatic. If youāre having to retry integration tests, or having to override deployment failures in order to promote code with broken tests to production, or take any manual actions of the sort, that can be a sign of a team thatās in terrible operational health.
A bad manager will see this metric and bring it up in standup in a manner like this one:
Team, I noticed our pipeline is giving us a warning for too many manual interventions over the last 30 days. Letās make sure that weāre not manually intervening the pipeline unless absolutely necessary.
This is the corporate equivalent of a shitpost. Itās the kid above pretending heās actually helping the train start and stop. Itās a complete waste of air.
A good manager, upon seeing the warning on the pipeline tool, would actually go into the log of manual actions and look over the specific manual interventions that were taken (blocking pipelines to run load tests is a very, very different thing than promoting code that has broken tests). Then they might talk to some of the people who took manual actions in order to to better understand the situation. Then they would make a decision as to whether the ātoo many manual interventionsā metric represents an actual problem or not. If it does pose a problem, theyād ask one of the senior engineers how to solve it and roughly how long it would take. Then they would prioritize solving the problem by deprioritizing something else.
How to be a Good Manager
And thatās the crux of the issue: a manager should be technically competent enough to comprehend the value of their teamās work by reviewing pull request descriptions, design docs, and engaging in meaningful discussions about the operation and architecture of the service. A manager should be technically competent enough to make decisions and go through investigations like the one I outlined above.
A manager doesnāt need to be able to write the code themselves. Itās typically better if they can, but this is way too rare and not terribly important ā Sorry Elon fans, heās wrong.
This hands-on approach is akin to a coach on the sidelines, observing and guiding their team in real-time. The coach doesnāt have to be able to rope 3-pointers himself. He doesnāt have to be able to dunk or cross over 22-year-olds. But he needs to understand the game.
Imagine a coach who never attends games and instead āmanagesā by looking at a spreadsheet of player statistics twice a week. When he talks to a player, all he can say is ākeep it upā or āyour ppg is down, you need to score more.ā Such an approach would be universally recognized as ineffective in sports, and yet itās sold as a panacea of software engineering productivity in the world of Agile. Itās snake oil. Itās garbage.
Conclusion
Letās refer back to the original agile manifesto:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
This is very clearly an anti-prescription stance. And itās a good stance.
Itās a sad reality of life that small minds will always try to find a paint by numbers approach to achieving difficult things. You just have to make sure you go places where the density of these people is very low, and leave their teams if you find yourself in that unlucky situation.