Lean Software Development is an agile framework based on optimizing development time and resources, eliminating waste, and ultimately delivering only what the client needs in the resulting product. This article mentions some tips which if followed, can help your team and the customer in case your team works in an LSD method. The tips are woven based around the Lean Principles.
Tip 1 – Understand thoroughly what the Lean principles and practices are. And keep revisiting the concepts
As a team, learn the history behind how the Lean principles originated, and about Lean manufacturing while knowing what the Principles are. During the journey of Lean Software Development, keep a constant tag on whether your team is still a Lean method, or drifting away. Else, in a matter of time, the teams who labeled themselves as Lean after some time become not so Lean. The team needs to keep analyzing themselves to avoid this from happening. Keep revisiting the principles. Involve a Lean Coach as an integral part of the team who can train, and guide the team on concepts and benefits of this methodology. Also, the team needs to understand differences in concepts of Lean, Six Sigma, Kaizen, Scrum methodologies. Else, teams can tend to move in an overlapped approach of all these concepts.
Tip 2 – Clearly understand how a purely iterative process looks. Clearly understand how a strictly incremental process looks. And next, clearly understand how an iterative – incremental approach looks
Observe the loops in the image below. Is it cyclical, or is there something more to it? Associate it with an iterative approach.
Next, observe what you do when you build the puzzle. Associate it with an incremental approach.
In the Lean methodology, you have to move towards an iterative – incremental approach. Slices the work into small bite-sized pieces called increments. Each increment should build upon the completed activities. The team may need to refine the tasks in a cycle, which is called an iteration. Successive refinement is the key.
Also, check for granularity and modularity in all parts of the system and process. For example, during the process of choosing an automation tool, check if it enables granularity in test suites, folders, etc., allowing the team to organize the code, promoting reuse, and encouraging quick revisits to the code blocks. Hence, each set of increments is coded, delivered, tested, and revisited. Tools such as TestProject, UFT, RFT, etc. support granularity.
Tip 3 – One of the principles of Lean is that we need to eliminate waste. Don’t get overwhelmed when you see waste in the system
Waste in the context of software development is “any effort that occurs in a project that doesn’t result in a benefit to the customer”. Understand that all waste is not that bad as you look at it, as long as you rise from it, and learn from it rapidly. You could use a cost-benefit analysis to support you and maintain a waste log to help you track. Remember not to panic when waste originates.
Waste may include work that was left partially done. Remember that such work will always get in the way of the other development efforts. Recognize those pieces of code that don’t get checked-in, integrated, tested, and deployed. Do not get into working on tasks that you may end up throwing off away in between. Understand the difference between whether the team is building the right product or versus building the product right. Imagine having to do something that the customer did not want to be functioning as, and the team having to redo it or remove it—an obvious waste of time. A high focus should be put on client validation and making it a successful product. Written documentation that will not be used by the customer is also waste. Also, Minimize task switching, and be alert to recognize it.
Tip 4 – Adapt to change, but be aware of the waste caused due to Task switching
Learn how to respond to customer demands in a Lean Way. In the move of being flexible to the client, task switching can happen. Do not react to every such demand that comes in. Build a system to balance these kinds of requests. It is essential to identify and pursue only those changes, which give a maximum improvement in the perceived value of the product.
In the Psychology point of view, task switching is expensive. Not only does it take more time to get tasks completed if you switch between functions, but also you tend to make errors in that process. Use the 80/20 rule — 20% of the work you do gives 80% of the impact and effectiveness. Hence, focus on identifying the 20% of your significant tasks, and do them one at a time. Visualize blocks of time, and concentrate well in those blocks.
Have a Lean Change Management in place, which is a detailed topic by itself.
Tip 5- Keep open collaboration and communication always running in your team
Having fruitful retrospectives can help the team in many ways, and eventually will help the customer as well. In a casual setup offline, Workshops can be arranged in the group to practice feedback.
During the discussions of “what did not go so well” discussions, communications can move into arguments. Hence, it is good to train and practice the team on how to engage in receiving and providing feedback in a healthy mode.
A Lean principle which mentions that “Decide as late as possible” should not be misunderstood that the team stops from collaborating early in the cycle! It just means that there should be enough flexibility in the system/process to be able to make decisions later in the project. Work towards an “amplify learning” concept eventually. The team ought to be able to gather business requirements quickly, and then make a decision, versus deciding early without all the information we need.
Also, by targeting shorter iterations, the better the learning and communication happens within the team.
Tip 6 – Deliver as fast as possible. However, don’t move to haste
Quick feedback should be a part of the process, and changes incorporated into future iterations. The speed also ensures that the customer gives their feedback and their urgent, top priority and present requirements are, rather than giving time to think which features may not be necessary until they gain better knowledge on what they want. Hence, the customer and the development team work towards working at the moment. Keep this quote in mind – “Less haste, more speed”! If you try to do things too quickly, it will take you longer in the end. Recognize the thin line between haste and speed.
Tip 7 – Keep trust as a base while empowering the team.As a leader, avoid micromanaging in the process
Trust is the base in any relationship – to believe in ourselves and others. Trust that you and your team are true to their work and deliverables, are reliable, and can complete the tasks in hand. As a leader, remember that one who does not trust, will not be trusted. When the leader trusts the team, for the decisions they take, the result is a set of motivated folks who will automatically build a high-quality product. Also to remove impediments that block them. A micromanaging attitude will only show adverse effects and a resulting low-quality product.
Tip 8 – Build Integrity IN
Conceptual integrity is related to the system’s internal architecture, and perceived integrity is associated with the customer-facing side. The separate components of the system should work well together as a whole with a balance between flexibility, maintainability, efficiency, and responsiveness. Understand the problem and parallelly solve them. Information is received in small blocks, and not at once, ideally as a face to face communication mode. During the process, the information flow should be constant in both directions – from customers to developers and then back. The client would want a 360 degrees experience of the system. They would want to observe how the product delivered looks like.the customer would want to know how a deployment looks like as well. The client also definitely would want to see how the end problem-solving product will be advertised and accessed by the users and processes.
One of the ways the team can improvise the perceived integrity is by engaging the client in incorporating user acceptance tests. And as per the feedback, the team should be able to respond to change, and hence maintain perceived integrity in the whole process.
Tip 9 – Optimize. Make use of tools that support you in the Lean way of working. There are plenty available!
Optimize everything in the system. Respect the people, build value, reduce waste, and keep improving. You could rely on the 5S method, which helps practically optimize the work environment. For example, in the case of the WIP list, quickly recognize any work piling up and causing bottlenecks. If it is, to work on ways to solve the problem soon. Also, organize as much as possible.
Explore the several tools that support the Lean way of working, and choose what works best for your team. Please explore the plethora of tools available which help Lean. An example is a KanBan tool. The goal of Kanban is to reduce waste. Kanban respects the fact of the reality that our brains can only work on one task at a time. Here, WIP limits represent the number of jobs being worked on by an individual or team at one time. Fix a WIP limit. After that, the group moves towards focussing more on their tasks in hand, one at a time, and allows the team to know their actual capacity. It also exposes the impediments and inefficient process. Also, it avoids the unit from being overburdened.
Similarly, there are several tools, namely the Poka-Yoke tool, Heijunka, etc. that the team can explore.
Tip 10 – Believe in the power of Lean Software development
Lean thinking has to be understood well by all members of a project before implementing in a concrete, real-life business problem. To work in a particular way, you need to start believing about the power of it. Keep staying together. Think towards an empowered goal, and if there are failures, rise from the failure, and learn quickly from the loss. Build a Lean culture as a mindset, and everything will fall in place!