Lean Software Development

The world of software development is full of trendy methodologies that offer to transform the way you work, bringing you greater efficiency and higher-quality products. One of the most influential philosophies in this “agile wave” has been lean software development.

If you’re confused about lean or you need a quick introduction, you’re not the only one. Unlike many other methodologies, lean has been around for decades, although not always in the context of software development. Here’s a quick overview of the principles of lean and how businesses put it into practice today.

What is Lean Software Development?

Lean software development is an adaptation of the principles of the lean methodology as they apply to the field of software development. Although the ideas behind lean have been present since the early 20th century, the methodology as we know it today has its roots in the Toyota Production System of the 1970s, a system developed by Taiichi Ohno at Toyota that transformed the company into a worldwide automobile manufacturing powerhouse.

The term “lean software development” originates from the title of a 2003 book by Mary and Tom Poppendieck, who have done much to promote lean within the agile software development community. Although lean is closely affiliated with agile, however, and shares many of its underlying concepts, the two methodologies are distinct, as we’ll see in the next section.

The 7 Principles of Lean Software Development

Lean software development is founded on seven principles, which were originally used in the manufacturing industry but which are equally relevant for developing software. The seven principles are:

1.Eliminate Waste

“Waste” refers to anything that does not directly add value to the final product. In software development, common sources of waste include unnecessary features or code, partially finished work, changes in requirements, delays in testing and bug fixing, overlapping responsibilities, and the failure to meet customers’ expectations.

2.Build Quality In

Lean principles are opposed to the traditional waterfall software development model, which mandates that testing is performed only after coding is complete. Instead, lean encourages developers to prevent defects in the first place, and to inspect the software at regular intervals in order to find any defects that have slipped through the cracks.

3.Create Knowledge

Another conflict between waterfall and lean is lean’s focus on evolution and learning rather than adhering to rigid requirements, which are likely to change and don’t incorporate comments from users and key stakeholders. Developers should anticipate complexity and changes, emphasize the value of feedback, and frequently analyze their own processes to learn how they can do better.

4.Defer Commitment

Like agile, lean prefers flexibility and keeping your options open. Practitioners of lean should delay making irreversible decisions for as long as possible—and not one moment longer. However, it’s just as important to make as many decisions reversible as possible, so that teams can avoid committing to a critical design decision that turns out to be a mistake.

5.Deliver Fast

Speed is a major factor for organizations who want to abide by the previous four principles. Teams that move quicker can avoid waste, find defects faster, get more feedback, and delay decisions for longer. Companies that leverage time as a competitive advantage are often those who excel in their industries.

6.Respect People

Although this principle sounds like common sense, it’s often easier said than done in the workplace. Respecting people is about having good leaders who inspire smart, technically minded team members to work under them. It also means empowering people with appropriate responsibilities and giving them the power to think and act for themselves.

7.Optimize the Whole

Lean organizations focus on the big picture—their entire value stream—rather than emphasizing a particular team or a quick fix that ends up backfiring. For example, in their rush to introduce a new critical feature, developers may inadvertently insert new bugs into the code base, creating more work for everyone later on.

How Lean Software Development Works in Practice

Although it clearly defines the seven principles above, lean software development does not prescribe any processes that must be followed in order for an organization to become lean. However, a number of common practices have emerged from lean organizations, many of which are also used in other agile methodologies.

Standup meetings: Development teams meet daily in order to talk about their progress and suggest solutions to bugs, delays, or blocked flow. Recurring or serious issues may be discussed after the meeting by a smaller team and may result in a change to processes or tools.

Automation: In order to move at a higher speed and reduce the risk of defects, automation is a crucial part of many organizations’ lean strategies. Automation can be used in testing, deployment, and code generation, among other areas.

Small batches: Lean requires work to be completed in “bite-size” pieces, a concept often referred to as “one-piece flow.” Features and bugs are tackled one at a time, requiring repeated releases and interactions with the business team in order to find new work.

Kanban: A closely related practice to lean, kanban uses a system of cards on a board to visualize the current state of the project’s workflow. New cards (representing new work) are added to the board only when there is room for them.

The Benefits of Lean Software Development

Organizations from tiny startups to massive Fortune 500 firms, including lean’s original birthplace of Toyota, have all used lean software development in order to deliver value and promote efficiency. Lean methods have won many converts for their advantages across the board. According to a report by consulting firm McKinsey, switching to lean software development can increase productivity by 20 to 40 percent within an organization, as well as lead to noticeable gains in quality and speed.

Lean offers insights for identifying waste in your processes and for finding and anticipating issues. Under lean, teams are given more autonomy, allowing them to experiment, learn, and work on self-improvement. Projects are more collaborative, bringing developers and business teams together more frequently and with greater impact. The reason why lean has become so popular may be simple: smart, talented people are attracted to lean, and in turn lean attracts smart, talented people.