The Importance of People in Agile Software Development
Often when I talk with people about agile methods, the discussion quickly moves to subjects like frameworks, tools, even project planning metrics, and away from one of the most important topics—the role of people in agile software development. Successful agile software development is based on communication between people in an interdisciplinary team. Some argue that the people are more important than the process for the success of an agile project. If you ignore team dynamics, you risk hindering your team's effectiveness.
Agile methods are based on self-organization and an enabling attitude. While agile methods don't have the same restrictions as a plan-driven method, in which progress is constrained, they do lack the rigidity that makes it harder to avoid mistakes. This means that agile methods require more disciplined adherence to the principles, while at the same time allowing for adaptation in the details of the practices. Sacrificing the rigidity of a plan-driven method in favor of self organization, while possibly risky, has great benefits.
Agile teams can adapt so that team members can do whatever the team needs to be successful. Steve Ropa compares this to a jazz combo. The comparison of software development to performance is not new. Robert Austin and Lee Devin describe how knowledge work has many things in common with theatrical performance in an article and in the book Artful Making. A software project is similar to a performance in that there is a general framework and set of expectations. However, many things can change at a moment's notice, and you need a wide range of skills in order to deliver successfully.
To help a team adapt to change, it is important to understand how to identify and overcome the challenges of teamwork. Linda Rising, in an article in IEEE Software Magazine, explained that interdisciplinary teams are innately challenging because of how we are wired to stereotype (testers vs. developers) and identify with small teams (engineering team vs. product team). The key, Rising suggests, is for everyone involved with the project to focus on what they have in common and join forces to reach common goals and solve common problems.
Agile methods have mechanisms for doing this such as a daily scrum and retrospectives or reviews. Following the practices alone isn't enough; you need to understand when the team is following the practice in spirit or simply going through the motions.
While we spend a lot of energy solving technical problems in software development, the harder problems are those involving teamwork and coordination. Teams that understand this are likely to be more effective than those who ignore the human side of software development.