I remember learning about lean manufacturing at Toyota in an early middle school business class, and was endlessly fascinated by the idea of minimizing waste and maximizing productivity through intentional design. Over time, lean methodology was adopted by several industries, outside of manufacturing, including software development.
Lean software development places a few core principles into action to optimize productivity. Software development has several key features that make it the right process to apply lean methodology:
Lean software development is a model that values individuals over processes and interactions over tools. There are seven essential elements to actioning this process to work for your software development projects.
It’s in the name: lean development will eliminate anything that doesn’t add value.
Waste can be found in many areas:
Lean software development builds in quality. This is a disciplined practice. There are lean development processes that can improve quality.
Lean development was formed with the idea that valuable learning occurs during the build. This knowledge makes the team more capable since everyone now has access to knowledge which previously was only in a small number of peoples' brains. Also makes on-boarding easier and the team more resilient to the departure of team members. Team infrastructure can be enacted that identifies and documents this knowledge for long-term retention.
Some of those infrastructure elements include:
Some software development teams incorporate user stories into the knowledge base to inform best practice.
A lean approach to software development has short-term goals in mind. Through continuous data collection and intentional feedback, decisions are made only when all data points are intact. Once data is thoroughly understood, it can be included in planning. In essence, to defer commitment shifts the focus from long-range planning to what the current process is telling you. This is the most valuable information to be able to excel in the long run.
In conjunction with a focus on the here-and-now, lean software development favors efficiency. If you follow the principles, you should accelerate your processes. This is because you have reduced waste and eliminated barriers for your team. Progress can move forward faster when everyone has the right data, tools and crystal clear expectations. Blockers are consistently removed. Lean teams don’t work endlessly or over-engineer. Lean teams enact simple solutions, receive and incorporate feedback and keep moving forward.
When lean management first came to the forefront, its battle cry was “people over processes.” In recognition of the fact that real people do the real work, lean management honors the individuals. Respect is communicated with proactive communication, process improvement and even how a team handles conflict. A healthy work environment is key to achieving all of the other core tenets of a lean method.
Software development can fall prey to issues with speed or testing. Rushing leads to errors. Inadequate testing leads to a loss of things such as: bugs getting into production, unhappy customers, time and money spent for a fix, loss of revenue, hit to your brand, etc. To combat sub-optimization, lean development principles help lean organizations understand the downstream effect of each project. Value streams should be identified and optimized.
To truly become a lean team, you need to commit to all of these principles. You can’t have disengaged members or lone rangers who operate outside of the lean method. Once everyone is on board, you can activate this lean method with the help of software. There are software that allows you to facilitate lean software development, creating the right context for things like pair programming, team communication and planning agile sprints.
In closing, I would recommend taking a look at this video. It provides a simple overview of the lean process and what it looks like to implement in any industry.
Have you applied lean methodology to your programming methods or even in teams outside of software? Let me know your thoughts by commenting below!