Agile Is a Tainted Term(pcloadletter.dev) |
Agile Is a Tainted Term(pcloadletter.dev) |
At the same time, I have now done software engineering for over a decade, in many roles and teams, and I have never seen Agile or Scrum to lead to the development of a good piece of software. I guess we were using it wrong.
Their manager got an “agile PM” forced on them and it broke.
The problem is charlatans, dictators and career ticket shufflers that deliver little to no ROI and generally abject chaos.
The only time I've ever seen this not happen was when we had a 55 year old delivery manager who viewed his job as facilitating team meetings in a way that meant everyone got the chance to speak and that consensus formed. Didn't try to dictate process or anything, just made sure everyone got heard and that decisions got made. He was patient enough to wait and not force the issues, too.
I still don't understand the role of PMs when there are engineering managers, product owners and self-organizing teams involved.
If it’s not described, and only works via the “minds of a few engineers”, you get amateur treehouse-quality engineering like the 737 MAX.
I guess chance can make it work well like that “once” sporadically, but when you need to touch that code again to maintain it, we go back to the amateur treehouse.
Then the CTO left, and was never replaced, then the layoffs came and a competent PM was replaced with a junior. Entire design department replaced with a single junior as well. Engineering gutted. Ok, lay-offs happen but at least I still have a job.
Then came “we’re waterfall now”. You know what didn’t come with it? Actual planning, documentation or specs or anything typical of “waterfall”. Estimates are now guessed before anything is defined and turned into commitments. You know what we still had? “Daily stand ups”, “backlog grooming”, two week “sprints”, and no retrospectives. No opportunity or agency to try to make things better - just endlessly stuck in my own personal hell.
Now we have projects that are supposed to take 2 months now taking 6. We have last minute spec changes that require massive rewrites because UAT isn’t done until the end of the entire project. “PM is slow to write out requirements” so we’re basically expected to just guess what they are based on very small selection of unfinished design flows.
And of course, executive wonders “why does engineering take so long to deliver”.
I started calling this “scrumerfall” or even ”fragile”. It’s basically the worst of both with none of the positives.
I don’t know what point I’m actually trying to make…just get like ranting and this seemed like a good time lol
What I've seen the most is people putting up straw men in place of Agile, and proceed to attack the strawman in spite of being repeatedly pointed out they are pummelling a straw man.
Scrum fixed that by being as bad as it was precisely defined.
I can get what the originators of agile were getting at but they explained themselves super badly.
I think a lot of ppl forget that.
Just the typical "No True Scotsman" fallacy [1], happens all the time when there is no good defense of the position.
Sometimes the fakes simply do outnumber the real ones.
The Agile industrial complex can't really sell a message to their customers (i.e. managers) that the development teams should have the power and run themselves how they feel fit. This message amounts to "if this works, we can fire the managers". Not a popular message for managers.
So, instead of building on an agile foundation, companies just add some story points and funny sounding meetings on top of the old structure and nothing really changes. It is Agile cosplay.
A manager can start work on this kind of culture shift without even saying the word "agile". They need to give their teams more trust and room to govern themselves. i.e. managers need to get out of the way. When a team is open to the idea of Agile or scrum, then the manager could ask the team if they would like training or coaching. But the ground has to be made fertile first.
OKRs (Objectives and Key Results) have replaced KPIs (Key Performance Indicators) due to some kind of contrived negative connotation that became associated with KPIs over time
But they're the exact same thing.
Something else will replace OKR in a few years so that management can sound as if they're more in tune with the sensitivities of their employees and, yes, OKRs were a bit on the nose, so luckily we've got FCKs now, they're modern and progressive, like us!
How many FCKs do you give?
That can be fixed by defining something new, more precisely.
Asking software engineers to name things? Now you have two problems.
This has nothing in common with the values of the Agile Manifesto. In fact it's more like the opposite of them.
* I hate Jira. Jira is not the cause of the problem. People's desire for a tool like that is cause of Jira. Kill Jira, and it would soon be replaced with something much the same.
By which I mean the project planning committee has created a multi-hundred page document with precise BPM-style workflow charts (based on Jira, obviously), and non-technical managers have started being sent on multi-day training courses to learn how to follow them.
It’s going to be a shitshow!
A Waterfall of effluent, spilling from the end of the process pipe, branded "Agile!" (TM, sponsored by Atlassian).
What are you moving from ?
“We have don’t have assigned desks”.
Agile is Dead https://www.youtube.com/watch?v=a-BOSpxYJ9M
To oversimplify it, he says "agile" has become a noun when it was always meant to be an adjective. In other words, if you are "doing" agile, you aren't really being agile.
Irrespective of the chosen approach, it’s crucial to systematically elicit requirements, document specifications, and rigorously verify and validate everything. Implementation should ideally be supported by thorough unit tests, and, most importantly, all artifacts must be traceable across different abstraction layers and to the required level of detail.
I just don’t use the word Agile. Too many people like it for the wrong reasons, or hate it for the wrong reasons. Everyone has a different understanding of it. It’s just not useful.
If I say “let’s use Agile” it’s just going to lead to arguments and misunderstandings.
Id always rather be more specific about which Agile idea I think will be useful. E.g. “let’s build a prototype before we waste time planning too much detail” or “lets get something built and released so we can learn more about what our customers want” etc.
If this is happening here, this is a good example, as the front page of the Agile manifesto is laconically short, 10 lines of text ( https://agilemanifesto.org/ )
And includes the repeated formulation "x over y" - NB this is not "x, instead of y", not "x, not y" And then clarifies with "That is, while there is value in the items on the right, we value the items on the left more."
If people can read an absolute from that, then they can read it anywhere.
In my defense, I forgot about the fine print on the agile manifesto website.
Leaving aside the "agile is a philosophy, not a methodology" argument, there are well-defined agile methodologies other than Scrum. I've worked at a couple Kanban shops and, while our dev processes were far from perfect, most of the things people routinely hate about "agile" just didn't come up at all because they're actually Scrum features.
If the thing you don't like involves the words "sprint" or "standup," you are complaining about Scrum, not agile.
They keep saying that waterfall just doesn't work, yet almost all commercially successful (and unsuccessful) software is produced that way, whether they claim to use Agile or not. Would it be better if they used "real Agile"? Of course! But you only ever have to be just good enough.
- tell the client to get their shit together
- fire the client
- walk away
More or less same mistake as (unfortunately) conflating "I don't like X" with "I dislike X", which also falls into into the black-and-white tendency you mentioned.
At the same time, unnamed things exist in a state where you can't even think about them without thinking about what it really is. You don't have a word for it, so you have to use the description.
And that makes it easier to change too, if it doesn't work or when circumstances change.
One of the nice things about scrum is that it has an official source who defines it and you can look at it to see what it is and what it is not intended to be.
The retrospective is where you can tweak the process, but you can honestly change things anywhere. Bad managers will resist change at any cost and will use Scrum as an excuse to resisting change, but that's true for any methodology.
The problem is it doesn't work when there's micromanagement, it doesn't work when there are waterfall-ish parts (eg: PMs not splitting tickets, QAs hogging releases). Scrum also doesn't work when the development team isn't empowered, or has no domain experts. But most methodologies also don't.
The most absurd thing of it all is that even in-house development organizations behave the exact same way, despite having the exact opposite incentives.
You will still get cold emails and LinkedIn messages from these people but you don't have to respond
(I refuse to utter the above phrase without accompanying it with tjis: "not everything that counts can be counted")
And of course that is where the cost savings are usually made because it is seen as a null function in some businesses. It creates waste and reduces delivery and ROI. Those are all symptoms of other problems in the business but that's how it is generally perceived. And sometimes clients are happy to receive muck if it's cheap.
But that's also how we get planes that crash and Microsoft firing their entire QA and delivering shit for the last half a decade.
And that in turn is because management and project management culture is data driven by people who have no idea what the fuck they are doing whatsoever.
[edit] Too many of these people want tomatos, so they plant a tomato, when really they want seasonal tomatos, and need to consider a farm, and take into account growth cycles. The term I like is "sustainable development."
2) Look at the current state.
3) Decide what the product needs from you.
4) Do that.
5) Use git.
Steps 2 and 3 may involve communication. Step 5 is tracking changes. Have a PM that tracks main things people are working on and estimated dates (not dictated dates).
This is how my current job works and we are unbelievably productive.
And IMO it also implies things like CI/CD.
A process is a hardcoded way of do thing, which is deficient because it cannot react to an ever-changing world
A better way to handle things is by defining "what" should be done, not "how" it should be done
Everything you do -up to and including taking a leak- is a sort of process. Perhaps you don't think that particular example should be a corporate process, but that's not my problem :-P .
You can compose processes to get things done.
Processes can be made mutable or flexible by eg. incorporating decisions or iteration. Especially iterated processes can be very powerful (you can get a lot done with them).
Thinking of things in terms of processes instead of in terms of component steps each time frees your mind to worry about other stuff.
Compare it with dividing a program into functions. Once you've wrapped a task in a function, you can then design using the function, rather than worry about how to write the code from scratch each time. Same with process thinking: you don't have to get bogged down in particulars all the time.
That said, maybe you're thinking of the "Befehlstaktik" vs "Auftragstaktik" [1] approach to doing things. In which case we're arguing definitions instead (which can be easily resolved).
You can use SCRUM/Kanban/SaFE/LeSS, hybrid or other Agile methodology, or no process at all, but it will not help when people are not trained to be proper part of the process.
For example, a PM may replace SCRUM meeting with a status meeting, because it makes his job easier, while PM or other M should not attend a SCRUM meeting at all, unless called in by engineers. The proper moment for interaction between PM and engineer are beginning/end of a ticket, sprint review, and sprint planning.
But bad on agile for letting charlatans co-opt the term.
The Agile Manifesto was just a bunch of people who were already doing XP, Scrum or some other lightweight process getting together and writing down the similarities between what they were doing. It's a blanket term invented to describe a variety of different processes, not an actual process.
[1] https://en.wikipedia.org/wiki/Kent_Beck
Just as product requirements can change, so can the way we work. Just like there is not one singular product that solves everybody’s needs, there isn’t necessarily one process that does that either.
I kid, but I think the early proponents of Scrum and similar were trying to achieve a loose framework to do exactly what you’re talking about. The modern incarnations of these can be horrific, but the original intent was always to empower teams to make their own process. Ahh well.
Like so many good ideas (democracy, constitutions), you only really know how well they function once people are actively trying to subvert them. Scrum et.al. have failed in the face of corporatocracy. I honestly don’t know if decentralised structures (i.e. teams empowered to run themselves), can ever survive in large corporates. Which is a pity. Cities grow, but companies die. You have to jump off the dying colossus to find the new company that hasn’t yet succumbed.
You need to communicate with stakeholders then, to change requirements, explain mistakes, set new goals, and reprioritize tasks. Agile (SCRUM/Kanban/etc.) are designed with frequently changing requirements in mind. In SCRUM, this is done at sprint review/sprint planning stage. In Kanban, it's continuous process.
As mentioned by user "phkahler":
> 1) Come to work.
> 2) Look at the current state.
> 3) Decide what the product needs from you.
> 4) Do that.
> 5) Use git.
> Steps 2 and 3 may involve communication. Step 5 is tracking changes. Have a PM that tracks main things people are working on and estimated dates (not dictated dates).
> This is how my current job works and we are unbelievably productive.
[edit]
I like the book "phoenix project," and I think they wrote "Team Topologies" which I am curious to read.
[edit]
In general, psychological safety was the number one factor for productive teams, according to a massive google study. From this viewpoint, it's easy to see why there are so few productive teams, as there is little to no safety for most people. Remember though, "There are no silver bullets."
[Edit]
The goal should be continuous delivery imo.
I do not think that we're going to find a single precisely-defined process that will work well for everyone.
The strength of the OG Agile thinking was the iterative, "inspect and adapt", "shorten the feedback cycle" thinking. Which is somewhat in opposition to your desire for a precisely defined process. The Agile manifesto specifically stated that "process" was one of the "items on the right" that had less value.
So what you propose is not a fix to it, it is a different mindset. It is process-first. And because it is a more rigid and inflexible, it is less suitable to the business of software.
I think we just need some criteria which can provide clear answers to whether you're doing agile or bullshitting around or doing cargo cult agile. The manifesto/principles aren't that but they should have been. Instead they were some sort of vague inspiring motivational bullshit. "Build projects around motivated individuals!". Yeah, ok whatever. No mention of the word iterate though.
My proposal isn't a different mindset. I actually think I have the same one as you because when I think "agile" my interpretation centers more around short feedback cycles and iterative development. I use those words. People who have done it use those words. The manifesto doesn't. The CEOs who want to bring in "agile consultants" while still keeping quarterly milestone planning sure don't. They think it's a kind of software they install in their devs are are generally oblivious to the idea that it means they have to change too. The fact that they do needs to be brought into sharp focus. The fact that the consultants who promise them waterfall in agile clothing are bullshitting needs to be brought into sharp focus.
My proposal is to codify more precisely the things which make "agile" "agile" so that it becomes at the very least harder if not impossible to bullshit about it. I'm not suggesting making it less flexible. I'm suggesting we describe what it is in a way that we can categorically rule out what it isn't.
And then give it a different name, to avoid all the baggage from the old one. Some name I can point to and say "we need to be doing that" which rules out at least 95% of the bullshit artists.
It turns out that iteration (and recursion) are pretty mind blowing concepts to have to explain to people. Like for instance just explaining why is it important to iterate faster?
I've gotten lucky explaining it once or twice, [1][2]; but mostly I think it needs to be something someone experiences somehow. Either by programming or engineering or some other way.
[1] Some engineers understand what a control loop is, and you can explain why iterating (faster) actually leads to better precision than trying to measure things precisely in one go inside the loop. ( https://en.wikipedia.org/wiki/Closed-loop_controller )
[2] You might be lucky to find a manager who really understands PDCA or OODA. https://en.wikipedia.org/wiki/PDCA , https://en.wikipedia.org/wiki/OODA_loop . Unfortunately these are also somewhat prone to cargo-culting. On the "upside", OODA cargo-culting may be subject to natural selection.
I find it perfectly precise in what it tells you what you need to optimize for. It just doesn't tell you how because it couldn't possibly know. But finding out is hard work.
What the fraudsters are telling you is that you don't need to do any of the things in the manifesto because they know everything already. A general lack of industriousness on the part of software companies is really what makes not just Agile, but the consulting space in general, ripe for fraud.
https://agilemanifesto.org/ does this look like a clear and precise proscription for a good way to engineer software? Or does it look more like a bunch of "inspiring quotes" from a discount southern baptist church website from the 1990s?
I learned this the hard way when I was younger when I tried to write some tests for some bugs and my boss told me that we needed to deal with it with meetings instead. People over process he said. I actually couldn't argue with that.
I think the only problem is that the authors took for granted that everyone understands that it takes an actual empirical process and not just a bunch of magic incantations to do that, like the enterprise world seems to think.
Alternately, a different thing the customer might want is to Solve Their Problem; which is a fundamentally different thing, and requires a fundamentally different process.
The Agile manifesto doesn't say anything about the former because it would defeat its own purpose.
The team is self-organizing but person X is the decision maker in the process.
There is an engineering manager, but they will get overruled by person X more often than not.
The framework is simple, but person X will add new rules.
Agile/Scrum says people must understand the domain, but person X is the only one talking to stakeholders since engineers are "not people persons".
I don’t think that’s why they exist, but I do think the structure is not robust to a large number of dysfunctions. This one included.
There are lots of consequences of doing "agile" properly that go way above the programmers' heads. That includes clients being able to specify requirements and price but not both at the same time.
I've worked on tons of teams where it was dictated from up on high that we should do agile and also do waterfall planning (always called something else). Agile consultants often have a tendency to accommodate this contradiction because up on high controls the purse strings and they need to eat.
The danger is that over time the things they do to eat become their identity and the genuine people get washed out of the industry.
We do need a sensemaking framework and a term which can be used to rule this type of thing out.
Agreed, your "once or twice" is once or twice more often than my success rate at that. You're better off finding an employer who already gets it, and hoping that they don't forget.
What's "by the book" agile? Scrum? The things in the manifesto? Something that some rando Scrummaster said?
And who is micromanaging? Both the Agile Manifesto and Scrum are about "self-organizing" teams. If someone is micromanaging, how is that self-organizing?
> What's "by the book" agile? Scrum? The things in the manifesto?
Definitely scrum.
> And who is micromanaging? Both the Agile Manifesto and Scrum are about "self-organizing" teams. If someone is micromanaging, how is that self-organizing?
Every single detail and aspect of your work is determined by someone or something else. You have zero individual autonomy, zero individual responsibility. And zero option to do something good or bad. "Self-organizing" just means that scrum master or coach or whoever is creating set of rules that dictate pretty much every aspect of work.
Yeah, it is not one person telling you how to do things. It is that every aspect of work is decided by someone else or some committee. When you have one person telling you how to do things you at least can adjust to them and negotiate some space with them.
See, this is already not "by the book" Scrum.
The team decides those things in a retrospective, and as long as they are releasing in a reasonable timely manner, it's alright.
If someone is being unreasonable and putting their foot down too much, then it's a management issue that doesn't have anything to do with Scrum. Either the person is a dictator, or they don't have authority and there's no management to put an end to it.
Scrum also doesn't work when the team is burning in a building on fire, but we don't blame Scrum for that.
I'm all for shitting on it, but those problems have been happening in companies for millenia. Scrum won't fix them, you gotta fix each separate problem by itself.
Part of the reason I think we need this is to be able to categorically rule "agility" given the constraints a team is under. We need a framework that can say with crystal clarity that if you force waterfall planning on a team, they won't be agile no matter how good their coach is.
This needs to be a simple yes/no framework - something that could easily be answered with a questionnaire with objective answers to questions that can't be bullshitted. "Does your company do X, Y and Z?" "Ok, you've rejected agility".
This could include things like "will you rule out measuring productivity?" (Y/N) or "will you expect detailed plans from your team on the features they plan to build with milestones?" (Y/N). "Will the team have unfiltered access to the customer?" (Y/N). These questions need to be the awkward kinds of questions that managers who want waterfall in agile's clothing will have to answer wrongly.
>I think the only problem is that the authors took for granted that everyone understands that it takes an actual empirical process
The authors never even mentioned the word empirical. When I said that the vagueness of the agile principles let people project their own desires onto what "agile" is, this is exactly the kind of thing I meant.
I think empiricism is quite possibly something that ought to be included in an "agile v2.0" though. For me agility does mean doing a series of small experiments on lots of different things and keeping/expanding on the things which work and dropping the things which don't. However, that's something I picked up by myself. The principles didn't teach me to do that.
Copying the external trappings (Towers, runways, procedures.) , not the underlying goals or process (shipping cargo across the pacific).
I only do a small number of projects myself, but my understanding is that in a lot of places, people might follow "the agile process", rather than that they are aiming at actual Capital-A-Agility (where any and all process is merely a means to that end, and is rapidly tuned and adjusted as required) .
It lacked any of the specifics that typify cargo cults. It was the exact opposite of cargo cult - an actual understanding without any specific required rituals.