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 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.
“Agile Development” is an umbrella term for a number of different iterative and incremental software development methodologies. The most popular Agile methodologies 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 (see the Agile Manifesto), they also each have their own unique approach to Agile development. 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.
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 them. Even today, the average 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 processes into their software development lifecycle, this trend appears to be changing for the better.
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 Waterfall development, where software was often delivered late and did not meet the needs of the users it was designed for.
Unlike Waterfall, Agile 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 development 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, Agile teams grew in size, products became more complex, and teams became more dispersed. This challenged the methodologies 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 of it were simply not scalable.
Soon, organizations saw the value that Agile achieved and felt pressured to further this success by increasing their software delivery velocity. Many teams began embracing 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 tightly aligned with downstream deliverables as products moved through the development lifecycle.
To expand their use of Agile and DevOps from simply tactical mechanics to strategic business integration, many began to incorporate Lean methodologies into 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 Enterprise Agile, it’s 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 systematized and accountable manner, and the full BizDevOps toolchain can be traced back to business-level priorities.