From the course: DevOps Foundations: Lean and Agile

What is agile?

- Have you ever worked on a project where there was no plan, where it wasn't clear who was working on what and when you were going to be done, or how about one with a plan, but a rigid plan made so long ago that it doesn't seem to reflect the work you actually need to do and the time you need to do it? I've been there. But tech projects are complex. How can you plan and execute them effectively? - Agile software development is a way to manage the work of a group of professionals in an iterative and incremental way until it reaches its goal of creating working technology solutions. - The name Agile comes from the manifesto for Agile software development. In 2001, a small group of experienced developers got together to discuss approaches to managing software development projects. Their consensus was that development projects were failing far too often, and there had to be a better way. - They came up with the Agile Manifesto. It describes four important values that guide the principles of Agile development. These are individuals and interactions over tools and processes, working software over comprehensive documentation, customer collaboration over contract negotiation, and finally, responding to change over following a plan. - While the items on the right weren't bad, they found that the items on the left were more valuable in practice. - [Instructor] But what's the big deal, you might ask. What makes Agile different from other kinds of project planning or work management? - Before this point, traditional project planning for technology projects was very different. Projects were planned months or years in advance with a design handed off to developers and then code handed off to testers in a rigid sequential process. - [Instructor] We call this a waterfall development cycle because as all the work in one stage is completed, it then pours down to the next just like tiers of a waterfall. Collaboration between groups happens at the start of each handoff, but declines as each phase of the project progresses. - In the later stages, when the product owner gets an update and requests changes, they can be difficult to make. It changes the scope and affects the project timeline, even causing rework of those previously completed phases. This can cause friction between the groups involved and encourages legalistic following of the original plan and demanding negotiation to change it as if changes are some kind of failure. - So an Agile approach is deliberately more iterative. You deliver minimal but working software from the very beginning instead of a bunch of half working features that only work near the end of a project cycle. Then you deliver additional features in quick iterations, moving changes through the entire design, develop, test, and deliver cycles. This way, target dates aren't as critical, and the scope and dates can be easily tweaked up or down. As you learn more about what you're working on from seeing what's already completed in action, you can welcome changes as success, not failure. - Another key differentiator of Agile is collaboration. Frequent communication between all the different team members and external stakeholders during the entire project lifecycle allows the project to adapt efficiently to changes. - The development team can anticipate upcoming changes in scope, product owners can see iterative progress, and test and deployment teams are aware of what's coming up and can be better prepared. - Finally, because the entire team is working in sync, the overall status and risk of the project is known in a way that's impossible in traditional development processes. The developers on the team can raise concerns about complexity or issues with specific features to the product owners during the implementation phase, giving them the chance to revisit workflow and requirements. The added communication reduces risk and gives everyone further visibility into where features actually stand. - Now that you've gotten a quick primer of what Agile development is all about, let's go into its principles in depth.

Contents