At risk of sounding like a broken record, I’m once again writing a post about the importance of following good technical practices. Martin Fowler posted a new entry to his bliki earlier today, where he writes that “whenever I've listened to prominent Scrummers they've always emphasized that you must have good technical practices to succeed with a Scrum project. They don't mandate what those technical practices should be, but you do need them.”
Now I doubt I fall under the definition of what Fowler refers to as ‘prominent Scrummers’, but I agree with what he claims they’re saying. If you’re looking for a mandate on what these practices are, Jeremy D. Miller summed it up quite nicely a couple of months ago – I quoted him back then too in my Recipe for Tasty Agile Soup post, but I think it certainly bears repeating:
“You wanna work adaptively instead of the ol' fashioned plan driven method? Fine, but you've got to make that adaptability safe. You need rapid feedback cycles to know when you're getting off the rails (customer demos, TDD, Continuous Integration, automated acceptance tests, static code analysis or some sort of equivalent). You need to take steps that make continuous design methods safe and effective (simple design, a constant attention to design fundamentals like the SOLID principles, and an intolerance for technical debt). And your team needs to be retrospective about its work to make adaptions as they become necessary.”
Back to Fowler. He goes on to say that “the scrum community needs to redouble its efforts to ensure that people understand the importance of strong technical practices”. Absolutely – but then, strong technical practices should be important to any serious team of developers, regardless of the methodology they have chosen to apply. Fowler acknowledges this, saying that “it isn't methodologies that succeed or fail, it's teams that succeed or fail” before closing by quoting from the Agile manifesto that Individuals and Interactions are more valuable than Processes and Tools.