An Agile Overview
Agile is a way to manage projects. It can be used for virtually anything, but it was founded in software development. This handbook focuses on agile for software development, but many of the principles can be expanded to other fields. Agile breaks down larger projects into small, manageable chunks called iterations. At the end of each iteration (which generally takes place over a consistent time interval), something of value is produced. The product produced during each iteration should be able to be put into the world to gain feedback from users or stakeholders. Unlike Waterfall project management, which is strictly sequenced: you don’t start design until research is done and you don’t start development until the designs are signed off on; agile has designers, developers, and business people working together simultaneously.
As made popular by the “Agile Manifesto”, agile values:
- Individuals and interactions over processes and tools.
- Working software over comprehensive documentation.
- Customer collaboration over contract negotiation.
- Responding to change over following a plan
Agile realizes that software (and marketing) projects are inherently unpredictable. Over the course of any project, there are likely to be changes. Be it market changes or feature changes as the product comes to life. Agile embraces this unpredictability. By breaking down projects into small chunks, it makes it easy to prioritize and add or drop features mid-project. Something that is impossible in traditional waterfall projects.
The 12 Principles
- Our highest priority is to satisfy the customer through the early and continuous delivery of valuable software.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference for the shorter timescale.
- Welcome changing requirements, even late in development. Agile’s processes harness change for the customer’s competitive advantage.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity — the art of maximizing the amount of work not done — is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
WHAT STANDS OUT
WHY AGILE ROCKS
SPEED TO MARKET
Agile lets you get your concept to your users as quickly as possible. During every sprint an agile project delivers something of value. At any point, you may determine you want to launch what has been delivered and start building a user base or testing your hypothesis.
Agile is based on accommodating change. Software projects consistently change. As a product comes to life or the market expands, you should be able to react and update the product accordingly. Agile also realizes that great ideas are bound to come mid-project and being locked into a scope doesn’t let you take advantage of these realizations.
Incremental releases means that the product can be used early in the process by stakeholders and users. This lets you identify issues and feature deficits early in the process. Being adaptable to change means it isn’t a problem to change the scope midway through the project, something that would be impossible in a waterfall style project.
Unlike a fixed budget project, agile is flexible with regard to scope. More often than not, our clients realize features they originally requested are no longer necessary. This allows them to launch sooner and pay less. Agile isn’t about paying a lot with uncertainty, it’s about paying for only what you need. Need to stick within a budget? No problem! We can rearrange the product backlog so that critical new features are implemented at the expense of less important features, not your budget.
Agile integrates testing throughout the process. Consistently delivering tested software means higher overall quality and less time spent on QAing the full application.
Incremental releases let you test your product early and often. Even if you don’t release it to the public, it’s much easier to locate flaws and things that can be improved when you have an actual product to play with vs a series of designs.
Agile lets you see, feel and use a project consistently throughout the project. You don’t see things in compartmentalized silos; you see how things work together.
“I’ve never used agile before and I’m scared it will be too hard to get my whole team on board with it.”
We’ve heard it before. Too many times. And we realize agile may be new to you and your company. But while it might take a slight rewiring of how stakeholders think about projects from the onset– and how designers and developers are used to working at your firm– it quickly becomes apparent that projects consistently run smoother on agile. And better results are produced.
Plus, you likely can admit that waterfall isn’t the perfect process. While it might feel like it is more under control because everything is mapped out from the beginning, projects undoubtedly take longer than they need to and cost more than they should. Waterfall also doesn’t allow the flexibility to change things mid-project as new insights come to life.
“I have a fixed budget. That doesn’t work with Agile!”
Au contraire! Nothing about agile says it can’t meet a strict budget. Agile gives you dedicated resources. Generally, there is a fixed cost to a sprint that includes X team members. An agile team can estimate approximately how long it will take to complete the goals that you have outlined and that will give you a budget. As the project evolves and you choose to add a new feature, agile lets you drop a similarly sized feature so that you can stick to the initial budget.
Agile can be unpredictable. But all projects are unpredictable. It is impossible to know exactly what your end users want. Agile embraces this unpredictability and leverages it to produce better results.
DEVELOPERS MAKE ALL THE FEATURES
Another common misconception of agile is that the developers get to choose what is important and what is implemented when. That could not be further from the truth. Before each sprint begins there is a comprehensive sprint planning meeting where all the key stakeholders determine which features will be implemented in that sprint. This meeting includes developers, designers, business people and anyone else involved in the product. Not just developers determining what to build willy-nilly.
HOW AGILE WORKS