We were at a Product Camp Melbourne last week and the topic of “What is agile?” came up. It was fascinating to hear how people described agile approaches to software delivery. At the end of the session I mentioned a few resources that could help get oriented and decided to put them down in this post.
Agile aims to deliver valuable software through close collaboration between all members of the team and stakeholders, welcoming changes to requirements and frequent software releases. This approach means working software can be used much sooner, which reduced confusion around what was actually being delivered. It also emphasises the use of motivated and talented teams of individuals who focus on technical excellence and good design to enhance their agility.
All of these methodologies encompass similar values and are based around the 4 key pillars of the agile manifesto namely:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
They’re great ideals and the manifesto deliberately does not mention how to achieve these goals. In fact, the agile manifesto doesn’t mention anything about stand-ups, retros, velocity, cards, velocity, points or any of the other jargon you may have heard coming out of teams delivering in an agile manner.
The principles are a clear and cogent list of ideals followed by all agile teams. We’ve listed them below:
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- 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.
Some of the agile frameworks have been around prior to the agile manifesto and others have been created as a response to specific needs. The agile banner covers a number of frameworks, these include Scrum, XP, Lean, Kanban, Crystal, DSDM, Evo and others.
Scrum is a framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value – so the Scrum Guide says. Scrum is the most adopted framework and the Scrum Guide is the best place to start if you’re planning on using it.
Extreme Programming (XP)
Extreme Programming improves a software project in five essential ways; communication, simplicity, feedback, respect, and courage. Extreme Programmers constantly communicate with their customers and fellow programmers. They keep their design simple and clean. They get feedback by testing their software starting on day one. They deliver the system to the customers as early as possible and implement changes as suggested. The Extreme Programming site has more information.
Kanban is a lean approach to agile software development emphasising an incremental and evolutionary approach to improving processes which uses a visual process management system. The standard visualization technique is a “cards on a wall” approach. Wikipedia has an overview of Kanban, which should be read with Crisp’s Kanban overview.
Lean & Lean Startup
The core idea of “Lean” is to maximize customer value while minimizing waste. Simply, lean means creating more value for customers with fewer resources. Lean was born out of the manufacturing industry.
Lean Software Development originated in a book by Mary and Tom Poppendieck presenting the lean principles in a modified form with a set of tools and compares the tools to agile practices.
The Customer Development Methodology was created by Steve Blank detailing a scientific approach to improve software products by developing a better understanding of their consumers. This methodology is a cornerstone of the Lean Startup movement.
The Lean Startup from Eric Ries shows how product development cycles can be shortened by adopting business-hypothesis-driven experimentation, iterative product releases, and “validated learning”.
We’ve put together a list of agile books to help get you and your team up to speed.