Agile Methodology
Agile is an approach to software development that seeks the continuous delivery of working software created in rapid iterations.?
However, the phrase "agile methodology" is misleading because it implies that agile is a singular approach to software development. Agile is not a set of prescriptions for exactly which actions to take in software development. Instead, it is a way of thinking about collaboration and workflows and it is a set of values which guide our choices in regards to what we make and how we make it.
In practical terms, agile software development methodologies are all about delivering small pieces of working software quickly to improve customer satisfaction. These methodologies use adaptive approaches and teamwork to focus on continuous improvement. Usually, agile software development consists of small, self-organizing teams of software developers and business representatives regularly meeting in-person throughout the?software development life cycle. Agile favors a lightweight approach to software documentation and embraces—rather than resists—changes at any stage of the life cycle.
Agile values
Agile as we know it today traces its history to 2001. Reacting to waterfall approaches to project management, which organizes a software project as a series of linear sequences, a group of software developers penned The Manifesto for Agile Software Development. In this document the programmers proposed a new approach to software development and?described 4 key characteristics?that they believed should be valued over other concerns. As they put it, agile software development teams should value:
The authors clarify that all items on the above list do have some inherent value. However, they propose that valuing the items on the left (bolded) above those on the right can lead to better outcomes in product development. The agile manifesto does not set out to prescribe a set of practices; it is guidance for a new way of thinking about software development.
There have been many practical outcomes of the agile manifesto. For instance, instead of developing software sequentially from one phase to the next, which is how the waterfall method ensures product quality, an agile method can promote development and testing as concurrent and continuous processes. Put another way, waterfall development holds that an entire phase should be completed before moving on to the next, whereas agile supports multiple sequences happening at the same time.?
Where did agile come from?
Agile approaches to work were created to address the perceived limitations of the waterfall methodology, which was derived from the manufacturing method of Henry Ford’s 1913 assembly line and later applied to software development. Since its founding in 2001, agile development has flourished in the software industry and project management, though it has many variations.
Agile started when many software developers began noticing that the production cycles and collaboration methods of waterfall were not producing the desired results. This problem had become pervasive by the early 1990s, when it became common for a several years lag to persist between an organization's validated business need and the delivery of a working application. Business demands and markets could change enough during those years that large parts of software projects would be cancelled before they were ever delivered. This waste of time and resources led many software developers to seek an alternative.
Faced with the threat of disruption, organizations increasingly adopt?digital transformation?strategies to keep up with the accelerating pace of business. And when they do, agile software development frequently plays a role.
Agile forms the basis of many of today’s digital workflows.?Cloud computing, with its flexible, scalable, IT infrastructure, has grown up in parallel with the demands of agile software development.?Cloud-native development?embraces an agile-like notion of software as a series of interconnected services that scale to meet business needs.
DevOps?as a concept breaks down the old wall between software development and operations.?SRE?is an implementation of DevOps that uses software as a tool to manage systems and automate operations tasks.?CI/CD?methods accept that software will change continuously, and gives developers tools to accelerate the speed at which they can deploy new code.
By now you may have noticed that the concept of "agile methodology" is itself an agile idea, responding to the needs of its customers (that is, software developers) through changing times. Keep this in mind as we take a brief look at a variety of agile frameworks, which carry different names and often vary from one implementation to another.
Agile frameworks
Agile frameworks for software development—like Scrum, kanban, or extreme programming (XP)— form the basis for popular software development processes like?DevOps?and?continuous integration/continuous deployment?(CI/CD).
Scrum is perhaps the most popular agile framework in use today but not all agile is Scrum and, honestly, not all Scrum is agile. Scrum is a framework for managing work designed for small, cross-functional teams of 5 to 9 people who break their work into actions that can be completed within a consistent period of time called a sprint. Scrum teams consist of team members, a Scrum master, and a product owner. Typically, Scrum is implemented when a large project can be broken up into 2- to 4-week sprints. Scrum focuses on feedback loops through a ceremony called the "retrospective." The unofficial motto of Scrum could be "inspect and adapt."
Other agile frameworks, notably kanban, predate the agile manifesto. But these frameworks are considered to be agile because they promote the values outlined in the agile manifesto. There are too many agile frameworks and approaches to scaling agile to list all of them here
What are the 4 core values of Agile?
The?Agile Manifesto?outlines 4 Core Values and 12 Guiding Principles which serve as a North Star?for any team adopting an Agile methodology.?
领英推荐
The 4 Core Values of Agile are:
1. Individuals and interactions over processes and tools
As sophisticated as technology gets, the human element will always serve as an important role in any kind of project management. Relying too heavily on processes and tools results in an inability to adapt to changing circumstances.
2. Working software over comprehensive documentation
As important as documentation is, working software is more. This value is all about giving the developers exactly what they need to get the job done, without overloading them.?
3. Customer collaboration over contract negotiation
Your customers are one of your most powerful assets. Whether internal or external customers, involving them throughout the process can help to ensure that the end product meets their needs more effectively.
4. Responding to change over following a plan
This value is one of the biggest departures from traditional project management. Historically, change was seen as an expense, and one to be avoided. Agile allows for continuous change throughout the life of any given project. Each sprint provides an opportunity for review and course correction.?
What are the 12 principles of Agile?
Agile methodologies can be as diverse and unique as each individual team, but the 12 Principles of Agile should always guide your decisions and product development.
Agile team roles
Agile teams don’t all look alike. Agile team roles can vary between?Agile frameworks?like?Scrum?(where team roles are well-defined) and?Kanban?(where team roles are more fluid), and in different industries and departments. Here are some examples of common Agile team roles:
Often called?product owner?in?Agile development?and project owner in?Agile Marketing, this person is the assigned leader of the team. This position is typically filled by a leader already in the company such as a CMO, director, or manager. The project owner oversees the “what” of a project.?
Requestor/customer
A requestor is anyone requesting work from an Agile team. A requestor could be internal or external, an individual or a group. These people are stakeholders in the project requested of the Agile team.
Team member
A team member is any individual contributor to the Agile team. One person can be a team member on multiple Agile teams.
Scrum Master?(Scrum specific)
The?Scrum Master, a role specific to the Scrum methodology and sometimes included in the?hybrid methodology Scrumban, filters requests that come to the Agile team, manages the backlog, and facilitates all Scrum meetings. This role is not necessarily a leadership role. In fact, it can be a rotating role held by anyone on the Agile team. The Scrum Master handles the “how” of a project.