Devlico.Us
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @devlicious

Billy McCafferty



Introduction to Scrum and Agile Development

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

kick it on DotNetKicks.com



Comments

Derik Whittaker said:

Excellent post, great content.

# August 15, 2007 7:59 PM

Sean Chambers said:

Bill,

Excellent post. I was just looking for this exact information last week. I wish you would post more often because each one of your posts is a gem.

One question for you, I work for a school district and am the only developer on board. As a result I have read a few agile books but question whether any of the XP practices apply to me since I am the only developer. I have already tried to practice some scrum procedures mainly with keeping a backlog and using Trac for project management. Any other pointers in the right direction?

Thanks for the great post.

# August 15, 2007 8:23 PM

Christopher Bennage said:

I just started reading User Stories Applied and I'm very pleased so far.

# August 15, 2007 8:29 PM

Eric Brown said:

Thanks for the post...there are some great links and resources here.

Thanks again.

Eric

# August 16, 2007 7:33 AM

Billy McCafferty - Introduction to Scrum and Agile Development | Connecting Technology, Strategy and Execution said:

Pingback from  Billy McCafferty - Introduction to Scrum and Agile Development | Connecting Technology, Strategy and Execution

# August 16, 2007 7:52 AM

Billy McCafferty said:

@Sean,

It sounds cliche, but using agile practices by oneself, or any disciplined development methodology for that matter, requires a lot more discipline than when working on a team.  When on a team, developers feel accountable for showing each other the progress they made each day.  But when developing by yourself, it requires a lot more discipline to keep the processes in place.

With that said, I feel that Scrum/XP practices are just as relevant for the one person team as they are for average team sizes.  Here are the key things that help me when I develop alone:  commit to having a certain % of your code covered by unit tests and don't let it fall behind; make clear your development goals for each iteration and track your progress on a cordboard with index cards along with a burndown chart; and take 5 minutes each morning with your corkboard to note what you finished yesterday, what you're committing to accomplish today, and what's keeping you from being efficient.  (For me, I often note that I need to close Outlook for a few hours at a time...that's usually my biggest distraction.)

These recommendations really aren't too different than what Scrum/XP recommends for teams of any size; but when working alone, we often have to work a little harder to keep the processes in place since no one's looking. ;)  But if you do it, you'll find that development becomes more fun, that you're accomplishing more each day, and that you're building the experiences needed for future jobs that are using those same agile processes.

# August 16, 2007 11:50 AM

DotNetKicks.com said:

You've been kicked (a good thing) - Trackback from DotNetKicks.com

# August 16, 2007 11:54 AM

Sean Chambers said:

Bill,

Thanks for the tips. You don't know how much that really helps me. In the near future I will be working on much larger projects and want to make sure I have my ducks in a row.

I just completed a fairly large monorail/windsor/nhibernate project using ideas from your codeproject article. You can find it at http://www.flaglerschools.com. Thank you for the great articles and tips! Keep it up!

# August 16, 2007 7:33 PM

tobsen said:

good article, +1 Kick from me.

# August 20, 2007 1:10 PM

Jason Meridth said:

Do you happen to have a key to these exercises?

Are they mostly present in the Lean Software book?

The team I'm on used the developer exercises in a brown bag and enjoyed it deeply, just wanted to see if we missed anything.

Thanks.

# August 23, 2007 1:29 PM

Billy McCafferty said:

Glad you all enjoyed it!  The Lean Software Book and Refactoring Workbook are good resources to go along with the exercises.

# August 23, 2007 2:06 PM

art said:

Want to read the blog....

# October 5, 2007 9:44 AM

Leave a Comment

(required)  
(optional)
(required)  

Enter the numbers above:
Add
Check out Devlicio.us!

Our Sponsors

Proudly Partnered With