Balancing Skills For Agile Team Success


Often, our agile teams are made up of junior and senior people. Some of these people tend to be more domain focused, such as understanding financial services, while others are more engineering focused, with expertise in software architecture and programming languages. While this mix is generally beneficial from a synergistic point of view, it can also create friction during development - friction that requires active management attention and a proactive balancing of the relative quot;skills scales.quot;

Many contend that agile can work only when all team members are senior. If we apply this reasoning to any group, e.g., a practiced sports team or a well-oiled jazz band, we find that this basic tenet holds - a set of senior players is generally more effective than a similar group of less experienced ones.
While this is true in the general case, {sidebar id=1} there are several problems with this line of thinking when it comes to agile software development. First, it's nearly impossible to staff all of your agile teams with experienced people. You simply do not have that many to go around. Solid performers with a track record of success are rare. In any organization, you know who these people are. They are the ones whose names come up again and again when you're trying to solve your toughest problems. Second, this promotes a very short term view of the organization. You need your experienced people to cross-train with your more junior staff, ensuring a deep technical bench. Third, this generalization fails to recognize the two skill vectors that are important to any agile team's success: domain knowledge and technical expertise.
Balancing Essential Skills
Failure to recognize the two skills vectors at once is a common source of problems for many projects, agile or otherwise. Most organizations have a broad range of talent. For our purposes, these people range from being experts in the domain, with little to no technical knowledge, to those who are guru-level developers with only a grim understanding of the domain in which they build software (they use requirements to fill the void). We can illustrate this on a simple matrix, as shown in Figure 1.

Figure 1: Domain versus engineering expertise

Agile teams work best when all of the developers are seasoned engineers who are proficient in the domain. For all practical purposes, however, it's nearly impossible for most teams to realize this mix; therefore, senior technology managers need to adapt and help create effective balance.
In an ideal world, you would build your agile team almost exclusively with people from QI. These people possess both deep domain knowledge and have demonstrated profound technical competency. They are, for the most part, quite senior. If these people work well together, and you have the luxury of building such a team, do it! You are very lucky! Luck notwithstanding, in most cases, you'll build a team using a mix of people from QI, QII and QIV. Avoid putting those from QIII on an agile team; they will more than likely weigh the team down relative to whatever contribution they might make.
In addition to domain and technical knowledge, when assembling your team, make sure to consider each individual's personality, ego emissions, [i] the need to be right, team spirit, sense of humor, empathy, work ethic, and professional integrity. In other words, strive to create a team rich in self-motivation and in emotional intelligence . On an agile team, emotional intelligence is as important as hard abilities.
Once you have assembled the team, your next job is to balance their skills. Given our graph above, we want experienced programmers working with less experienced programmers, and those that possess deep domain knowledge working with those that don't. To realize this mix, the team can employ various techniques including pair programming, peer reviews, formal mentorship, and group education sessions, where an expert in a given area takes some time to educate the rest. While trying to maintain this balance is extremely important, it can lead to some serious inter-team conflicts.
These conflicts arise out of misperceptions,


AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.