What is Agile?

With agile methodologies having changed the face of software development, we examine the different definitions, how it has evolved and what the future holds

Scott Willson
Scott Willson, December 22, 2016 11:30 am

"Agile" describes software development approaches aimed at faster delivery and higher quality. It stems from the creation of the Agile Manifesto in 2001, which was drafted with the intention of overhauling existing project management techniques. It is now the dominant method of development worldwide, and its principles permeate all aspects of IT, having undergone a number of evolutions since its creation.

The Agile Manifesto

The Agile Manifesto was created by a small number of software developers who had become disillusioned with the way that projects were being managed. They established four key values that serve as the founding tenets:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Twelve principles were subsequently developed to guide the software development process, all of which reflected the initially outlined proposition. The ultimate goal of the manifesto is, “The ability to create and respond to change in order to succeed in an uncertain and turbulent environment.”

What are Agile Characteristics and How has Agile Evolved?

According to the Oxford English Dictionary, agile development is characterized, “By the division of tasks into short phases of work and frequent reassessment and adaptation of plans.” In essence agile methodologies involve self-organized teams (of any size) focused on delivering rapid-fire iterations which are continually evaluated and will later form part of the whole release. This makes it possible to evaluate the success, or lack thereof, of any particular variable while being able to adapt or make modifications at very short notice.

Working towards ensuring a fast, high-quality release, agile development necessitates close collaboration and constant communication both internally, as well as with the customer or end-user. Going hand in hand with this notion is the fact that members of an agile team have significant amounts of freedom and that the typical hierarchical structure is essentially inverted in order to empower the developers. This enables the team to guide the development themselves. Often, agile teams will function without a project manager and delegate the responsibilities of project management throughout the team.

The continual communication and short feedback cycles also actively encourage an environment in which learning and the sharing of knowledge is fundamental. When implemented correctly, agile development should create an affable and relaxed working environment. Nonetheless, Agile methods are not always consistent and tend to vary slightly from project to project, taking several different guises including scrum, extreme programming, test-driven development and lean programming. These are essentially different adaptions of the original agile processes that are tailor-made for the specific demands of certain situations.

The Future is Continuous

The most recent innovation within the agile space is the notion of Continuous Delivery. This is built upon similar principles of increasing speed and quality while reducing costs and risk. It is often regarded as a natural evolution of agile development, taking it to its natural conclusion. As Forrester Research wrote, "If agile was the opening act, Continuous Delivery is the headliner."

A key distinction between the two is that Continuous Delivery, unlike agile, ensures the release is available at all times. It is not just about short development cycles, but rather building release-ready software. Continuous Delivery therefore relies on full automation, deploying every change to an application (code, configuration, environment settings or data) into every environment – including production and production-like environments – enabling a constant flow of updates and releases to the end-user.

This means all the new features, bug fixes and changes are captured in a deployment pipeline where they are visible to all subject matter experts involved in architecting, developing, building, testing, and supporting versioned releases, which increases collaboration. Additionally, Continuous Delivery improves feedback so problems are identified and addressed as early and quickly as possible. The software can be rapidly realigned depending on feedback, new business strategies and changing market conditions.

Importantly, this does not negate the Operations teams, who play a key role in defining a repeatable and safe deployment pipeline that enables the same automation mechanics to be used in all environments including production. Operations will also approve production releases, and ensure their stability and reliability by coordinating the contributing efforts of all pipeline SMEs.

Ultimately, accelerating change means that your company needs to be able to adapt, stay ahead of the competition and meet your users’ requirements. Agility, Continuous Delivery and automation make this possible for your organization.

New Call-to-action

3 Reasons Why DevOps Transformation Produces Happiness

Suggested resource

3 Reasons Why DevOps Transformation Produces Happiness

3 Reasons Why DevOps Transformation Produces Happiness

Disruptive DevOps transformation contains an inherent silver lining for those willing to embrace change

Agile
ARA
Digital Transformation
DevOps
Continuous Delivery
Back to the blog
Scott Willson

Scott Willson

Scott Willson is Product Marketing Director, Release Automation at Automic Software. He has over 20 years of technology experience that spans software development, pre-sales, post sales, and marketing. Scott is passionate about technology and helping business achieve value through technology and was leading DevOps at organizations before it was coined DevOps