Skip to content

Running to chasm

June 10, 2007 by Artem

Working really hard on low priority items can be useless to the point of killing the company

Efficient Resource Utilization

Many teams start using agile methods while being highly specialized, that is team members are typically responsible for a particular component or area, that other people don't really understand. Developers often "own" their components and all the fixes go through them.

This kind of organization usually comes from the idea of the effective resource utilization. There is little doubt that if developer works on the same area for a long time, he will be able to implement changes faster and in more efficient way, than most of the other team members. Isn't it logical then to assign a responsible person for each component and whenever possible have the same person work on the same code area? It is rather logical as long as the target is the efficient resource utilization.

Return on Investment

Agile software development processes do not target the high resource utilization level. The main aim of the agile team is to maximize the return on investment (ROI) first of all by working on the most wanted features. Whenever there are people who have a "primary responsibility" on a certain component, there is a temptation to work on and perfectize this area instead of working on the features most important for the customer.

Working only on what you are specialized in sometimes means working very well on something useless. How hard have you been working on the last company product? And how much of the features implemented are actually being used by the customers?

Comments

resource utilization

June 11, 2007 by Alexey (not verified), 1 year 23 weeks ago
Comment id: 179

Artem,

I could not agree more. Here is a pattern I see over and over again.

A team is doing pretty good in prioritizing tasks/requests but because
the members are highly specialized you have one or two bottleneck resources
that basically define the velocity of your whole team. To re-phrase it, only one person can work on the items in your iteration plan and the rest of the team either is idle or do some other pet-projects.

I guess in some industries (like Electronic Design Automation for example) the subject is so complex there are naturally people with certain specializations. One developer knows timing analysis and physics of delay calculation for ICs well and another has all the knowledge and experience with placement and routing problems. One category of problems like that can take a PhD. One requires EE degree, another one Math or CS. Very few individuals can (or sometimes want to) be experts in several areas.

But in other cases, with less complex applications there are other factors that come into picture. Job security is one. It is safer to be the only expert for a certain category of the product. If no one else can do it the developer is a valuable resource. Also, basic human inertia, when a developer does want to learn new things and prefers to do what has been doing for years.

I believe it would be safer for a company to have a team where individual developers have overlapping domains of expertise. You know, to eliminate those resource bottlenecks if possible. So that your resources could be utilized more efficiently on the priority items. That is not always easy though.

Trust

June 13, 2007 by Artem, 1 year 23 weeks ago
Comment id: 180

I agree there can hardly be an agile team without trust. It is not even specific to the agile methods. SW development is always a new product development and as any non-trivial area requires a lot of creativity that can hardly happen when even job security is in danger.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <b> <i> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <br> <blockquote>
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.

Recent comments