Agile Development 101

You’re a busy person so we’ll cut right to the chase – if you want to be successful in IT today, you must know Agile development.

Aside from the fact that knowing Agile principles is good for your career, introducing Agile enterprise-wide allows your company to respond faster to fluctuating market conditions, improve overall organizational efficiency, and enhance customer satisfaction. Approaches that support greater agility can also result in bottom-line benefits such as new revenue streams and first-to-market positioning.

What is Agile Development?

“Agile Development Methodology” is an umbrella term for a number of different iterative and incremental software development methodologies. The most popular Agile models include Extreme Programming (XP), Scrum, Crystal, Dynamic Systems Development Method (DSDM), Lean Development, and Feature-Driven Development (FDD).

While all of these methodologies share a common vision and core values, they also each have their own unique approach to Agile development. In terms of 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 models, they are all lightweight and inherently adaptable.

More than anything else though, what makes an Agile transformation important and valuable is that it focuses on empowering people to collaborate and make decisions together quickly and effectively.

The Evolution of Agile Development

Although many of the Agile principles and practices have been around for years, the average software development team has yet to embrace many of them. Even today, the average team does not iterate and deliver software incrementally, do not practice continuous planning, nor automate things like testing or generating user stories. As more resources become available to help organizations better understand and adopt Agile processes in their software development life cycle, this trend appears to be changing for the better.

AGILE 1.0 – Agile in Siloed Teams (Agile vs Waterfall)

Agile development first began to gain attention back in the late 1990s. The methodologies used at this time emphasized the need for deeper collaboration between the development team and business stakeholders; frequent delivery of business value; small, self-organizing teams; and smarter ways to write, approve, and deliver code. In fact, these methodologies were originally developed as a way to eliminate the many inefficiencies of the Waterfall methodology, where software was often delivered late and did not meet the needs of the users it was designed for.

Unlike Waterfall, Agile models did a good job of delivering products on time because it was designed to keep the software development process moving. By requiring teams to build and release software incrementally from the start of the project, instead of trying to deliver everything at the end, it was an iterative approach that produced measurable results. It worked by breaking larger products down into smaller bits of user functionality, prioritizing them, and then continuously delivering them in short cycles.

Although this sounds much like the Agile methodology of today, the process was primarily manual. This Generation 1 version of Agile was typified by small teams huddled in a room using a whiteboard and sticky notes to plan their strategy and track progress. The product they were developing was usually quite straightforward and other teams were typically co-located.

Over time as Agile teams grew in size, products became more complex, and teams became more dispersed. This challenged the traditional Agile approach that had, to date, been so successful. Although there were no issues with the theory behind this early version of Agile, the manual processes used to manage the delivery were simply not scalable.

AGILE 2.0 – Enterprise Agile

Soon, organizations saw the value that Agile frameworks achieved and felt pressured to further this success by increasing their software delivery velocity. Many teams began to embrace DevOps and adopted Application Lifecycle Management tools to help speed up their development processes. Unfortunately, these teams and tools were still very siloed from the rest of the organization. This made it difficult for them to keep broader business objectives aligned with downstream deliverables as products moved through the development lifecycle.

To expand their use of Agile principles and DevOps from simply tactical mechanics to strategic business integration, many began to incorporate Lean methodologies in their process. The key ideas of Lean development are based on the principles of zero waste, total quality, system thinking, and delivering greater customer value. If you want a solution to be effective, you must look at the bigger picture and understand the high-level business objectives that individual products support – objectives that often cross multiple systems – to deliver a complete product to your customers.

Agile 2.0, or Enterprise Agile, combines the best ideas from Agile and Lean development to deliver the simplest and most powerful form of agility for software development and IT professionals. It integrates business alignment and market responsiveness directly into the process, moving from a DevOps cycle, to a BizDevOps cycle.

In an Enterprise Agile model, it is critical that the four upfront stages that form the Biz loop of the BizDevOps cycle – Adapt, Define, Align, and Approve – are automated. This ensures the rest of the cycle remains tightly aligned with business objectives in a systematic and accountable manner so the full BizDevOps toolchain can be traced back to business-level priorities.