The success of an IT project depends on the approach you select when developing it. Companies that prefer conservative methods are more likely to fail.
The first reason is that they try to keep the project within boundaries agreed upon and avoid changes during the working process.
The second is centralized decision-making. Both make tasks slow and inflexible. Is there any alternative? Implementing lean software development (LSD) accelerates the achievement of goals set. In this article, we will look at the features of this approach and its benefits.
Key points at a glance: what is lean software development?
It is impossible to answer this question without mentioning lean manufacturing. Actually, if you understand one term, it will not be difficult to understand the second. The principles of this production model are the foundation of lean software development as they solve most related problems.
Experts believe that LSD philosophy is borrowed from manufacturing that has used “lean” methods to minimize waste and increase customer value.
The approach is considered an interpretation of the ideas of the Toyota system. In the middle of the 20th century, the company made great strides in rationalizing the production of cars with clever work on waste.
Waste here means any actions that turned out to be useless, that is, they did not affect production in any way. So the company managed to overtake leading competitors in the quality and price of manufactured vehicles.
How did the production model come to be applied to IT projects? In 2003, this topic was highlighted in Lean Software Development, a book that introduced the world to revolutionary techniques of creating software products.
Its authors actively participated in Agile conferences, so it is not surprising that the concept quickly gained publicity among the proponents of this approach.
Now let’s answer the main question: what is lean programming? It is a strategy of eliminating all useless things that slow down the work. This approach helps to avoid routine, speed up tasks, and increase team engagement. It provides developers with new opportunities with minimal effort, time, and money.
Arguments for lean software development (LSD):
- Do more tasks in less time.
- Streamlining development with a focus on priority functions.
- Elimination of unnecessary actions that slow down achieving goals.
- Fast decision-making and coordination of tasks and results.
Avoiding waste is an essential step towards Lean Thinking. This is the first of 7 principles in manufacturing or technology. Let’s consider each of them in more detail.
7 principles of lean software development
As mentioned above, waste (expenses, costs) is everything that does not affect the product positively and does not increase its value for the consumer. What waste can you face in development? To understand this, let’s consider the types of production waste formulated by Taiichi Ohno and adapt them for IT.
The parallel between production and development waste:
- Overproduction: making products in larger quantities than customers require.
Excess software functionality: oversaturation of the program with functions that the target audience does not need.
- Surplus stock: storing large quantities of raw materials or products in warehouses with minimal demand from customers.
Unfinished work: postponing tasks for later, incomplete code which is outdated and no longer useful.
- Unnecessary processing steps: performing additional steps that do not affect the overall result.
Additional iterations: inclusion of tasks with low priority in the ToR, rework.
- Waste Movements: The disorganized movement of personnel, materials, or equipment slows down production.
Search for information: a long-term collection of data that the customer did not provide.
- Defective products: release of goods that do not meet quality standards.
Unidentified bugs: software problems caused by bugs that were not found during testing.
- Pending Release: Exceeding deadlines due to unplanned equipment downtime.
Long decision making: slow internal and external communications, multitasking.
- Chaotic transportation: long-term transition of products from one production stage to another.
Complex project transfer: delegation of tasks and knowledge between teams and their members.
Ideally, the project team should eliminate all losses that harm the quality of the IT product and the speed of its delivery to the consumer.
For example, to avoid a jumble of features, you need to know what part of the developed product is the most valuable to the consumer. It is necessary to cover 80% of the client’s needs with functionality and then proceed to introduce new functions.
To speed up your work, you need to identify and fix bugs in time or even write code with minimum mistakes.
Gaining knowledge about the product, approaches, development methods and enhancing developers’ experience. However, sometimes even a detailed ToR does not guarantee the absence of troubles and risks, especially if it was made by a person who is far from programming.
To avoid surprises, the team must constantly be in touch with the customer and perform early testing.
To respond to changes timely (both in market trends and in the customer’s project plans), the team needs to have relevant experience, skills, and knowledge. For example, you may need to move to other technologies and methods.
For timely decision-making, it is recommended to divide the work into short cycles, that is, to use an iterative model. It allows using the Plan-Do-Check-Act method when the project remains “raw” during moving from the first to the second iteration (for example, from development to testing).
It is okay because the team is still training at the beginning of the work.
- Planning: setting goals and preparing the strategy to achieve them and meet the client’s needs, allocating available resources.
- Execution: implementation of tasks following the strategy.
- Verification: working with data and studying the results obtained during working, identifying deviations and reasons for them.
- Management: Eliminating the main reason for errors and making changes to plans and resources.
This technique allows the team to move forward. Further improvements can also be iterative if you provide refactoring. In general, learning from current projects increases the efficiency of future ones.
Planning is a critical stage that allows you to set the course for a project, assign tasks, and estimate costs. Management often requires performers to have a clear plan of activities.
Still, it does not always benefit the project: the regulation of each step complicates adaptation to changes and excludes the flexible approach. So, if you clearly understand what lean agile methodology is and its value, then planning is unnecessary for you.
The IT specialist must always be ready for the client to make changes to the strategy. They can be both small (interface changes) and large-scale (change of the concept of a complex module).
When a developer makes a global, irreversible decision, it changes the course of the project and, most importantly, does not allow further return to the starting point.
It is another lean software development principle, late decision-making. You should act as late as possible, e.g., when the team knows the project perfectly, all pros and cons are revealed, and the consequences and potential difficulties are considered.
To do this, you need facts at hand, not just predictions and assumptions, and use the experience gained during the work on the project.
Speed of product release is the basis of the iterative model. Timely feedback from the consumer and subsequent improvements affect how quickly the audience will see the result.
If you postpone the release for a long time, you can find yourself in a difficult situation: features that were in demand a month ago are not relevant today, which means you have to change everything.
Another essential point: focusing on speed should not sacrifice quality. Poor quality is worse than delay as it entails a lot of fixes and improvements.
Only a motivated team can find a balance between the promptness of delivery and decent outcomes. A professional team will make decisions independently without instructions from management.
Following predefined standards and specifications will ensure the best results. At the same time, you should not get carried away with plans and regulations to keep flexibility.
Respect for Employees
Most companies use a traditional approach to decision-making in which managers tell performers how to do their jobs.
However, in some cases, management has too little understanding of the specifics of the project and the requirements for it, so their opinion can affect the work and reduce the product quality. A good example is the story of the programmer Joel Spolsky.
After graduating from college, he was employed at Microsoft, where he had the task of developing a macro language strategy for Excel using the Basic language. Spolski developed specifications following the requirements and preferences of users.
But he realized that no one adheres to his specifications. The reason was simple: more experienced colleagues did not want to reckon with the newcomer’s opinion. Later, it turned out that Spolsky’s strategy actually worked, and the team was incompetent on many issues.
So, respect for employees plays a significant role in lean development methodology when people are not considered a resource. The main thing is to evaluate solutions in terms of their usefulness, not experience, age, and merit.
Each specialist must feel free to express thoughts, defend the ideas, and be trusted. It is enough for the management to set goals and desired results, and then identify and eliminate errors and encourage achievements.
Striving for integrity
It is a popular practice to consider a complex, large-scale phenomenon as a collection of smaller and simpler ones. It seems that dividing the problem into parts and consistently eliminating its reasons will help fix the situation.
But often, it slows down the work, forces you to spend a lot of resources, and, finally, does not lead to achieving a goal. Evaluating the elements individually does not provide an overview of the process or identify all problem areas.
The LSD concept offers the solution: ensuring the integrity of seeing the situation through standardization and establishing communications between developers.
Here personal contact and the constancy of the information flow (from the team to the client and vice versa) are appreciated. Furthermore, a holistic vision helps to improve understanding of the current process and strategy, as well as find a balance between all components of the system.
One of the optimization tools is the value stream map. It is a work schedule from the receiving technical assignment to transferring the finished solution to the client.
As you can see, the process begins and ends at the customer, passing through all the technological stages. Average due date is assigned for each step, allowing you to identify possible wasted time quickly.
It is the last principle, but not least. According to it, you can identify the problem after its occurrence or prevent its cause. Alas, the latter is not always possible, so experts recommend that you act immediately as soon as the problem arises.
It cannot be postponed until the testing phase. For example, Toyota uses the Stop-the-line method: if an obstacle arises, the plant stops the entire line until it is removed. Of course, it is more difficult to implement in IT, but possible
The idea is to make the functionality perfect and not return to it in 2-3 weeks and refine it in a hurry. The test-driven development (TDD) technique helps here since high quality is maintained throughout the development cycle.
It eliminates the need to quickly fix problems right before handover to the customer and release to market.
By following these principles, you will create an optimal working environment for the entire team, trust it to make decisions, and establish interactions with customers.
So, implementing lean software development can be the first step for your company to improve the quality of its products and strengthen your competitiveness in the market.