Scrum's Built-In 'Get Out of Jail Free Card' Against Criticism
mdalmijn.com
mdalmijn.com
Most of us work on huge codebases with tons of baggage and hundreds or thousands of engineer-years invested into it.
Implementing a feature into such codebase requires a combination of architecting, reading the code and experimenting - making the change is usually easy compared to that.
Scrum has no proper way of handling these activities.
- Figuring out how to do the feature is usually part of the 'planning' and 'grooming' activities which are 'invisible work' with timeboxed team meeting slots allocated to it, even though a well-thought out implementation can save tons of time
- Just plunging in and doing it means that a large uncertainty exists as to how much effort said feature wil take. This can either lead to time overruns or padded estimates (or both)
Scrum just doesnt' offer anything valuable imo. Its just feelgood management consulting ceremonies devs would rather do without. And I haven't even touched on the tyrannical micromanagement dark patterns it enables.
I think there is a bias for many developers to feel like they are not doing anything unless their actively producing/editing code.
Once I realized that I could just state in a standup that I was 'investigating' and 'researching' the best approach to XYZ then I felt a lot less resistance to the process.
Day 1 through N: "I'm investigating X"
Day N+1: "I checked in X and am now investigating Y"
Days 1-N: Investigating. N+1: "I've made a WIP PR, who's free to look at it with me?". N+2 would often be "we've merged" but it could go differently.
The whole process made a lot of sense to me. I like Scrum.
Even during the implementation phase you might hit an unexpected issue that will need to be investigated and researched.
If you're trying to fix a bug then investigation and research may be the bulk of your time.
The point is that tasks/tickets/stories and what you're spending your time on don't have to be only about typing code and it's perfectly normal to report as such.
Regarding estimates, the issue in the real world is that estimates on incomplete data very often end up as commitments when told to project management. This is quite orthogonal with Scrum and is part and parcel of working on any project.
Having a well defined amount of time for a research task makes sense, the business decides how much they want to spend.
I'm against estimating every task, but I definitely provide a ballpark idea when a project will be delivered. Keeping a research task in check is important for myself too, otherwise I can go on for weeks.
Not much room for compromise (from the story, at least) in either case.
Those time-boxed meetings aren't where you come up with the well-thought out implementation plan. They're where the work is prioritized, the well-thought out implementation plan is communicated with the team, and the work size is estimated.
> Just plunging in and doing it means that a large uncertainty exists as to how much effort said feature wil take. This can either lead to time overruns or padded estimates (or both)
At the start of a project where you're going something different from what you have done before (and with software, if you're not doing something different... why aren't you just using the software you've already written to do the job? ;-), and needs/circumstances change faster than you can complete projects anyway, so unless you can predict those changes (in which case, you have the wrong job ;-), even if the task was without any novelty, there is intrinsically a lot of uncertainty.
Recognizing that the uncertainty is intrinsic, the agile approach to manage it is to break down the work into lots of smaller chunks with well defined checkpoints. This allows for many opportunities for course corrections in response to changing needs/circumstances and/or learnings about the size of the work. It's basically just a standard pid controller dealing with a noisy system.
You're right though: another approach is to spend a great deal more time up front making a detailed estimate of the work... although that doesn't control for uncertainty about changing needs/circumstances, which will often change during the time you make your detailed estimate. ;-) There's also the matter then of estimating how much time it will take to estimate the work... since until that part is complete you would have increasing uncertainty. Now you can estimate how much effort the estimate will take to complete. That's a smaller task that will take less time to complete, so there's less uncertainty about changing needs/circumstances while you're coming up with an estimate of effort for the estimate. Also, if you estimate how much effort it will take for you to estimate the effort to make the estimate. Once you observe how far off the mark you are estimating how much effort it will take for you to estimate the effort to make the estimate, you'll have more information to calibrate your estimates with, so you can use that to have a more accurate estimate of the effort to make the estimate...
Yup, it kind of ends up as the same thing.
That's not true.
A high-level user story will indeed require investigation, architecting, perhaps experimentation. So create tasks for each step and add them to the backlog!
The 'planning' part in Scrum is mostly planning the sprint, i.e. what the team is going to work on during the next incremental period based on the tasks in the backlog. This is very different from thinking about how designing a feature, which is an activity that should be treated as a task.
Working in short "sprints" also helps in the investigation and architecting phases, because the format is aimed at forcing small, incremental progress when a potential common pitfall of investigation and architecting is spending a lot of time dreaming up something and writing extensive documentation, which will end up being useless or performing poorly in the real world [1]. But you can use "sprints" along perhaps modeling tools to split this into shorter architecting-experimentation-refining cyles.
Again, the common issue here is the superficial, literal reading of Scrum without thinking of the deeper point, which is what matters.
[1] Remember the Agile Manifesto's point about "working software over comprehensive documentation" because of that.
1. To force a check in so that everyone keeps the manager up to date. This is annoying for people who already do that as a matter of course, but not everyone is that disciplined.
2. To demonstrate velocity to the higher ups. We can't get away from the fact that upper management needs reassurance that we're not just fucking around. With these bullshit numbers we can make them feel better, and that's just all around a good thing that helps preserve harmony.
The moment you try to explain scrum as an efficiency tool, you're on shaky ground. It's a tool to counterbalance human nature.
More specifically, it's a tool for pacing and measuring pace.
Like cattle, you kinda go faster when you prod them with sticks.
I disagree; there's nothing saying the manager has to be there. In a properly run team/project with good ticket discipline, managers should get their status updates from the ticketing system.
Standups, applied properly, are an infra-team communication tool. They're a formal structure to encourage communications, and raise issues early. They're not a replacement for the informal comms that all good teams do, just a check.
Similarly, velocity should only be used by the team - your sprint commit is the output, and the expectation you set for outside stakeholders, and velocity is a tool to help you get better at that expectation setting.
At the end of the day, you take some kind of procedure, modify it to your company's culture, and try to make it work. There's no silver bullet, or even a bronze bullet.
* The sector of the business I'm in is 90% about integration with third-party services. How many sprints does it take to walk through their certification process? Depends how many cycles the third-party wants, how fast they respond, etc. So we end up checking in tasks representing "2 weeks of work" that really mean nothing so the points can be made up.
* The long-established policy (pre-scrum) involves several phases (development, another developer reviews, QA, final review by project manager). Any one can be a bottleneck. So if Frank in QA has enough points for his sprint, Dev Steve probably can't take on any more tasks even if he has capacity.
* This also works on a time scale; you're often going to end up with "last Thursday of the sprint, there's nothing left in the queue, and we have to twiddle our thumbs or possibly start some experimenting on next sprint's work" -- it's hardly a smooth process of "just keep pulling tasks".
* The primary outcome of all the meetings is that they complain "we're delivering 80% of our estimate one sprint, and 115% the next sprint, how can we be more predictable?"
Bearing in mind the number of points have nothing to do with actual achievements and business value; a huge spec uplift on the #1 partner can end up as fewer points than just endless weeks of dragon-chasing for a partner that will never deliver a dime of revenue.
I don't think this is true, given the "Get out of jail" arguments he is attacking. A proper tool used in its intended way for its intended purpose is intrinsically useful. You can say the same about any tool: If you use a hammer to cut a cake, the resulting mess is your fault. A broken hammer is not an error with hammer as a concept. If you successfully hammer in a nail, the hammer played a crucial part in the success. I can't think of an instance where failure would be the hammer's fault.
If you think the hammer is to blame for not being suited to cut cakes, well, that changes things.
Am I missing something?
(I am only talking about the quoted truism. I am not qualified to talk about scrum.)
How can we be sure that Scrum isn't yet another tool by a foreign adversary to sabotage Western companies?
The biggest tool of scrum is having cycles, and then reflecting on the cycle in order to move it in the right direction, but most of the time there are still quarterly planning and bad adherence to the sprint planning (bringing in new work in the middle etc), which defeat the purpose of scrum to begin with. Additionally, scrum should be owned by the contributing team and that almost never happens, as it is controlled top-down by managers and leadership.
It invented a bureaucratic way to cargo cult them though.
This was completely the fault of scrum for being highly proscriptive about the process. It's like teaching somebody to program with rote learning or something. It just fundamentally doesn't work because the core of the process requires human ingenuity, creativity and freedom to work and by having a rote process those things are inhibited.
Also, what is so bad about quarterly planning? Not everything ships immediately - this shows a very strong web app bias.
Quarterly planning sets quarter level expectations but each cycle is meant to set bi-monthly expectations for the purpose of changing directions if needed. They are at odds with each other, if you do sprints properly, quarterly planning will almost always change, and if you try to adhere to the quarter estimates then sprints are not needed other than to micromanage that quarterly commitment.
That it's also the most difficult or commonly ignored part of Scrum might also be relevant.
I've been around the tech industry long enough to see companies dogmatically pursuing certain ideas only to switch to the opposite ideas later... And, at all times, everyone is 100% sure that this way is the only way it should be done. Nobody ever gets any credit for saying "Hang on, maybe we should find a middle ground."
The root problem is that most humans are a mix of crazy and stupid. We go from one crazy extreme to the opposite crazy extreme.
Though two wrongs don't make a right, two rights can sometimes make a wrong when combined.
> Sprints seem to put people on the wrong foot as if we should rush to complete everything in the Sprint...
This is arguing about semantics. If you don't like the term, use another one or explain it better to your team. The important thing is to understand the point, which is to have short development cycles with working software at the end.
In context, the term "sprint" does not refer to any sense of rushing but rather of uninterrupted focus. Of course you plan and reflect before and after, but once you've started you go the distance (which is short!) until the end.
> Lots of talk about how to do better Scrum, while Scrum should be in the background.
That's not inherent to Scrum. On the other hand, continuous improvements have to require an amount of discussion on what works and what doesn't in order to adapt and improve. You need to find the right balance.
> The Sprint Review is mainly misunderstood, as the label is confusingly similar to Sprint Retrospective, and people mistakenly believe it's a Sprint Demo...
This is again arguing semantics and also saying that the team does not understand what they are doing. Hardly a problem that can be attributed to Scrum.
> The Product Owner rarely owns anything and mostly accepts requests from the Product Manager or other stakeholders.
Perhaps the product manager is the right person to fill the role of "Product Owner", then? The role does not have to be a dedicated person...
I don't want to give the impression that Scrum has a "get out of jail free card" here. Most criticisms of Scrum are very superficial and do not actually criticise the essence of Scrum so of course the response is indeed often simply that "you're doing it wrong"...
Scrum is not a panacea, on the other hand one should always try to understand the essence of any framework, the point, instead of being hung up on details and semantics. A good starting point is to read the Agile Manifesto and to think about the point.
How is this better than just grabbing a photo of an actual get out of jail free-card from somewhere?
https://commons.wikimedia.org/wiki/File:Get_Out_of_Jail_Free...
(CC-BY)
4. You didn’t scrum hard enough!
More meetings! More discussions about god knows what, more retros that achieve nothing. More meta-discussion around process while less work than ever gets done!
In practice management doesn't give a iota about what Scrum says their role is and everything becomes discussions about what Scrum does or doesn't say.
All that said, Scrum also completely ignores design work.
- PO suddenly wants to do something yesterday - they just give their task top priority so you're forced to do it
- PO want the button to have that exact shade of teal - they won't accept the story until it looks exactly like what they wanted
- You want to clean up the messy code you're touching - just make a story for it and watch the PO rank it to the bottom (essentially meaning it'll never get fixed) - since it has no 'business value'
This leads to demoralized devs working on crap codebases they're not allowed to fix.
That's fine. It's their role to prioritise features. BUT within the framework this should apply to the planning for the next sprint as the point is not to interrupt the current sprint unless there is an overwhelming reason.
> PO want the button to have that exact shade of teal - they won't accept the story until it looks exactly like what they wanted
Nothing wrong with that. It comes down to explicit and clear feature specification.
> You want to clean up the messy code you're touching - just make a story for it and watch the PO rank it to the bottom (essentially meaning it'll never get fixed) - since it has no 'business value'
This situation applies whatever the framework you're using. You need to sell what you want to do by explaining the value, or you do it step by step under the radar. There should also be someone with clear authority over the codebase who can make these decisions and sell them/negotiate with project management. Again this is not Scrum, but software development in general...
The first line states: Individuals and interactions over processes and tools
But whenever scrum is involved, process is given priority.
Anyway, design your process for your needs.
i.e. Having parents is generally better than having none.
X can be useful for one person in one situation and not useful in another, neither of which shows that it's intrinsically useful or intrinsically flawed. It just depends. Our holy wars to prove the might of our favorite tools and techniques are never going to give any universal truths.
(Except that Vim is better than Emacs.)
The question should be "Is there, for every situation, something clearly better than Scrum?".
That could be SAFe, or DAD, or 37 signals’ Shape Up.
“Scrum doesn’t work” is like saying Systemd doesn’t work. Obviously it works in some contexts. Obviously it has weaknesses. But in comparison to what?
Unrelated to the shortcomings we found that Scrumm with the timeboxing concept did not work for infrastructure teams. You cannot just time box most Infrastructure task and just ship whatever you have when you exceeded your initially planned timeframe.
We came up with Kanban as a way to document progress. The swimming lanes together with a limit on things that can be simultaneously in flight served to mirror reality as an operational team much better than pure Scrum.
On the other hand, if you have a team who is going to be working on more "at the time" needs, Kanban lets the disruption get absorbed in real time while the team gets to focus on the WIP pipe. I've seen it used most successfully in teams that have smaller, more isolated tasks to deliver that are able to be isolated to the scope of the team. Intra-team coordination with Kanban is more difficult than scrum (but doable) as long as the working model is understood on all sides.
My preference is to operate more in a Kanban model but when working with other groups who operate with scrum you need to tweak things to integrate.
It also isn't a system that, once picked, you're stuck with. I had a team who did scrum for a few weeks, twice a year during organizational planning so we are kept in rhythm with the rest of the company. Once we had a good enough idea in how we were going to move forward, we switched to kanban to manage our work until the next Co. planning cycle.
There's no true Scotsman when it comes to planning and agile and you'll never find a definitive correct answer that can be broadly adopted. Being open to change to make it work with your org and the people you work with is going to get you closer than blindly following any strict dogma.
// ramble
It is, however, a somewhat useful tool for helping you get this running in the first place (especially in organizations where there is a lot of chaos to begin with, i.e., upper management regularly changing the product scope and release timeline based on the color of their coffees, etc.).
Scrum in practice is processes and tools over individuals and interactions.
> No Scrum Master/Agile Coach/Product Owner, etc. worth his/her salt will tell you to slavishly stick to every piece of Scrum as long as you get the basics (see the manifesto) right.
This is the no true Scotsman fallacy.
I'm actually not a huge fan of scrum and the mindless activism around it but it's probably not worse than most alternatives. Including the default herd of cats type situation that lots of people seem to default to, which is definitely not great. I default to vaguely Kanban; regardless of the process of others around me. When in a scrum environment, I just just make sure that my TODOs are aligned and prioritized correctly. When not, same.
My main criticism of scrum is that it leads to consensus based decision making where consensus drowns out expertise. If not managed properly, it promotes a culture of mediocrity. You get people in junior management roles (which is what the PO role typically is) overruling experts around them. Easy things become hard, and hard things become impossible. Sometimes you just need to let the experts to do their thing without micromanaging them.
Another problem is that it drives teams to iterate rather slowly (weeks); which creates issues if you want to be more agile and e.g. practice continuous deployment, which I would argue should be the default these days. This is something that can be managed by a good team but it needs active managing. I tend to completely decouple planning from releases. We release regularly and we only release good stuff. Anything not making the cut goes to the next release. This happens regardless of any sprint plannings and what not.
Yet another problem is that doing scrum in large organizations creates all sorts of process bottlenecks. Orchestrating large amounts of teams is a non trivial problem that scrum does not provide solutions for. Naive versions of this (synchronized sprints, scrum of scrums, etc.) naturally lead to waterfall style development cycles where nothing happens quickly anymore. This too can be managed but I've seen a few places where this became a ritualistic mess that involved lots of wasted time, people in pointless roles without having much impact, etc. You get teams working around each other, doing conflicting things, and worse.
I don't think Google, Meta, MS, Apple, or similarly large software development organizations talk a lot about their internal processes. But my impression is that they mostly don't seem to be doing scrum; or at least they don't talk a lot about doing that. Correct me if I'm wrong. The above might be why.
More to the point, you’re picking something more divisive than scrum and adding your thoughts about the divisive topic to add to a discussion about scrum, it doesn’t add to the conversation it just ratchets up the conflict. Take it to Facebook.
Sure, as good a definition already.
> managing people doesn’t really have anything to do with scum or politics
People, and particular the labor of people, is a resource! Managing it is inherently political.
If you're an experienced scrum practitioner and you don't have criticisms of scrum, that's unusual enough I find it hard to take you seriously. Like any tool, even if you love the tool, if you don't have any criticism of it, my first instinct is to think you haven't really used it that much.
The source of the "Get Out of Jail Free Card" is that there is no belief in a "one-size fits all" agile methodology. If you don't adapt ("continuously change") Scrum to fit your organization & team, it's very unlikely you'll succeed. Similarly, if you only adopt portions of the methodology without a lot of deliberation (and experimentation), it's very unlikely you'll succeed. Scrum (and one could say the same thing about any methodology) is a very delicate balance of tensions between various trade-offs. Organizational have their own unique tensions, and you have to adjust your methodology's trade-offs to fit your organization to establish that balance. It's even harder than it sounds, because organizations have such massive inertia. Changing organizational behaviours is difficult and slow. My observation has been that when you bring a new methodology (any methodology!) into an organization, you're typically going to find that at least initially, the methodology changes more than the organization. I usually find that for a large enough organization, barring some massive disruption to the organization (like mass layoffs or mass hiring), if they're really committed to making a change, a year into the adoption of a new methodology, more often than not, they're still in a "fake it 'til you make it" stage. People will be using the vocabulary/colloquialisms/etc. of the new methodology, but the actual execution will largely resemble the methodology, such as it was, prior to the introduction of the new one. That's actually what progress looks like! Slowly but surely, behaviours will start to change to more closely match the way people are talking/thinking about the new methodology, but it's going to be brutally slow. There's an old expression in the Scrum world, that if you manage to be successful without making any adaptations to Scrum, you almost certainly were successful before you adopted Scrum, and you would probably have been successful even if you had never adopted Scrum. Not that Scrum can't be helpful, but it's just so unlikely to arrive into your organization already fit for purpose. At that point, empirical analysis of the methodology is more an empirical analysis of the organization and/or the old methodology than the new methodology.
So yeah, when I read someone saying that Scrum has a 'Get Out of Jail Free Card', particularly if that seems based on their anecdotal experiences with it, rather than some kind of broad survey of outcomes, that seems more reflective of their context than of Scrum. My expectation is that their context is shaping how they perceive Scrum, or any new methodology. If "Methodology X" had been adopted instead, it's quite likely there'd have been a similar perception of "Methodology X" if it had been adopted instead.
Now, it's possible to read this and say I'm just reinforcing the article's notion that you can't evaluate methodologies. I'm not saying that. You can evaluate methodologies, but it's hard to construct a meaningful evaluation. You'd either need an insane amount of controls, or you'd need a broad enough sample set that organizational noise balances out enough that you can get a read on the signal. Most of us aren't in a position to do that. Even if we were to do this and we found a signal, there's enough variance from one context to another that any particular organization might observe wildly different outcomes.
tl;dr: While development methodologies can have impact, they are far from the most important driver of outcomes. So yeah, a good or bad outcome is far more likely to be driven by other factors. That you must control for other factors isn't a "get out of jail" free card. It's just scientific reality.