Recently I gave two days worth of talks introducing an organization to agile management and development with Scrum and XP practices. I've made available the presentations and exercises for the betterment of mankind...or at least to get a few more people familiar with agile development.
-
Going Agile - Management.mht: This IE-readable presentation walks through the basics and history of agile development, a close look at Scrum, its usage in actual project work, and selling agile development to clients along with an overview of various contract types. As you may have guessed, this presentation is management oriented and was effective in convincing the "suits" that agile is a good idea.
-
Management Exercises.doc: This contains a few exercises focusing on organization improvement and reducing waste. The exercises were adapted from
Lean Software Development by Mary & Tom Poppendieck.
-
Going Agile - Development.mht: This presentation is very similar to the previous presentation but gets much more developer oriented after going through the Scrum basics. It also has finer grained details concerning Scrum. The developer oriented slides cover topics such as refactoring, test-driven development, acceptance testing, continuous integration, design by contract and a few important design patterns for writing maintainable software.
-
Development Exercises.doc: This contains a few developer oriented exercises aimed at improving development efficiency, reducing waste, and honing refactoring skills. Poppendieck's book inspired the first few exercises and
Refactoring Workbook by William Wake inspired the refactoring exercises. Although the exercises are in Java, it'll make perfect sense to C# developers alike.
After three years of working with agile techniques, suffering through many (self-induced) mis-applications of it, and seeing the beneficial results it has on project work, I can confidently state that there is simply no better way to develop higher quality applications with happier clients than with agile project management and development. Although many agile approaches exist, the balance I've taken to prefer is a combination of:
-
Scrum for Project Management: Scrum is very project management oriented and dictates a number of beneficial practices for increasing the visibility of project completion, improving the development process with retrospectives, and getting the client involved. (Yes, I know XP recommends all this too, but management is Scrum's primary focus.) Although Scrum recommends a 30-day iteration, my preference is to set sprint length at two weeks. Two essential resources in your Scrum toolbox, to get you going (and keep you going in the right direction), are the
Scrum Checklists available via InfoQ.com and
Agile Project Management with Scrum by Ken Schwaber.
-
XP for Software Development: XP is to development what Scrum is to project management. Although I'm most likely preaching to the choir, XP is chock full of valuable suggestions for making you a more efficient and quality driven developer. Kent Beck's
Extreme Programming Explained is the obvious starting point for getting into XP.
-
Reducing Waste When Possible: Even with Scrum and XP in place, there are always opportunities for reducing waste, improving communications, and increasing organizational efficiency. Poppendieck's
Lean Software Development, taking inspiration from Japanese manufacturing techniques, is an essential guide for augmenting your agile practices with waste reduction techniques.
While I'm in the agile mindset, I'll throw in Mike Cohn's Agile Estimating and Planning and User Stories Applied as two other vital bookshelf residents for rounding out the start of your agile process library.
Billy McCafferty