Friday, July 6, 2012

The Waterfall to Agile Continuum

The two leading approaches to software development are the agile and waterfall methodologies. A common perception is that these are two distinct methodologies that organizations could select. In actual practice, however, organizations will seldom implement at either of these extremes. Waterfall and Agile can be thought of as the end points of a methodology continuum. An organization’s actual implementation of a methodology will lie somewhere along this continuum based on numerous factors and the specific goals and requirements for their development processes.

When listing the benefits of a strict agile approach, it’s easy to jump to the conclusion that agile is the far superior methodology. It does provide numerous benefits that waterfall lacks, which is why many organizations benefit from shifting along the continuum towards agile. However, waterfall certainly has a number of benefits as well and has produced successful results during its decades of dominance as a development methodology. This is where the concept of the continuum becomes so valuable – it allows organizations to not simply choose one approach, but to evaluate the importance of key benefits from each to find their ideal point.


Organizational Structure / Environment
The organization’s structure and environment play a key role in determining the point along the methodology continuum. A highly agile approach requires significant direct collaboration between team members from throughout the organization. If an organization has high barriers for communication between departments or teams due to structure, organization, geography, or any other factor, this could present a challenge for a highly agile approach.

Next, the management style used within the organization must be evaluated. A traditional command and control style is most common within the waterfall approach. A more agile approach promotes self-organization and control within teams that are held accountable for the results they produce.

Finally, what are the values the organization places as it encourages and rewards its team members? Are team members rewarded based on their individual contributions to the project – such as number of features they personally develop, volume of code, or code quality? As a highly agile approach promotes the teams, employee evaluation should be focused on how well individuals contribute and thrive within the team environment, evaluating aspects such as how well they mentor junior team members, how they encourage and promote their team to accomplish sprint goals, how they communicate ideas within their team, and the level of insight they provide during team discussions.


Level of Support
The level of support is a critical factor to consider as you are evaluating the change to a more agile methodology. A highly agile approach requires an organizational level change across teams and functional areas of the organization. Management at all levels must embrace the change in thinking, responsibilities, and structure. If a change is limited to only the development team, the team can adopt agile practices to gain certain benefits, but the resulting methodology will be limited in its movement towards the agile end on the continuum.


Level of Talent
A third factor to consider is the level and type of talent available to your teams. An agile approach often works best with a combination of junior and senior level talent. In this environment, senior level resources will tend to provide mentoring to junior level talent, allowing them to continuously improve their skillsets. Projects will always tend to have a combination of difficulty levels of the work to be performed, so the team will be able to collaboratively work together to complete all work utilizing the varying levels and types of expertise available.

Another factor to consider relative to the team is their perspective on development. In the “software factory” model of development, teams are used to receiving precise specifications and requirements, and focus on coding and technology to meet these requirements. There are some teams that thrive in this kind of environment, and these types of developers could become less effective if given more latitude and responsibility for business problem solving. Other teams, however, may produce far superior results if given the opportunity to apply their full skillset to analyzing, solving, and implementing solutions based on a broader understanding of the end user’s need. If the later is the case, then the team will succeed with a more agile approach.


Trust in Teams
Do you trust your teams? The immediate answer to this question is generally, “Yes, of course – we wouldn’t have hired them if we didn’t trust them!” An organization should take a very critical approach to evaluating the true level of trust they have for their teams. A highly agile approach gives significant empowerment to the teams, and trusts the teams will perform at their highest level capacity when given more freedom and latitude. Further, agile empowers teams to make key decisions throughout the process that will directly impact the success, or failure, of the project. If an organization does not feel that they can stand behind the decisions made by their teams, or that the teams will not perform at optimal levels when left to their own self-organization, than a highly agile approach would not be appropriate.

An important is that a change to a more agile approach doesn’t mean the organization must start trusting its teams. As a subtle difference, the organization should focus on forming teams that it can trust, not simply instilling trust in existing teams. Strong teams are the foundation of the success of an agile approach, so it is critical that the teams be seeded with trusted, high performing team members. If the organization trusts the people going into the teams, then the organization will be able to trust the teams.


Conclusion
Determining the methodology for your organization is a major decision. Moving towards a more agile approach can be a lengthy and difficult change, but can yield great rewards. An organization should start with a thorough and honest evaluation of itself, including considering the above factors. With this insight, the organization can create a methodology that is tailored to gain the benefits from both the agile and waterfall worlds. This customized methodology allows you to find the optimal spot along the continuum where your organization will realize the greatest results.

No comments:

Post a Comment