Wednesday, 4 March 2009

Handling Bottle Necks in Scrum Team

During  yesterday open house I was asked an interesting question. 

Some context first. The organization has chosen to adopt the Scrum methodology (good for them). As a scrum team member she is in charge of writing the automation for system test using a module inside the QC product (can anyone guess what's wrong here?). The issue is that she cant keep up. The team has 5 developers who write code and only her to write test automation (now do you see it?). So she was asking what is the "agile" solution to this.

I don't know if this is The agile answer, but for me, when a team member cant keep up and doesn't manage to finish his tasks, he needs help.

No agile process or in fact any other development process will change that. If a given person has too much work no matter if he works under a Scrum team an XP team or a waterfaoolish team, he has TOO MUCH work. Without help he wont finish on time. If no one on the team has the time to help, its a good indication (to me) that the entire team is overloaded. Face it, no magic answer here. No process I know of will take the time needed to complete a given work and make it shorter. The only thing we can expect a process is the focus the effort invested in the right direction, help eliminate wasted effort and establish an environment in which the team can become better. Until that happens, be realistic. Commit only to the amount of work that you can currently handle.

Another issue I saw, was in the exact role definition. Part of the problem (in my eyes) is that in this specific team they were still thinking in the terms of well defined roles and responsible. Here are the people which writes code, here are the people who writes tests, here is the manager and so on.

In order to become more effective, we strive for versatility. that is we want each person in a team to be able to do every task involved in building the software. Yes we accept the fact that people still have different expertise and that's good. However when a team member gets behind schedule we wish that any team member will be able to come in and help. My guess (and clearly I can be mistaken), was that in this specific team she was the only one trained for that kind of work, therefore no one could actually help her. At least not at this point of time.

What to do?

First gather the team and raise the issue (can be done during retrospect meeting). Accept the fact that at this point of time you can achieve only a given amount of work (which is less than you thought). Face the facts and as a team inform management and commit to less. Its not much help if the coding tasks can be finished faster then can be tested. Development is not done after the coding phase. Try to resist the urge to take that kind of work (which currently is the bottleneck for the entire development cycle) and move it outside (to a different sprint or different team).  Also make sure that programmers wont rush ahead and take on more coding work cause it easier for them to do. make sure that no extra work is picked until committed work is actual done. And I mean done done as in coded, tested, integrated and everything else which falls under you definition of done.

Also, make sure to increase capacity. Either by bringing in help by hire more people (not likely at this point of time in current economy), or maybe from somewhere else inside the organization. Or train other team members. Yes this will be painful and will probably require a serious effort in making the team leave its comfort zone. But if your goal is to establish a self contained team this must be done.


Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Walgreens Printable Coupons