Agile Development 101

New to Agile software development? Just brushing up on your Agile knowledge? You've come to the right place.

“Agile Development” is an umbrella term for a number of different iterative and incremental software development methodologies.

Although many of the principles and practices of Agile development have been around for years, the average software development team has yet to embrace many of these. Even today, the average software team does not iterate and deliver software incrementally, it does not practice continuous planning, nor does it automate things like user story generation or testing. As more resources become available to help organizations understand and adopt Agile development, the trend appears to be rapidly changing for the better, especially during the last several years.

While all Agile methodologies share a common vision and core values, they also each have their own unique approach to Agile development.

The most popular Agile methodologies include Scrum, Extreme Programming (XP), Lean and Kanban development, Crystal, Dynamic Systems Development Method (DSDM), and Feature-Driven Development (FDD).

In terms of their commonalities, they all fundamentally incorporate iteration - and the continuous feedback it provides - to refine and deliver a successful product. They also all involve continuous planning, continuous testing, and the continuous integration of both the project and the software. Compared to traditional waterfall-style processes, they are all lightweight and inherently adaptable.

More than anything else though, what is most important and valuable about Agile development methods is that they focus on empowering people to collaborate and make decisions together quickly and effectively.

Agile development methods grew out of the real-life experiences of software professionals who were tired of the challenges and limitations of traditional waterfall development.

In its simplest form, Agile offers a lightweight framework for helping teams maintain a focus on the rapid delivery of business value (i.e., bang for the buck) amidst a constantly evolving functional and technical landscape. As a result of this focus, the benefits of Agile are that organizations are capable of significantly reducing the overall risk associated with software development and accelerate the delivery of initial business value.

However, there are a number of common challenges that prevent many teams from successfully scaling Agile processes out to the enterprise level. In a recent Forrester study, both large and small firms cited behavioral change, a lack of skilled product owners from the business side, and a lack of dedicated, cross-functional teams as the top 3 barriers to Agile adoption.

Advancements in Agile culture and methods over the last decade have exposed the need for a more holistic approach to the end-to-end software delivery lifecycle. Enter the DevOps movement.

At its core, DevOps is a software engineering culture and practice that aims at unifying software development and software operations methodologies. It asks the Operations teams to be part of the Agile development lifecycle.

The DevOps culture is reinforced by the practices it borrows from Agile and Lean principles, with an added focus on service and quality. By designing, building, testing, deploying, managing, and operating applications and systems faster and more reliably, DevOps practitioners create greater value for customers - which translates into a profitable competitive advantage for them - and foster a manageable delivery schedule that places people over product.

Although DevOps has helped to accelerated Agile adoption, many teams find that scaling vertically and horizontally remains the biggest obstacle. This is primarily because they’re unable to reconcile differences between traditional development and Agile development worlds and, more specifically, the people who live in them.

In order to successfully reconcile these differences and scale Agile principles to multiple teams and stakeholders, while ensuring broader business objectives stay tightly aligned with downstream deliverables, organizations should follow these seven best practice steps:

1. Get everyone on board
2. Adopt a Lean-Agile framework to scale
3. Organize in cross-functional teams
4. Apply Agile practices both upstream and downstream
5. Implement continuous testing
6. Support large-scale continuous and incremental delivery
7. Adopt the necessary tools to scale