Agile development doesn't always mean Scrum
I've noticed an interesting trend lately. Whenever people talk about Agile development or Scrum they use the two interchangeably. Like one always means the other, and there is no other Agile process other than Scrum worth mentioning.
Why do I think this is an interesting trend? According to recent surveys (for example here) Scrum is the most popular Agile process in use today so why not just equate the two words? It definitely isn't a horrible idea.
Then again is Scrum really the most popular? I can also find evidence from just a year ago that Extreme Programming is the most popular Agile process (here), but for some reason Scrum wins out, why is this the case?
Ok, we'll get to that, but first what are the other options out there? Maybe looking at those other options will give us an idea why Scrum seems to be so widely known. Scrum is a very good process for most software projects, but that doesn't mean its a good fit for all software projects. Each Agile methodolgoy that people have come up wiith has its own pros and cons for software projects.
First, what do they all have in common? Well they all value the concepts found in the Agile Manifesto as defined by the Agile Alliance. In addition they should all follow these 12 principles.
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. --
- Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity--the art of maximizing the amount of work not done--is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
So in a nutshell, they all have a cross functional team with a lot of different experiences and viewpoints. They all are focused on getting working software in the customers hands for feedback as quickly and as often as possible, and they all focus on getting feedback on those releases. That feedback in turn drives changes to the requirements and subsequent releases that have those changes implemented.
So what is Scrum anyway? And what are the other options? Well this is by no means an extensive list, but it is the ones I've encountered in the past.
So what is it about Scrum that makes it so well known? I have theories, no facts, but these are my theories.
- The fact that there is a form of certification for it.
- I think that this goes a long way to giving this methodology legitimacy. If you can officially train people and certify them it gives managers at all levels confidence in the process. Its a lot easier for a PM to sign off on using a process for the first time if the someone involved in the project is certified in how the process works.
- There is a lot of information out about it.
- A visit to my local bookstore revealed 1 book on XP, and about a dozen on Scrum
- It is very easy to adapt to open source projects.
- The fact that the team members can pick up work as it becomes neccessary to do it, and are empowered to get the work done as they see fit lends itself very well to the loose knit community of open source projects.
- The name. Ok, its not a scientific reason, but hear me out
- People here the words Extreme Programming and they think of a couple of hackers in a computer room swigging bottles of red bull. It doesn't sound like a process, more like a jam session for developers.
- People here the words Unified Process and they think it sounds stuffy and complex. Anytime you want to "Unify" stuff it's always a pain in the butt, why would this be any different?
- Scrum is a fun word, people remember it. Hell even my parents had heard of Scrum and at least knew it had something to do with how you write software.