There are 2 problems in the question above. The first is the assumption that we need to move people around to staff projects. The second is related to the number of simultaneous projects.
Moving People Around
There is a tendency to think of projects as the primary unit of organization. In this view, the project is static and we move people and resources to the project in order to staff it. When the project is finished, we return the people and resources to the central pool and make them available for the next project. There are several issues here mostly related to the pe
ople side of things. Treating people as individual pieces that can be moved around like pieces on a chessboard does not go a long way towards creating high performance teams. You will recall that teams go through a life cycle of maturity: forming, storming, norming, performing, and all of that, and this maturation process takes time. By the time the team is really performing, usually after quite a few months, the project begins to wind down and we break the team up and send staff off to other projects where they have to start the process all over again. As soon as we get a high performing team we break it up!
In the Agile world, it is common to think of the team as the central unit of organization and we move projects to the team. In this model, teams go through the maturation process but once they achieve a high performing state, we keep them working together for as long as possible. The team members know each other well, they know their strengths and weaknes
ses, they have learned how to communicate and collaborate with one another and they have hopefully worked out their major differences. Why would you want to break that up? Instead, look at the projects that are in the queue and assign the project to the team that is in the best position to deliver from a capacity and skills perspective.
Specialists
Some projects demand the use of specialists who are in limited supply. In those cases, you may need to share specialists across many teams and the teams will need to adjust their Agile schedules around the availability of the specialists. Moving only the specialists around is a lot easier than shuffling everyone. And oh, by the way, if you don't have enough specialists to serve all of the projects, then you have an obvious bottleneck that needs to be addressed.
Too Many Projects

Finally, the biggest problem in most organizations is too many projects and too little focus. Just like having too many cars on the highway, having too many projects in flight is a guarantee for SLOW DELIVERY. There is plenty of inventory management and queueing theory to support this and we all know it intuitively. Most IT organizations have a lot of projects going on, hence a lot of spending going on, but not a lot of delivery happening. Each project (or car) is inching slowly along, fighting for attention and limited resources. The solution of course is take some cars off of the highway so that the remaining cars can fly! But that requires the political strength to say "I'm sorry but we are fully allocated and we cannot support your project right now. We will queue it up for the next available team." Easy to say, harder to do. This takes strong, decisive management to truly manage demand against capacity in order to keep from overloading the system. Agile can help however. Since Agile does require that teams spend a significant amount of time together, it is difficult for them to support many simultaneous projects. Agile teams are better able to focus and get the project done quickly. By moving towards Agile on a large scale in your organization, projects will have to be better prioritized and some will have to go into the queue while others get the focus they deserve. And this is a great step towards achieving throughput and delivery instead of high-spend and never-ending projects.

Subscribe to the RSS feed
6 comments:
Roland,
Completely agree with you.
Of course, that's impossible to have constant teams (some people are leaving, new people are coming, specific project requirements and so on), but it's nice to increase average (don't like this word) life time of a team. Therefore increasing time of high performing and decreasing efforts for resource management.
But there are some additional problems that need to be addressed (I'm mostly talking about software development companies):
1. For a project you have budget. If the team is bigger then it is needed then the company-developer will not get additional money for that.
2. Individual people are much more flexible in terms of capacity - it's easier to compose group (not the team) for specific project according to desired team composition.
Do you have any ideas how to overcome these problems?
This is a really good post. I've been trying to explain to folks the difference between staffing agile teams vs. staffing projects. Thanks for explaining it so well. I've shared this post on http://bx.businessweek.com/agile-software-development/
Dmitry,
Thanks for the comments. You are definitely correct that this is easier than it sounds and there are some special cases.
For small projects, you could consider having the team support 2 similar projects at the same time or one new project plus maintenance work on past releases. I've see this pattern often where part of the team is mixing new project work and maintenance work.
For large projects that are bigger than a single team, you might consider bringing 2 or 3 smaller teams together to create an uber-team. At least this way, you have pockets or subgroups of high performing teams.
Roland
Isaac,
Thanks for your comments and for the cross-post. We appreciate that!
Roland
While I agree with what Rolland is saying, I also think smaller teams perform much better, simply because there are less human factors. Larger teams tend to have islands of smaller groups, and sometimes those islands collide. Smaller teams also self organize better.
Breaking free from this mindset is perhaps the hardest thing for teams adopting agile. What would be interesting to know would be, if there are any statistics regarding-
1. Does long experience with "Successful" projects using "Resource assignment" hinder agile adoption?
2. Are there statistics that show Resource usage vs Project success in Agile and water fall models?
Post a Comment