All you want to do is write some code, and somehow remain profitable. Well, maybe that’s not all you want to do. If you have one, you might be interested in fulfilling your client’s needs, while not going on any “death marches” in the process. You probably want to work on features that excite you with technology you want to use. You might want some flexibility on deadlines in response to unexpected problems. Ok. Great! Now, choose your flavor of methodolgy: Agile, XP, RAD, TDD, Waterfall, RUP, SCRUM…should I go on? Which do you choose? How do you know what will work best for you and your needs? When in doubt, do what everyone else is doing!
Agile with SCRUM is certainly en vogue. The values of Agile development are captured by the Agile Manifesto: http://agilemanifesto.org/ (also see: http://agilemanifesto.org/principles.html) SCRUM is a way of managing the work and communicating status. The two combined certainly make for an effective set of tools and guidelines to make everyone happy. But the first thing you learn about SCRUM (or the first thing I learned anyway) is: SCRUM is common sense! Meaning, if you have bad developers, or good developers with bad practices, SCRUM/Agile won’t help you; firing the developers will! See, common sense at it’s finest.
But seriously. One of the advantages of Agile with SCRUM is that work is clearly exposed as knowledge changes. For example, say you agree to deliver the user administration widget in 4 weeks. But as the days pass, you complete work, but new features are discussed. You can choose with the stakeholders what to do with those features: do we try to squeeze all of them in, or can we release the most essential ones first and then the others as enhancements later? Developers get to talk to stakeholders without all that messy project management stuff getting in the way. Of course, there’s a Product Owner (Team) and a ScrumMaster. But their roles are mainly about helping the developers work on the most important features without any impediments.
I’ve worked with Waterfall, Spiral, a little RUP, and now Agile with SCRUM. I love it! It’s lightweight, it’s simple, it allows for quick response to unexpected issues. I’ll be posting more on this topic as my experience as a ScrumMaster increases.