Agile Development, Scrum, Kanban, and the Observer Effect

Let me begin by stating that while nearly every manager in the software industry advocates Agile development, which is often incorrectly used interchangeably with the Scrum flavor of Agile development, there is no consensus amongst engineers and designers as to whether or not Agile or Scrum is a “good thing”. And, having practiced Scrum myself in seven different teams throughout my career, having attended several Agile Development workshops (all of which were biased towards the Scrum methodology), and having listened in on several conversations about the pros and cons of Scrum, there seems to be some confusion as to what problems the Scrum methodology is actually solving for, and what side effects it has on the overall software development process. In addition, you may have heard about Kanban as well, but aren’t quite sure how it relates to, or differs from, Agile and Scrum. Is Scrum all that it’s hyped up to be? Let’s find out.

Agile Development is like a religion. Everyone does it differently and no one is sure if they’re doing it right – Eric Rowell

The Interface and the Implementation

 The terms “Agile Development”, “Scrum”, and “Kanban” are often times used interchangeably which can cause some confusion amongst designers, engineers, managers, and product managers. I’m going to define them as succinctly as possible to clear up any confusion.

Agile Development – a abstract software development concept. It’s not a process. In fact, Agile development is defined by it’s manifesto, found here http://www.agilemanifesto.org/, which basically just emphasizes the importance of team member collaboration, constant collaboration with customers, and an ability to adapt to changing conditions rather than following a plan. This is all goodness and makes a lot of sense.

Scrum – an implementation of Agile Development which imposes a process on the software development pipeline in order to maximize developer throughput, improve predictability as to when units of work will be completed, and guarantee working software milestones. Clearly, this methodology was created with managers and product managers in mind, because these folks are pressured to optimize designers’ and engineers’ time as efficiently as possible in order to produce results as fast as possible, and also do so in a predictable manner so that executives know when the work will be finished. This makes a lot of sense, but it comes at a cost, as we will discuss later.

Kanban – a system for monitoring the progress of work over time.  Kanban was originally developed at Toyota to manage assembly lines.  With Kanban, managers, designers, and developers get a clear sense of the work passing through different states, such as “not started”, “in progress”, “code complete”, “tested”, and “verified”.

Scrumban – a combination of Scrum and Kanban.  Scrumban essentially adds taskflow monitoring to the Scrum process, which is sometimes referred to as the Scrum board.

The Observer Effect

So why do managers and product managers advocate Scrum, while designers and engineers are less enthusiastic? To understand this, I’d like to reference the observer effect. In the field of science, the observer effect refers to changes that the act of observation will make on a phenomenon being observed. A classic example of this is checking the air pressure of an automobile. By measuring the pressure, you inadvertently change the pressure of the tire by letting some of it out. Thus, the act of observing the tire pressure has altered its state.

 

checking-tire-pressure

 

The same effect applies to the Scrum Methodology.  To my knowledge, there are two major factors that impede the velocity of software development when trying to improve predictability with Scrum – meetings and technical debt.

Meetings, Meetings, and More Meetings

First, because Scrum is a process, it requires several meetings every sprint to groom backlogs, plan future sprints, break down tasks, scope tasks, have retrospectives, etc.  Although the ratio of Scrum meetings to actual development time is somewhat low, it still has an effect.  Typically, in total, Scrum meetings result in a loss of a half day or a full day of development, each sprint, for every engineer on the team.

Take a look at the diagram below. It outlines the components of Scrum methodology that serve the needs of designers, engineers, managers, and product managers.

components-of-scrum

As you can see, the Scrum Methodology serves the needs of both parties only in regards to task workflow, backlog grooming, and daily standups.  The backlog, when prioritized, serves as a plan.  The standups and task workflow (Kanban) are useful to managers and product managers because they serve as a heart beat for the progress of the project.  On the other hand, they are also useful to designers and engineers because they keep everyone on the same page in regards to what is being done and what is about to be done so that people aren’t working on the same things, and so that units of work can be done in a logical order. This is definitely goodness.

The items on the left of the Venn diagram, unfortunately, do take up quite a bit of time, and provide little to no value to designers or engineers.  Blah!

Origins of Technical Debt

Next, because engineers are pressured to complete all of the tasks in a given sprint, quality is often times sacrificed and technical debt is unnecessarily added just to get stuff over the finish line.

Imagine if residential builders used Scrum to build houses.  Rather than building a solid foundation first, including plumbing, wiring, and gas, the builders try to produce “working software”, aka livable quarters, by building one room in each sprint.  If a builder were to construct the kitchen first, followed by a living room, followed by a garage, etc, without having a foundation in place, the house would be a disaster.

This type of scenario is one of the most common sources of technical debt, where engineers get the forward facing part of a product done as fast as possible and add hacks for foundational pieces that can’t be seen.  Any engineer can tell you that technical debt piled up over time is irreversible, usually resulting in an eventual rewrite of entire modules, or a whole project.  If that’s not a time killer, I don’t know what is.

Software Development Predictability vs. Speed

Interestingly, spending more time realizing predictability results in less time actually designing and building products. Vice versa, spending more time designing and building products results in less time realizing predictability. Therefore, it follows that predictability and software development speed are inversely related, i.e. you can never have both.

software-development-predictability-vs-speed

It’s safe to say that you at least need some level of predictability, or else you’ll never have a sense for when things might be completed. On the other hand, it’s also safe to say that you don’t want to spend so much time analyzing throughput and realizing predictability that you are paralyzed and can’t get any work done. Because designers and engineers are more concerned with the creation of high quality products than the degree of accuracy for when their work will be completed, it should come as no surprise that designers and engineers will therefore naturally resist the Scrum Methodology simply because it gets in the way. Thus, it’s really important that as a team or organization, you find the right balance between predictability and software development speed.

Fallacies of the Scrum Methodology

One of the major flaws with Scrum is it’s assumption that software can be designed, built, and tested within a single sprint such that new features are relatively polished and completed at the end.  It is theoretically impossible for designers, engineers, and QA to efficiently work in parallel when designing, building, and testing a feature simultaneously.  Can you decide what you are going to eat for lunch, eat it, and then feel satisfied with what you ordered simultaneously?  Of course not, that’s ridiculous.

What realistically happens is that designers naturally fall out of the sprint cycles and just try and stay a few weeks ahead of the engineers.  Engineers start building the new features or fixing bugs, but QA can’t test anything until they are finished, so QA naturally works on improving the tests for the last sprint.  As engineers scramble to finish the remaining tasks at the end of the sprint, QA is left high and dry because they didn’t even get a chance to start testing those tasks.  This cycle repeats, and thus, there is a constant blurring effect between sprints.

Secondly, shit is going to happen that compromise a Scrum sprint. You can count on that.  For example, QA finds a gnarly bug that is going to jeopardize a customer demo, or an escalation is filed by an existing customer that has to be fixed asap. Scrum does not account for anything unexpected that might occur during a sprint. Yet, unfortunately, during all parts of the software development process, one should always expect the unexpected. Despite Scrum’s claim to be agile, it can feel pretty rigid at times, which is the very thing it is supposed to remedy.

Natural Tendencies and the of Scrum Reduction

In just about all of my experiences with Scrum, the overhead associated with scoping and partitioning tasks for each and every sprint, coupled with an inability to accurately predict the time it takes to complete every unit of work that makes up a product, plus the fact that nearly all sprints will be compromised with unforseen challenges, has nearly always resulted in the Scrum process being reduced to a Kanban-like process over time, in which teams fall into a natural pattern of continuing standups and monitoring progress via task workflows and essentially reducing sprints to just “the stuff we are working on next”.

 

kanban-vs-scrum

Perhaps then, Kanban is a better process than Scrum for teams that

  • have designers and QA
  • have to move fast
  • don’t necessarily have to know exactly when a product is going to be finished

For teams that are made up of engineers who are barbarically responsible for both design and testing (typical for large IT departments), or for teams who can afford to move at a snail’s pace (again, typical for large IT departments), the fallacies of Scrum will not be as evident, and thus will seem acceptable or even conducive to the process of software development.  In my opinion, the positive feelings that these teams may feel towards Scrum are actually misguided because these feelings are likely formed from the value realized by the Kanban components of their process (task workflow and standups).

Kanban does not necessarily care about throughput, delivering working software on specific days of the month, or predicting exactly when everything will be finished. It cares about daily collaboration, keeping in touch, and optimizing workloads depending on changing conditions. This, in spirit, is what Agile Development was meant to be.

Kanban also makes it easier for folks to trade, give, or receive tasks at any moment depending on changing conditions. It allows for shifts in priority and escalations to be handled immediately, rather than waiting for the end of a sprint. Also, because there are no hard sprint deadlines, the process of designing, building, and testing are much more fluid. Designers are working on designs that will be built next week, engineers are building portions of the product this week, and QA is testing the work that engineers built last week.

Eric Rowell

Hi there, my name's Eric Rowell. I'm the founder of Coder Lifestyle, founder of Html5CanvasTutorials, the creator of the KineticJS library, author of HTML5 Canvas Cookbook, and the creator of BigOCheatSheet. I've worked in the Tech industry for about five years while at Yahoo, LinkedIn, and Platfora, and I've also worked in the Transportation industry for two years while at BNSF Railway. I'm currently leading the data visualization efforts at Platfora.

  • Gog

    If you don’t find planning, grooming and retrospectives useful for the designers and engineers you’re doing them wrong!

    The following quote is just plain wrong – not sure where you learnt scrum, but it sounds like you could do with some decent coaching!

    “In the event that engineers want to shuffle tasks for any reason, they may not, because doing so would break the Scrum model, which requires that all tasks assigned to each engineer stay with that engineer until it’s completed or reassigned in the next sprint, which could be weeks away.”

  • john snow

    What Gog said, If a gnarly bug does get logged then its the scrum master’s job to prioritize it accordingly, i guess the scrums you attended the scrum master was simply not strong enough to push back certain tasks.

  • Thomas Eyde

    I also reacted on the Scrum-description. That’s not what I have read or learned. I do not argue that Scrum or any other methodology are often practiced wrong, giving no benefits.

    The scrum master’s job is to remove impediments. If I can’t do the job, but you can, the scrum master should reassign immediately unless we already did.

    And, btw, kanban is all about throughput. That’s why you put a limit on how many tasks can be in a certain column.

    Kanban also needs planning, but you may or may not see that on the board. You have to fill the left most column at some time. How do you decide what to put there and in which order? Planning, right?

    • ericdrowell

      @thomaseyde:disqus you’re absolutely right with all of your points, *except* that a failure in practicing Scrum means a failure of the Scrum master. Scrum is not a magic bullet that can be applied to all software development processes. I can say though, that I’m working on redoing parts of this article to reflect that more clearly. Thanks!

  • Zoe Tazaki

    We were doing scrum for 16 months, and there was not one occasion at which we’ve arrived at the end of a sprint having met the required goal, we were always late and having to plan overtime to finish up on top of a newly beginning sprint! Not sure whether this was the scrum master’s bad planning or us being negative, but it didn’t work. We ditched the sprints, added more detailed process steps (more columns in http://kanbantool.com) and did no estimations at all for 4 months.
    After this time, we analyzed the average completion time for minor and larger tasks, and are now planning according to this. It’s still hard work, but our feeling is, that we are spending more time working that estimating and playing catch-up.
    So, kanban did make it in our case.

  • http://skornyakov.info/ Anton Skornyakov

    Dear Eric, thank you for sharing your experiences.

    Main point of Scrum is to have a cross-functional teams working, meaning a group of people that are able to deliver the full functionality from A to Z. This has a tremendous impact on throughput and transparency of the development process to the developers themselves (and the management) and on the necessity of managers. The latter reduces dramatically with cross-functional teams.

    That move to cross-functionality is not asked for by Kanban. When companies move to Kanban without challenging their team composition, they end up optimizing within component teams… IMHO, this is why Scrum is ofter the start of an Agile transition. It establishes a foundation from which, when you have a good Scrum master the team can evolve their processes and move towards optimizing for flow.

    And this foundation is often not that easy to lay out. Once you are used to working within groups responsible for single components of a product its a large change to start working with people from totally different departments.