History of Agile
Agile Manifesto
In February of 2001, a group of seventeen people congregated at Snowbird ski resort to ski, relax, and align on what would be known as the Agile Manifesto. This document, signed by all seventeen that very same week, became symbolic of unity across all different Agile processes (Scrum, Extreme Programing, Crystal, and more). Friends or competitors in the software space came to common ground, agreed on verbiage, and developed the basis for modern day Agile.
The co-authors were friends and competitors within the software community, but they all could agree on one thing: Agile, if implemented appropriately, could aggressively move into the developing markets of the day—e-business, e-commerce, and web-based production. To do that however, they needed to bring together their unique experiences, across different Agile processes, to get to the core of Agile. By doing so, they envisioned a process which could identify and promote organizational models based on people, collaboration, and the building of working communities. In 2001 Agile had a small but loyal following, but the biggest obstacle was that it was a process often feared by corporate executives as it challenged traditional operational functions.
To this day, traditionalists have hesitations about Agile, but the resistance is not as stark as it was in 2001. The co-authors of the Manifesto believed in what they wrote, but they could never have believed it would blossom into the Agile Movement we have seen over the past few decades. Through the Values and Principles the co-authors developed, they created a springboard for every organization to consider Agile as a process for successful business.
Agile Values
The co-authors of the Manifesto developed four values that are internalized and serve as a guide to think and work in Agile. The concepts developed are not novel, but rather are starting points for teams to realize their unique version of corporate agility.
Individuals and Interactions
Over
Processes and Tools
People drive business value, while processes and tools only support them in doing so. Ensure your teams can succeed by prioritizing communication and fostering the one-team culture. Emphasize flexibility in lieu of rigid Agile structures, processes, or tools.
Working Software
Over
Comprehensive Documentation
Working products are the right products. Don’t avoid documentation altogether; rather, be smart by creating and using documents that help drive Agile’s underlying theme: get relevant and working products into the hands of the customer
Customer Collaboration
Over
Contract Negotiation
Teams and customers who collaborate are more likely to succeed. Rarely will an original contract define what a customer ultimately needs. As such, teams must work with their clients, communicating continuously and frequently to develop the product or service they want.
Responding to Change
Over
Following a Plan
The world is continuously changing; those who adapt alongside those changes will succeed. To follow suit, encourage flexibility and openness to change, and deliver the products and services that are relevant and work.
Principles
The co-authors developed the principles as actionable means to live out the four values. Each of the twelve principles can help gauge how Agile is being embraced across the enterprise. While it may appear there is some overlap, each principle targets and examines unique characteristics of an Agile way of working.
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Adapt and update products and services regularly, maintaining customers’ attention and consistently meeting new demands and expectations. By never being fully satisfied with a product, your enterprise can drive continuous value and improvements.
Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
Adapt your priorities to match changes in the market, customer preferences, or stakeholder priorities. Change is an opportunity to be better. This will maximize value to the customer, rather than deliver a product that falls short of expectations.
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Prioritize speed and frequency. Abandon long cycle times in favor of short time-boxed iterations. As the market changes at an ever-faster rate, the pressure to keep up with new trends and keep customers happy and loyal continues to mount.
Business people and developers must work together daily throughout the project.
Collaborate as a team and engage stakeholders to create a cohesive unit. Frequent and direct communication with stakeholders is key to understanding changing business needs, minimizing wasted effort on a product or service that is not aligned with expectations.
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
Motivate the team, by doing so it can inspire others to follow suit, contributing to the success of the initiative as a whole. Furthermore, it can enable autonomous teams, allowing them to focus on incremental product improvements, resulting in higher caliber products.
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Interact with your team in person, it is inherently stronger and more time-sensitive than non-face-to-face conversations. This allow individuals to assess body language, tone, and attitude, making it less likely that a message or conversation will be interpreted incorrectly.
Working software is the primary measure of progress.
Prioritize getting working products to customers. By not doing so, customers are unable to provide feedback if the product cannot be tested. Instead, by measuring delivery of functional and working products, you truly are able to evaluate your production success.
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Set a cadence and hold yourself and your team accountable for meeting it. Sustaining a predictable development pace will make you a reliable partner in the eyes of the customer, creating a stronger business relationship. Make sure goals are challenging, but achievable.
Continuous attention to technical excellence and good design enhances agility.
Strive for a robust portfolio of technical excellence, and understand the different ways and methods to solve problems. In doing so, teams will be able to pick and choose the method that satisfies the customers’ needs simply and efficiently.
Simplicity–the art of maximizing the amount of work not done–is essential.
Prioritize and deliver functionalities of your product or service that matter. Reduce time spent on non-value-add processes–excessive documentation, manual reporting, meetings–in favor of working products. Remember to “work smarter, not harder.”
The best architectures, requirements, and designs emerge from self-organizing teams.
Enable autonomous teams with a flatter organizational structure. Pushing decisions out to the entire team empowers everyone to collaborate and own the work. As such, team members will be more committed to spot issues and improve the work.
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Assess and continuously improve yourself and your teams. As change inevitably occurs, respond to it promptly. The number one mistake any team can make is to fail and not learn from the failure. In doing so, your teams will be empowered to improve incrementally.
Manifesto for Agile Software Development.” Manifesto for Agile Software
Development, February 13, 2001. https://agilemanifesto.org/