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.
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.
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:
“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.
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.
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.
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.
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.
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.
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.
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.
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.
There are many frameworks on the market designed to build high-end web and mobile applications, but there are none more popular than React.js. In this article we’ll discover what React really is, why it commands such respect and popularity, along with the pros and cons of using it for your business. So let’s dive in!Read Article