What does it mean to be lean?
Lean is more of a philosophy than process. It is a set of principles targeted at eliminating waste. Wikipedias definition of Lean
Like Agile, Lean principles can be adopted by any software development team. The tools of Lean can help you visualize and understand your processes in order to identify waste.
Unlike Agile, Lean principles are more focused on eliminating the waste of time than on the outcomes of the software delivery, and therefore few elements of software development will have much impact on the value that lean principles bring to your team.
Why adopt Lean?
Teams learn and use lean principles to eliminate time wasted during software development.
Why not adopt Lean?
Like ‘agile’, there are few reasons to avoid lean principles. Perhaps the only reason to avoid learning lean principles is that your software solution is currently such a disaster you have no time to spend doing anything but fixing urgent problems.
How does your context affect the success you will have with Lean?
1. How does the Organizational Structure in your context impact the probability that you will have success with Lean?
Most development teams can probably gain some value from lean principles, therefore the organizational structure has little impact on your success with becoming lean. However, some of your lean discoveries may lead you to recognize that some forms of waste can only be eliminated of some of the non-development teams change their practices in ways to make development more efficient.
2. How does the Development Team Culture in your context impact the probability that you will have success with Lean?
Your team culture probably has little impact on the success your team has adopting lean principles, unless your team is very unhappy and resistant to change.
3. How does the Hiring Process in your context impact the probability that you will have success with Lean?
The hiring process in your company has no impact on the value Lean principles may bring to your team.
4. How does the Team Composition in your context impact the probability that you will have success with Lean?
Your team composition may have some impact on the value Lean principles may bring to your team. Experienced developers are more likely to identify the forms of waste within your processes, and thus more likely to use those insights to make improvements.
5. How does the Training Provided on Code in your context impact the probability that you will have success with Lean?
The training your company provides on code has little impact on the value Lean principles may bring to your team.
6. How does the Training Provided on ‘Our Ways of Doing Things’ in your context impact the probability that you will have success with Lean?
The training your company provides on your way of doing things may have some impact on the value Lean principles may bring to your team. Team members need to understand the reasons behind your processes in order to understand how they improve the process.
7. How does the Environment in your context impact the probability that you will have success with Lean?
The developer’s environment has little impact on the value Lean principles may bring to your team.
8. How does the Project Selection in your context impact the probability that you will have success with Lean?
How your organization selects project has little impact on the value Lean principles may bring to your team.
*9. How does the Solution Purpose in your context impact the probability that you will have success with Lean?
The solution purpose of your software has little impact on the value Lean principles may bring to your team, unless your team primarily creates prototypes, or you are doing research, or are generally developing solutions with very different tools, languages, and techniques. The value of lean is realized when you are doing something similar over and over.
10. How do the Application Architecture Priorities in your context impact the probability that you will have success with Lean?
The application architecture priorities have little impact on the value Lean principles may bring to your team.
11. How do the Security Demands in your context impact the probability that you will have success with Lean?
The security demands of your solution have little impact on the value Lean principles may bring to your team.
*12. How do the Requirements, Features, and Priorities in your context impact the probability that you will have success with Lean?
The way your team manages requirements, features, and priorities may have some impact on the value Lean principles may bring to your team. Lean can help your team uncover process changes to eliminate waste, and many of those changes may be required of the teams your developers work with, particulary product owners and I.T. Without changes made by these other departments, your team may be stuck with processes that waste your time.
13. How do the Regulations in your context impact the probability that you will have success with Lean?
Regulations and auditing requirements probably have little impact on the value Lean principles may bring to your team. However, some regulations and auditing requirements may be seen as a waste of time, and may even be a waste of time. You may be unable to do anything about an external regulation that causes a waste of your time, but hopefully, if you discover an internal auditing requirement is wasting your time, you can work with the auditing team to change the requirement in a way that doesn’t waste time, yet still addresses the auditing team’s concern.
14. How does Who Decides What To Do in your context impact the probability that you will have success with Lean?
Who decides what to do may have some impact on the value Lean principles may bring to your team, but that is only the case if they resist making the changes that the majority of team members agree would be beneficial.
*15. How does Project Management in your context impact the probability that you will have success with Lean?
The way your team manages projects may have some impact on the value Lean principles may bring to your team. Lean can help your team uncover process changes to eliminate waste, and many of those changes may be required of the teams your developers work with, particulary product owners and I.T. Without changes made by these other departments, your team may be stuck with processes that waste your time.
*16. How do the Quality Processes in your context impact the probability that you will have success with Lean?
You may discover that some of your quality processes are a waste of time, but they are probably not a waste of time all the time. Occasionally they help your team identify issues before they turn into real problems. If your team dogmattically practices TDD or Pair Programming, there is probably some time wasted, but that waste of time may be desirable in order to reduce the risk that some flaw gets through your process with devastating consequences. If releasing bugs doesn’t cause much damage, it may be more time efficient to let a few get through and fix them rather than spend so much time trying to prevent them.
17. How does the Architecture Forecasting in your context impact the probability that you will have success with Lean?
The plans you have for evolving your architecture have little impact on the value Lean principles may bring to your team.
*18. How do your DevOps in your context impact the probability that you will have success with Lean?
Your current DevOps process could be contributing a lot of waste by delaying delivery of your software into production. You can use lean principles to identify those sources of waste, but the people that own those processes may be resistant to making the changes to reduce the waste, therefore you current processes could impact your ability to make some lean improvements.
19. How does the Architecture in your context impact the probability that you will have success with Lean?
The architecture of your solution has little impact on the value Lean principles may bring to your team.
20. How does the Code in your context impact the probability that you will have success with Lean?
The coding language and tools in your solution has little impact on the value Lean principles may bring to your team.
*21. How does the Code Quality in your context impact the probability that you will have success with Lean?
The code quality of your solution has little impact on the value Lean principles may bring to your team.
22. How does the Application Quality in your context impact the probability that you will have success with Lean?
The quality of your application has little impact on the value Lean principles may bring to your team.
23. How does the Deployment Environment in your context impact the probability that you will have success with Lean?
The deployment environment of your solution has little impact on the value Lean principles may bring to your team.
24. How does the Product Training in your context impact the probability that you will have success with Lean?
The training you provide on your solution has little impact on the value Lean principles may bring to your team.
25. How does the Support in your context impact the probability that you will have success with Lean?
The way you provide support for your solution has little impact on the value Lean principles may bring to your team.
What does ChatGPT think?
(June 2023)Hey ChatGPT: In what contexts would lean principles help me make my software development processes better, and in what contexts would lead principles not be helpful?
Lean principles can be beneficial in various contexts within software development processes, particularly when aiming to improve efficiency, quality, and customer satisfaction. However, there are also situations where lean principles may not be as effective. Let’s explore both scenarios:
Contexts where lean principles can help make software development processes better:
Waste Reduction: Lean principles focus on identifying and eliminating waste in processes. In software development, waste can include unnecessary code, redundant tasks, long feedback loops, and inefficient communication. Applying lean principles can help streamline processes, reduce waste, and improve overall efficiency.
Continuous Improvement: Lean promotes a culture of continuous improvement through regular reflection and adaptation. This mindset encourages software development teams to regularly assess their processes, identify bottlenecks or inefficiencies, and implement changes incrementally. By embracing continuous improvement, teams can refine their software development practices over time.
Value Stream Mapping: Lean principles emphasize understanding the value stream, which involves mapping out the end-to-end process and identifying steps that add value to the final product. Applying this approach to software development helps teams gain a holistic view of the entire development lifecycle, enabling them to optimize each stage and eliminate non-value-adding activities.
Agile Development: Lean and agile methodologies share similar values, such as iterative development, frequent customer feedback, and adaptive planning. Lean principles can complement agile practices by providing a systematic approach to waste reduction, efficient resource utilization, and process optimization.
Contexts where lean principles may not be as helpful in software development:
Research and Innovation: Lean principles primarily focus on improving existing processes and eliminating waste. In contexts where software development involves significant exploration, research, and innovation, rigid adherence to lean principles might hinder creative problem-solving and exploration of new ideas. In such cases, a more flexible and experimental approach might be more appropriate.
Highly Specialized or Niche Development: Lean principles are most effective when applied to repetitive or standardized processes. In software development domains that involve highly specialized or niche projects, where each development effort may be unique, it may be challenging to apply standard lean techniques directly. Tailoring lean principles to fit these specialized contexts might require careful adaptation and customization.
Rapid Prototyping or Proof-of-Concept: During the early stages of software development, when rapid prototyping or proof-of-concept is the primary goal, a lean approach may not be the most suitable. In these situations, the focus is often on quickly iterating and experimenting with ideas, rather than optimizing processes for efficiency. Lean principles may be introduced in later stages once the direction is clearer.
Non-Linear or Non-Predictable Development: Lean principles assume a certain level of predictability and linearity in processes. However, some software development projects, such as those involving machine learning, data analysis, or complex algorithms, can be inherently non-linear and unpredictable. In these cases, lean principles may not be as effective, and alternative methodologies like agile or adaptive approaches may be more appropriate.
Remember that the applicability of lean principles may vary depending on the specific context, project characteristics, and team dynamics. It’s essential to consider the unique circumstances and tailor your approach accordingly.