Cowboy Agile?
- by Robert May
In a previous post, I outlined the rules of Scrum. This post details one of those rules. I’ve often heard similar phrases around Scrum that clue me in to someone who doesn’t understand Scrum. The phrases go something like this: “We don’t do Agile because the idea of letting people just do whatever they want is wrong. We believe in a more structured approach.” (i.e. Work is Prison, and I’m the Warden!) “I love Agile. Agile lets us do whatever we want!” (Cowboy Agile?) “We’re Agile, but we use a process that I’ve created.” (Cowboy Agile?) All of those phrases have one thing in common: The assumption that Agile, and I mean Scrum, lets you do whatever you want. This is simply not true. Executing Scrum properly requires more dedication, rigor, and diligence than happens in most traditional development methods. Scrum and Waterfall Compared Since Scrum and Waterfall are two of the most commonly used methodologies, a little bit of contrasting and comparing is in order. Waterfall Scrum A project manager defines all tasks and then manages the tasks that team members are working on. The team members define the tasks and estimates of the stories for the current iteration. Any team member may work on any task in the iteration. Usually only a few milestones that need to be met, the milestones are measured in months, and these milestones are expected to be missed. Little work is ever done to improve estimates and poor estimators can hide behind high estimates. Stories must be delivered every iteration, milestones are measured in hours, and the team is expected to figure out why their estimates were wrong, even when they were under. Repeated misses can get the entire team fired. Partially completed work is normal. Partially completed work doesn’t count. Nobody knows the task you’re working on. Everyone knows what you’re working on, whether or not you’re making progress and how much longer you think its going to take, in hours. Little requirement to show working code. Prototypes are ok. Working code must be shown each iteration. No smoke and mirrors allowed. Testing is done in lengthy cycles at the end of development. Developers aren’t held accountable. Testing is part of the team. If the testers don’t accept the story as complete, the team can’t count it. Complete means that the story’s functionality works as designed. The team can’t have any open defects on the story. Velocity is rarely truly measured and difficult to evaluate. Velocity is integral to the process and can be seen at a glance and everyone in the company knows what it is. A business analyst writes requirements. Designers mock up screens. Developers hide behind “I did it just like the spec doc told me to and made the screen exactly like the picture” Developers are expected to collaborate in real time. If a design is bad or lacks needed details, the developers are required to get it right in the iteration, because all software must be functional. Designers and Business Analysts are part of the team and must do their work in iterations slightly ahead of the developers. Upper Management is often surprised. “You told me things were going well two months ago!” Management receives updates at the end of every iteration showing them exactly what the team did and how that compares to what' is remaining in the backlog. Managers know every iteration what their money is buying. Status meetings are rare or don’t occur. Email is a primary form of communication. Teams coordinate every single day with each other and use other high bandwidth communication channels to make sure they’re making progress. Email is used only as a last resort. Instead, team members stand up, walk to each other, and talk, face to face. If that’s not possible, they pick up the phone. IF someone asks what happened, its at the end of a lengthy development cycle measured in months, and nobody really knows why it happened. Someone asks what happened every iteration. The team talks about what happened, and then adapts to make sure that what happened either never happens again or happens every time. That’s probably enough for now. As you can see, a lot is required of Scrum teams! One of the key differences in Scrum is that the burden for many activities is shifted to a group of people who share responsibility, instead of a single person having responsibility. This is a very good thing, since small groups usually come up with better and more insightful work than single individuals. This shift also results in better velocity. Team members can take vacations and the rest of the team simply picks up the slack. With Waterfall, if a key team member takes a vacation, delays can ensue. Scrum requires much more out of every team member and as a result, Scrum teams outperform non-Scrum teams working 60 hour weeks. Recommended Reading Everyone considering Scrum should read Mike Cohn’s excellent book, User Stories Applied. Technorati Tags: Agile,Scrum,Waterfall