Tuesday, November 10, 2009

The Untrained Team

"Patience. Discipline."
Undead NPC, Undercity, WoW


Successfully getting to Agile requires two important abilities -- patience and discipline:

Patience of the ScrumMaster to let the team self-organize and learn to improve. This may sound contrary to the drive-driven personality a ScrumMaster must have. But it is important for every driver to power up an engine and just let it run on its own from time to time.

Discipline of the team to stay focused at self-organizing and improving. This may sound contrary to the good mood Scrum creates. But discipline is needed both on a personal and team basis. It is barely possible to succeed with test-driven development, pair programming, or continuous integration without discipline.

Now here is the issue: how to deal with missing discipline?

Two answers depending on the underlying root cause of missing discipline: either fire them, or train them!

If discipline is missing simply because team members do not want to be agile you should consider to break up with these guys.

If discipline is missing because team members do not know how to be agile you have to mentor, guide, and train them. It is not enough to give your team an one hour up-front presentation and tell them "you have to write unit tests for everything now because we have it in our definition-of-done." A developer without knowledge and experience how to write good unit tests will get lost. She will try to test the written code afterwards and you will hear statements like "no, I can't write unit tests now because the implementation is not finished yet."

Another fruitless approach is to tell your team "we will do continuous integration now because we are agile." It won't work as long as the team does not know how to integrate continuously on a daily basis. Developers again will get lost mentioning "yes, of course we will integrate but we have to wait for the three stories in this SVN branch to be finished before we can do so."

Do not wait any longer, act now! Your developers will fall back to old, traditional, waterfallish behavior. This will destroy huge parts of the team's success. Do not blame them - they simply do not know better.

Start now to set up training lessons, coaching sessions, and workshops to gain knowledge of all the things anyone of your team must possess. Use experts available in your organization to spread knowledge. Or get professional external help - there are lots of experienced trainers out there to help your team. And the team will be thankful to get something fresh from external people. Just weigh the pros and cons of the money invested in a trainer and the inspirational motivation of the team.

Pure self-organizing advocates will argue that the team by itself has to find all of these issues and how to improve accordingly. Yes, your team should do so. But if you as a ScrumMaster notice slack of improvement it's your turn to brief the team and kick-off some hints.

And always remember:
"Training is useful.
But there is no substitute for experience."
Rosa Klebb, From Russia with Love


No comments:

Post a Comment