Agile vs. lean

You either choose an agile or lean methodology. At least that is how most people seem to think. But the truth is that agile and lean stem from the same philosophy. The real question is not which one to follow, but how you can incorporate ideas from both to optimize development practices and workflows.

Let's start with quick definitions of each approach. Agile software development promotes adaptive planning and continuous delivery. The goal is to deliver value incrementally through frequent release cycles. Agile itself is not a methodology — rather, the term refers to various methodologies and frameworks that encourage teams to work in short increments.

Lean software development is one of those agile frameworks — it falls under the agile umbrella. While lean has its roots in manufacturing, it has more recently become associated with software development. Teams operating with a lean approach optimize workflows to eliminate wasted time and resources. The goal is to deliver a Minimum Viable Product (MVP), collect feedback from customers, and then iterate based on that feedback. (And if you want to go beyond delivering the bare minimum, consider shifting from MVP to MLP — Minimum Lovable Product.)

Since lean is a subset of agile, they share similar values and principles. But how do you know which approach is best for your organization and team? There is no simple answer. Explore the principles and practices associated with each and adapt based on your unique situation.

This guide will help you answer the following questions:

Structure and streamline development work

What is agile software development?

Agile is an approach, not a set of prescribed tasks or workflows. If you want to quickly respond to dev requests, continuously improve how you get work done, and remove hurdles that might trip up individual team members, an agile approach might be right for you.

The principles at the core of agile development are a direct response to single-pass software development methodologies. In single-pass systems, requirements are defined at the start of the development process and projects are completed in sequential phases. (Think waterfall.) Some developers find major flaws in this approach — it feels too rigid and can leave teams vulnerable to failure if requirements change midway through a project.

So in 2001, a group of developers came together and drafted the Agile Manifesto. They wanted to spark a revolution — introduce a whole new way of thinking about software development. The Manifesto speaks of flexible planning, efficient communication, short development cycles, and the importance of centering on customer feedback.

The agile philosophy is framed by four main values that highlight how agile teams prioritize work:

  1. Individuals and interactions over processes and tools

  2. Working software over comprehensive documentation

  3. Customer collaboration over contract negotiation

  4. Responding to change over following a plan

Keep these values in mind as we discuss lean development. You will likely begin to see how the two approaches are interrelated, stemming from the same fundamental goal of increasing customer satisfaction through efficient software delivery.

Related guides:

What is lean software development?

Lean software development can be traced back to the 1950s. Toyota wanted to revamp the process of manufacturing cars — streamline production from the boardroom to the manufacturing floor. Instead of creating product in bulk and hoping that people would want to buy it, Toyota flipped the script and started creating the product in direct response to customer demand. The focus was on identifying bottlenecks, ensuring quality along every step of production, and eliminating any waste in processes or materials.

So how does this relate to modern lean software development? In 2003, Mary and Tom Poppendieck published the book Lean Software Development: An Agile Toolkit. The book translated the Toyota model of lean manufacturing into principles and practices for software development teams.

Take bottlenecks. In the original lean manufacturing model, a bottleneck might be resolved by establishing routine preventative maintenance for a piece of equipment. In lean software development, the bottleneck is more likely to do with task management and hand offs between teams — your development team completes ten new features, but your quality assurance (QA) team only has the capacity to review two. Taking a lean approach will help you spot bottlenecks and then adjust workloads and team capacity accordingly.

Or consider employee management. Toyota took their lean principles and determined that people on the factory floor should define how their work got done. For example, each employee had the power to pause production if they spotted a potential problem to keep minor issues from ballooning into major roadblocks. In software development, this could look like team members spotting a bug and pausing deployment to fix the code — without necessarily getting approval from a manager first.

Lean has inspired several other methodologies including Total Quality Management, Six Sigma, and Theory of Constraints. Each of these aims to create more efficient, reliable production processes. Ultimately, lean helps teams achieve the agile goal of delivering more functionality in less time.

What are lean and agile principles?

Agile and lean continue to become more and more popular. Understanding the ideas behind each will help you successfully navigate the development environment regardless of which approach your team currently takes. Let's take a closer look at the main principles guiding agile and lean and how they compare.

Agile principles

The Agile Manifesto outlines 12 main principles to guide agile teams. They address how to prioritize work, incorporate feedback, create sustainable processes, and work together as a team. Those principles are:

  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.

  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

  4. Business people and developers must work together daily throughout the project.

  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

  6. The most efficient and effective method of conveying information to and within the development team is face-to-face conversation.

  7. Working software is the primary measure of progress.

  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

  9. Continuous attention to technical excellence and good design enhances agility.

  10. Simplicity — the art of maximizing the amount of work not done — is essential.

  11. The best architectures, requirements, and designs emerge from self-organizing teams.

  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Related guides:

Lean principles

You will find that lean principles focus on similar concepts. They reflect how agile developers have taken lean manufacturing best practices and translated them for software development. Each principle echoes agile approaches to streamlining your work and collaborating as a team. The seven lean principles are:

  1. Eliminate waste: If something (i.e. a meeting, task, or process) does not add value, find a way to cut it from your workflow.

  2. Ensure quality: Build quality checks into each stage of your development process through frequent testing, incremental development, constant feedback, and automation.

  3. Create knowledge: Maintain thorough documentation of team processes and past work so no learning is lost. This can be done through formal documentation, wiki sites, knowledge sharing sessions, and ongoing training.

  4. Defer commitment: Rather than making decisions about things months in advance, constantly gather information so you can make informed decisions as you go.

  5. Deliver fast: Get your product to market quickly by releasing your MVP and then improve features and functionality based on customer feedback.

  6. Respect people: Build healthy teams by encouraging open communication, working through problems as a team, and creating an environment of support.

  7. Optimize the whole: Think of your work and your team as an integrated, interconnected system. This means taking a big picture view to identify bottlenecks, always keeping team capacity in mind as you assess upcoming work, and carefully considering the downstream impact of decisions you make today.

How do agile vs. lean compare?

The main difference between agile and lean is simply that agile optimizes development processes while lean has traditionally been related to optimizing production processes. However, that difference fades away in light of how modern teams have applied lean principles to development work too.

Consider how lean prioritizes a continuous flow of work free of waste and bottlenecks. This translates nicely into the "continuous everything" approach practiced by many DevOps teams. When testing and deployment include as much useful automation as possible, things flow smoother. There is less room for error and less need to go back and fix mistakes.

Let's take a closer look at some of the overlaps between agile and lean:

Area of overlap between agile and lean

Description

Fast delivery

Both agile and lean prioritize delivering value to customers as quickly as possible by:

  • Breaking work down into small batches (ex. sprints)

  • Delivering incremental value

  • Providing consistent updates to customers

  • Incorporating customer feedback

Continuous improvement

Both agile and lean promote continuous improvement of day-to-day development work processes by:

  • Identifying bottlenecks

  • Optimizing workflows to drive efficiency

  • Adopting work management methodologies (i.e. kaizen in lean and scrum in agile)

Teamwork

Both agile and lean move beyond task management and focus on a people-centered approach to software development by:

  • Facilitating collaboration

  • Establishing relationships of trust

  • Empowering teams with increased autonomy


The overlap between agile and lean is so extensive that many teams already operate under a blended approach. Here are two examples of how they can merge:

  • Scaled Agile Framework (SAFe®): Brings in values of both agile and lean and applies them to large organizations. For example, SAFe® teams might use kanban (a lean workflow organization system) to create systems at different levels of the organization while also supporting agile approaches through program increments and scrum at the team level.

  • Lean-Agile Mindset: Combines agile and lean to enhance business agility. The main pillars of the Lean-Agile Mindset reflect both approaches — respect for people and cultures, continuous flow of work, innovation, and relentless improvement.

Related: What is the Scaled Agile Framework (SAFe®)?

When should you use agile vs lean?

At the end of the day, the strategy underlying your processes is really what will guide your team to success. Without a goal-first approach, you could apply all the practices and rituals you like without getting any closer to achieving your goals.

The decision to use agile vs. lean is not about choosing one philosophy over the other. After all, lean development stems from agile — they share common roots. Rather than thinking about it as going all in with one or the other, explore both philosophies and take what works for your team.

Agile teams need the right agile development tools. Try Aha! Develop free for 30 days.