Improving Product vs Improving Processes. Agile, Lean, and Lean-Agile Compared
The diverse nature of modern software products resulted in dozens of ways of building them. This rule applies not only to libraries and frameworks but also to the methodologies determining the path an application comes from an idea to a ready-to-use solution. Nobody’s surprised anymore when developers create new frameworks for solving minor problems specific to a given project or type of products this or that company builds. There is a certain degree of freedom in choice of bricks that will become a solid foundation for the future app. However, it’s important to ensure that all team members follow the same method of putting them together.
Today, among the most popular approaches that development companies apply, we can note Agile and Lean. Despite different backgrounds and origins, these methodologies are equally well used for improving the process of software development. Both Lean and Agile have some similarities, which sometimes make it uneasy to determine which of them will better fit a specific project. Today, we’ll consider their salient features to understand when you should use one or the other. Also, we’ll see if there’s a way to fuse Lean and Agile together to multiply their superpowers.
A Brief Introduction to Agile and Lean
Twelve Principles That Make a Difference
There’s no shortage of articles describing the basics of using Agile in software development, so we won’t dive too deep into this topic. Instead, let’s outline the major principles that made it so widely accepted.
Agile was initially designed to improve the process of building top-notch software products. At the beginning, when the Agile manifesto was published, it was nothing more than 12 simple principles to follow. Over the years of evolution, a set of seemingly simple ideas has turned into a plethora of different techniques, allowing teams to comply with these principles better. The most popular of them, as you probably know, is Scrum.
Long story short, Agile offers to make more emphasis on interactions, collaboration, and frequent deliveries of usable products. In practice, it means, for example, that interaction and collaboration between the development team and a customer must become the cornerstone during the entire process.
Let’s suppose you have a noodle delivery company and business is not going as well as you would like. In this case, business analysts will try to understand your company’s weak points and offer potential solutions. A neat mobile app that allows customers to make orders online, compose the meals of their dreams, and receive personalized discount offers can be a good starting point. After the development of such a product begins, you won’t be excluded from the process. Contrariwise, all intermediate versions of the product will be demonstrated to you with one major purpose: to receive your feedback and adjust the process accordingly.
From Toyota Factories to the Offices of Software Developers
Now, let’s look at Lean. Unlike Agile, this method wasn’t initially developed for building software products. Formerly known as “Lean Manufacturing” it appeared in the post WWII world. In the 1950s, the Toyota company developed this approach to, among other things, get rid of a superfluous inventory of raw material as one of the seven wastes harming the business.
Years have passed, and nowadays the principles that this approach describes are successfully used by custom software development companies. Needless to say that there’s no need for such companies to take care of reducing waste, such as scrap metal or rubber. However, it perfectly fits where you want to eliminate some aspects of engineering that don’t invest in the overall quality of a product.
There’s a lot of things you can consider waste in the IT industry. For example, some product features require time and effort from the team but don’t add value. Say, implementing eye-catching animations in a medical waste management application is a pointless task. You can easily name tons of other examples of features that fit well for one application and have no value for the other. Detecting such features and getting rid of them is one of the major goals.
One of the principles that Lean follows has an exotic name: Kaizen. In a manner, it contradicts one of the monumental rules of software development: if it works, don’t touch it. In its pursuit of perfection, it offers not to use the same methods of achieving the goal every time and find the ways of optimization instead.
Also, Lean doesn’t prescribe how the process of product creation should be carried out. Contrariwise, according to this approach, workers (in this case, developers) can determine the better way of building a specific product part. Managers, in their turn, must trust such decisions.
In some sense, this methodology may seem indistinguishable from Agile. Both of them prioritize human interaction and constant learning. Also, both approaches offer some rules following which can help you eventually increase the overall product quality. To help you better understand in which scenarios you should prefer Lean or Agile, let’s consider their main difference.
Making The Right Choice
Both Agile and Lean can become a good means of improving the development process, leading to better software products. The thing is that they focus on different aspects. Therefore, you must compare the challenges you try to overcome with core values that these approaches have to understand which one will better suit your needs.
The first distinguishing aspect you should keep in mind is that Agile focuses on delivering a high-quality product, while Lean’s main purpose is to improve the processes involved in creating this product. Applying Agile can be a decent decision for those whose work involves too many unknown variables. It focuses on the product as the main outcome, and all involved processes should turn the initial idea into the perfect set of requirements. If product requirements are not very clear at the beginning of the process, this flexibility can come to hand.
Lean better works with repetitive processes which outcomes you can predict. Their improvement makes the final product better from this standpoint. It’s important to note that in this case improvements may have a different nature. For example, imagine that you want to build an app that shows outstanding performance. Unlike Agile, Lean focuses on Value in the first place and improves processes to reach the desired goals. That’s why, if you use this approach, you can build apps as fast as a shark and also deliver them faster thanks to eliminating idle time among other wastes. Consequently, such an approach allows cutting costs, which is not considered a goal in case of Agile.
With this info, it’ll be easier for you to understand which of these approaches will guarantee the better outcome for your product. But there’s a question that may appear in one’s head while reading about the differences between Agile and Lean. Do I really have to choose only one of them? Fortunately, no. Agile and Lean can coexist within the same development team. This approach is called Lean-Agile.
How Lean-Agile Works
Lean and Agile serve the same goal, but they do it differently. Therefore, merging them both together won’t cause any conflicts in most cases. The whole Lean-Agile thing can be described as a three-layered cake where you combine Lean principles adapted to the need of software development, Agile practices included into the project management process, and a bunch of tech practices, such as test-driven development.
What part of the process is Lean responsible for in this scenario, you may ask. Well, besides eliminating the waste, which has been discussed in the previous section, it implies that the team won’t rush with making decisions and decide as late as possible. For example, if some requirements are unclear, there’s no need to speculate and choose a specific framework or language before some actual information appears. Also, it’s essential to deliver fast, empower the team, and view the project as a whole from time to time.
Agile works on the second layer and allows elimination of even more waste, which invests in the product value. Say, what can be more wasteful than trying to predict all requirements that may or may not appear during the development process. If you follow the Waterfall model, you can only move forward and there’s no chance you can revisit some of the previous stages. Because of this reason, you can not recast some parts of the project in the future and must plan all requirements once and for all. Agile offers an iterative model of product development that allows to avoid described situations.
Customer satisfaction matters for every business. Whether you sell sandwiches or build airliners for transatlantic flights, you want your customers to be satisfied and return to you over and over again. Sometimes the clientele is picky and its needs always change. That’s why it’s important to follow the principles that help to optimize your processes and build a top quality product in no time instead of trying to satisfy the current interests of the public. Agile and Lean, or some kind of their combination, can help you achieve necessary flexibility and ensure that you don’t waste effort while creating a software product.
If you’re looking for a reliable software developer that knows how to get the most out of Agile and Lean, please contact us.