Sunday, December 13, 2009

When to Scrum

I often hear companies claiming that they are much better in software engineering since they follow Scrum. How valid is that claim? Rather than challenging further, let me share some of the experience on when can an organization be effective with Scrum.

First of all, it is important to understand what problems Scrum is actually trying to solve. Scrum is mainly about making things more visible and measurable. It makes requirements more visible, progress more measurable, impedances more visible, etc... It encourages decisions to be made by the right people keeping everyone involved and interested. 

Wait... isn't this we always hear and know about Scrum? Yes... but is that the complete picture of Scrum? Unfortunately NOT! It is equally important to understand what Scrum is not! Scrum is a management framework but does not define engineering practices. What happens if your Scrum team lacks engineering practices? It will be like trying to win 'Formula 1' race, by employing Michael Schumacher to drive a bullock cart. No matter how well Michael Schumacher can drive, bullock cart is not going to perform. In short, it is not possible to drive, if engine is not up to the expectations. Scrum is NOT about the engine, but about driving it. The engine is the engineering practices followed such as how the coding is done, reviews are made, documentation is done, testing is done, resources are planned, infrastructure is managed, and this list can go on and on.... 

It is important to know that none of the above is addressed by Scrum. Many get confused by trying to understand Scrum by comparing to XP (Extreme Programming) which has defined some good engineering practices such as unit testing, continuous integration, etc. Scrum is a different concept altogether. 

For a company with proper engineering practices Scrum can make a lot of sense. But when there is no proper engineering process exist, it is quite easy to get your incapabilities hindered under the word 'agile'. Unless you have addressed software engineering processes in your company, adapting Scrum will probably have negative results. 

Do not use Scrum as a means to fix the engineering process. It is impossible. Instead you may admire the engineering value added by standards such as CMMi, ISO, etc.

[tag: 99xp ]