Sunday, July 14, 2019

Scrum is a Methodology, not a Buffet

Q. What’s something everybody does, but nobody does the same? A. Scrum!

In today's post we'll debate this question: Is it important to fully adopt Scrum as a software methodology, or is it sufficient to just use the parts that seem useful?


I’ve wanted to write something on this subject for years now, but I’ve hesitated given how explosively charged Internet debates on software methodologies can be. Let me state at the onset that I am neither a Scrum Worshipper nor a Scrum Hater: I wrote quality software before Agile existed and now I write quality software using Scrum. I value what we have gained with Agile methodologies, but I also bemoan what they've cost us.

ScrumBut: We Do Scrum, But Not All Of It

Without question, Agile Scrum has taken over as the software methodology of choice, just as Github has taken over as the software repository of choice. Scrum's pervasiveness ought to mean that when a developer who knows Scrum joins a software organization using Scrum they can hit the ground running. In my experience that's hardly ever true, and one of the common reasons is the lack of consistency in how teams apply Scrum.  

Over the last 12 years I've consulted with and worked with lots of teams that practice Agile Scrum. That includes 5 years as a national consulting practice manager, so I've had exposure to a great many customer projects beyond the ones I contribute to personally. When the customer controlled the process, the majority of those teams didn't really follow Scrum, they practiced ScrumBut: as in "We do Scrum, but not all of it." Do some online research and you'll find plenty of others reporting the same; ScrumBut is a well-recognized phenomenon.

Here are some of the things I’ve personally seen teams drop from their practice of “Scrum”:
  • We do Scrum, but we don’t do sprint reviews
  • We do Scrum, but we don’t do sprint planning meetings
  • We do Scrum, but we don’t do the daily stand-up meetings
  • We do Scrum, but we don’t have a product owner
  • We do Scrum, but we don’t have a scrum master
  • We do Scrum, but we don’t have a product backlog
  • We do Scrum, but the product owner assigns work to team members
Some of you reading this are Scrum champions who only work with teams that rigorously enforce Scrum and are shaking your heads. Perhaps it’s your job to see that Scrum is followed well. That’s great, but I assure you such teams are the minority. Understanding why and whether it's always a negative is important.

Why does ScrumBut happen? After all, Scrum is a lightweight methodology. It doesn’t ask much. It only has a few roles, artifacts, and ceremonies. I’ve identified four reasons:
  1. Human nature. If you’ve ever listened to a debate over a political issue or a point of religion, you’re well aware that even people who share common values can disagree endlessly on the finer points. Not everyone is going to weigh things the same way.
  2. Software is a vast realm. There are many kinds of software and many kinds of developer, with a wide range of skills, maturity, and experience. Developing a web site is way different from creating a video platform or working on an operating system. Expecting one methodology to work equally well across that spectrum is rather optimistic.
  3. Agile itself is partly to blame because its underlying message is often misinterpreted as “you don’t have to do everything”. It seems the effect of Agile trimming away practices deemed to be of secondary importance may have encouraged people to just keep doing away with things.
  4. Distrust. Older generations are more likely to place implicit trust in a system and give it a chance, but the younger generation is less persuaded.
Let's consider the case for doing full scrum (following the methodology) and the case for doing only some of it (buffet-style) with an honest attempt to be open-minded about the question. 

All or Nothing: The Case for Full Scrum

I'll fully admit my own inclination is to use full Scrum. The line of reasoning here is that Scrum is a methodology: that is, a system whose various elements are designed to support and complement each other. When you don't apply all of the parts, you're removing legs from the chair that holds you up. Dismantling parts of a system undermines the system. Will it still work? Maybe, but not as well as when it's complete.

Imagine you have a friend with an alcohol problem and you bring them to an AA meeting. Here’s what you would not hear: “We have a very successful 12-step program; which steps do you feel are right for you?” Of course that wouldn’t happen: the program is only effective if it’s taken as a whole, with all steps being done in the intended order. We recognize that it’s a system. There’s a second point to be made here: the person with the alcohol problem is not an expert on how to recover and is hardly in a position to design their own treatment. In the same way, a software methodology should be viewed as a system to be adhered to.

It needs to be acknowledged that even among those who do full scrum there are differences between how it is practiced. Some organizations overdo Scrum, becoming what is sometimes referred to as a Church of Agile. We should always keep in mind that the team does not serve the methodology: rather, the methodology serves the team. Like anything else popular in the computer world, Scrum is also subject to the hype cycle which accessorizes the methodology with inflated services, certifications, self-important titles, expensive software packages, condescending attitudes, and a sometimes crazy obsession with points and charts. In The State of Agile Software in 2018, Martin Fowler calls this the Agile Industrial Complex and calls for its dissolution. Full Scrum can be over the top if it is obsessed over and becomes the objective rather than the means.

If doing full Scrum is critical to project success, there ought to be some clear evidence that full Scrum tends to work and partial Scrum tends to fail. While I’ve encountered plenty of Scrum champions with that opinion based on their own experiences, I’ve yet to discover objective results that conclusively support this conviction. For all the personal examples you or I could cite, that’s not statistically meaningful. If I reflect on my own experiences, yes I’ve seen software projects fail where oftentimes a lack of discipline (including a poor understanding of Scrum) is an ingredient; on the other hand, I’ve seen projects succeed where ScrumBut was applied. 

Why Is It Useful? The Case for ScrumBut

Partial Scrum is far more common than Full Scrum by every measure I can make. I’ve noticed ScrumBut teams fall into two distinct categories: those who don’t know any better, and those who consciously choose partial Scrum. I’ll call them the Naive Scrumbutters and the Intentional Scrumbutters.

Naive Scrumbutters

The Naive Scrumbutters are those who don’t know any better. A great many teams and organizations will proudly tell you they are practicing Scrum, and in their minds they are. Sadly, they suffer from a superficial understanding of Scrum. We're holding a daily Scrum meeting, therefore we're doing Scrum

Scrum naivete is rampant. I’ve seen these kinds of activities go on regularly which indicate a poor command of Scrum principles:
  • Sprint planning is where the executive tells the team what they will work on that sprint
  • The sprint has started but the stories aren’t ready yet
  • The product owner decides in advance who will work on what
  • We have to get all of this work done this sprint because that’s the deadline
  • Software written this sprint isn’t tested until a later sprint 
  • We can’t wait for the end of sprint, we need to release software sooner
Naive ScrumBut occurs particularly often when a high-ranking person in the organization with a shallow knowledge of Scrum sets the ground rules; no one is willing to challenge them. It also results when roles are oversimplified or combined or omitted. Scrum works best when everyone involved understands how it is supposed to work, and much of its value is lost when the product owner or scrum master lack the understanding or willingness to perform their role properly.  

Naive Scrumbutters are the ones likely to have many project problems. They’ve removed too many of Scrum’s underpinnings, and they don’t even know it.

Intentional Scrumbutters

The other group, Intentional Scrumbutters, knows full well what Scrum entails, but have decided to leave out some of its precepts. This approach views Scrum more as a list of potentially useful practices rather than as a system whose parts reinforce each other. They treat Scrum like a buffet, taking only the items they like. Reasons given by organizations for skipping some elements of Scrum include the following:
  • Someone in control of the process thinks they know better.
    I’ve seen [what we do here] work time and time again. Trust me.
  • Someone in control of the process doesn’t see value in some of its elements.
    Our roadmap for the rest of the year is already defined. We don’t need a Product Owner.
  • Team members don’t see value in some of its elements.
    Why is a sprint review meeting useful? I don’t think it’s a good use of my time.
  • There are difficulties carrying out some of the elements.
    Everyone here has freedom of schedule, and some of the team live in other states or countries. There’s no way to realistically schedule a daily stand-up meeting.
  • Skepticism
    There’s no point in having a sprint retrospective, because nothing is ever going to change around here.
“Why is this useful?” is a question I am often asked by younger developers when I ask them to start doing Scrum ceremonies they are not used to—even about Sprint Planning and Sprint Review meetings. Well, that’s always a fair question to ask, but it reveals something about the person doing the asking; clearly they do not put trust in the system they’re being asked to follow. Perhaps they will after they’ve seen it work.

While many Intentional Scrumbutters are clearly making questionable decisions when they tinker with Scrum, it’s not always the case. I’ve seen Silicon Valley tech companies practice ScrumBut with spectacularly successful results, consistently producing quality software over and over. However, I believe these are the exceptions rather than the rule. These companies have very experienced engineering leadership and capable and committed developers across the board, and I suspect the omissions from Scrum are compensated for by other engineering practices. This article is worth a read: Why Scrumbut Shouldn't Be a Bad Word.

SlimScrum: An Alternative to ScrumBut

As we’ve seen, ScrumBut happens a lot. For a variety of reasons, some of them valid, organizations sometimes jettison elements of Scrum. This results in ScrumBut, which is dangerous because now the system is incomplete.

What can you do if you are part of such an organization and would like to practice full Scrum? Depending on your position and situation, you may or may not have the standing to make changes. If you can’t authorize outright changes, there is an alternative to ScrumBut which I call SlimScrum.

SlimScrum means you find a way to include all the roles, artifacts, and ceremonies of Scrum—but are willing to be flexible in how they are implemented. To my thinking, having all the elements of Scrum (even if reinterpreted somewhat) is far preferable to leaving some of them out altogether. Let's consider a few examples.

If it’s truly impractical to get everyone together for that short daily stand-up meeting, consider using Slack or an equivalent enterprise social network. In fact, I find it so useful for team members to list what they worked on yesterday / plan to work on today / blocks on Slack that I like to have it even when teams do have a daily stand-up meeting.

If long meeting times are given as a reason to not do full Scrum, consider how long sprint planning and sprint review meetings really need to be. Do you need a 4-hour sprint retrospective meeting if no one thinks anything needs to be discussed? I am not suggesting arbitrarily shortening these meetings, but I think there is room to adjust them based on how your team engages and whether anything useful is being accomplished.

Missing Scrum roles is perhaps the toughest omission to deal with. How do you make up for not having a product owner? If you’re unable to fix that problem in the organization but your immediate team is onboard with trying to solve it, have someone in sprint planning and sprint review meetings assume the role of product owner. Using a proxy can work if that person can reach out to stakeholders between meetings to stay informed. It’s not ideal, but it’s better than being directionless. You can do the same with the scrum master role.

In Conclusion

Scrum consistency is a widespread problem: you run into ScrumBut all over the place. We’ve identified some of the reasons for it, and looked at both the naive and intentional Scrumbutters. Naive Scrumbutters need to be educated about what Scrum actually is. Intentional Scrumbutters are advised to consider what they might be missing. Even if tinkering with Scrum works for you, it still puts a barrier in place for new hires trained in Scrum which is inefficient.

I urge teams to treat Scrum (or any methodology) as a system to be followed completely, not a buffet where you only take what you like. You’ll get a lot more out of the system if you give it a chance to work for you.