Agile has gained an enormous amount of popularity in the world of software development over the last 12 years. There are a variety of methodologies that categorize themselves as "Agile" and a wealth of information available on the Internet through forums, blogs, articles, whitepapers and books (the digital variety, of course) on each one. There's even a career path dedicated to the "Agile" profession which includes titles such as Product Owner, Scrum Master, and a variety of flavors surrounding the coaching profession (Agile Coach, Enterprise Transformation Coach, etc.) At Summa, we have been helping our clients adopt Agile within their organizations and deliver high-value projects on time and within budget for over seven years.
So what is agile? What does it mean to "be agile?" And WHY is it so popular?
Overview of Agile
Agile is not a methodology, framework or process. Rather, think of it as an umbrella that covers a wide range of methodologies and frameworks, all of which are built upon a set of core value statements (like the Agile Manifesto) and principles. It is these core values which constitute the basic tenets of Agile and serve as the foundation for all methodologies and frameworks that label themselves as such.
There are a number of methodologies/frameworks that fall under the "Agile umbrella"; the most popular being Scrum (a framework) and Extreme Programming/XP (the methodology). This is where you get to the details of Agile: providing instruction on how to implement the concepts, identifying the roles and responsibilities for who does what, and laying out the practices that describe specific solutions to problems/challenges. These methodologies/frameworks provide contextual application of Agile's values and principles -- allowing you to easily receive the benefits from its practices.
Benefits of Agile
Lately, I’ve seen Agile mentioned in the news more and more – especially around how the healthcare.gov problems could have been avoided if they used these methodologies. So, why is Agile so popular?
Depending on how you search, you will find lists of the benefits which Agile can provide through the adoption of its values/principles. Below is a list of benefits that most experts (including myself) agree on:
- Increased business value and faster ROI
- Improved visibility and lower development costs
- Greater ability to respond to requested changes (adaptability)
- Decreased risk in solution delivery
While these benefits would certainly help an organization, are they enough to justify the widespread popularity of Agile?
I don’t think so.
An organization may be able to achieve all of the benefits of Agile through the use of mandated overtime, poor work conditions, deception and political maneuvering -- likely resulting in overly-stressed and unhappy employees. So while the desired business outcomes are there, at least temporarily, Agile's popularity exists at the worker level since the benefits and business gains are not at the expense of the workers. This balance promotes both team satisfaction and project longevity required for successful projects and organizations.
A key aspect of Agile is its focus on the main ingredient of software development: people. A phrase used to describe the people in software development that distinguishes it from other professions is "knowledge worker." A person who is a knowledge worker is not simply a vessel to store the accumulation of knowledge but rather they are ones that consume knowledge, internalize it and then transform it so that they produce additional/new knowledge. Agile introduces itself as an effective approach in engaging knowledge workers in an organization.
So, how does Agile engage and empower these “knowledge workers”?
Let's explore five ways the principles of Agile can achieve results within an organization:
1. Working Software: The completion of all tasks and activities that are needed to build and deploy the resulting product/service to a production environment. Working software is delivered at regular frequencies through iterations that initiate a cadence throughout the entire organization. The organization gains visibility into the true progress of what is being built while also having the flexibility to respond to the ever-changing market needs.
Benefit to organization: Reduced costs associated with long testing phases at the end of cycle and increased ability to respond to changing market deadlines with production-level quality.
2. Changing Requirements: By establishing a short, frequent delivery model, organizations can more quickly respond to customer feedback, changes in the marketplace or competitive activities without sacrificing quality. Work committed during an iteration becomes fixed to allow teams the focus required for writing maintainable, extensible, reusable and performant code.
Benefit to organization: Increased ability to realize new market opportunities with short windows.
3. Self-organizing Teams: The team manages the work amongst themselves: identifying/resolving dependencies, communicating progress, identifying and (where possible) removing obstacles, and assisting others where necessary to meet the goal. The team of developers are the most appropriate decision-makers in this regard since they have the most knowledge and insight into the true progress of an iteration, and so, they are responsible for coordinating activities.
Benefit to organization: Increased performance within teams and increased probability of hitting execution targets.
4. Technical Excellence: Teams dedicated to increasing the depth and breadth of their technical knowledge increase their capability to discover the threshold of each tool and technology. Knowing the limitations of a technology not only enables the discovery of issues before they reach the field, but increases the opportunity for uncovering innovative ways to address business functionality.
Benefit to organization: Increased quality and increased productivity.
5. Tunes and Adjusts: At the end of each iteration, time is set aside for the whole team to reflect on the activities that took place and how well the team performed against its goal (known as retrospectives). This gives the team the opportunity to identify an improvement that resulted from this reflection that they will then carry forward into the next iteration.
Benefit to organization: Increased improvement for operational opportunities.
How Agile Addresses Human Needs
Agile principles support recent scientific research in a number of ways. According to author Daniel Pink in his book Drive, there are three factors that motivate people:
Autonomy is achieved with self-organizing teams. Mastery is supported through both technical excellence and frequent delivery of working software (the more you practice something, the closer you come to mastering it). Purpose is realized through the face-to-face conversations between the business and technical folks to clarify why the solution is being built and who it is being built for -- all while incorporating customer feedback throughout the continuous agile delivery.
One thing to keep in mind about Agile, understanding the benefits at a conceptual level alone is not an indicator of being able to successfully implement an Agile methodology in an organization (not to mention transforming an organization to “be Agile”). In future posts, I’ll take a look at some of the significant challenges that most organizations face on their quest of Agile adoption and explore how applying Agile values and principles can help solve these challenges.
How has your experience with Agile been? Do you agree -- or disagree -- with the benefits or characteristics I’ve outlined? I’m interested in learning how and why Agile has been successful (or unsuccessful) in organizations.