What is Lean?
Lean is a management philosophy that is designed with the intention of eliminating that which does not add any value to the customer, this is referred to as ‘waste’. Lean management has
Lean management has been utilized within software development teams as it offers a solid framework with good principles, values
Lean Management Principles
Lean management operates on a step-by-step system designed to reduce and eventually eliminate waste through consistent process.
- Identify value: Defining ‘value’ from the standpoint of the customer.
- Map the Value Stream: Identifying which parts of the process can be changed or managed differently to maximize value and minimize waste.
- Create Flow: Creating an easily managed and smooth system for the ‘value-creating’ steps of the process.
- Create a ‘Pull System’: creating a system where only that which is required is produced. Supply meets demand.
- Continuous Improvement: Repeating this process until
waste is eliminated completely.
Note: Pull systems are extremely important if you’re looking to minimize waste. It is as simple as supply and demand. A good example is to imagine yourself at a restaurant. If someone orders the pasta, you make the pasta to meet the demand. If you make up 12 dishes of pasta and no one orders the pasta that night, then the product is wasted. You make only what is needed to service the consumer so that the restaurant minimizes waste and the cost of that waste.
Implementing Lean Management in a Software World
In order to properly implement lean management into a software world, the major principles need to be tweaked to ensure that it fits properly into the way in which software development works.
Identifying and reducing waste are still paramount as within the software development process there are many areas of waste. For example, building the wrong features or products, mismanagement of a backlog, ineffective communication
There are many other ‘principles’, all of which operate with similar instruction and titles. The Disciplined Agile Framework as taken from “Implementing Lean Software Development” by Mary and Tom Poppendieck operates on a 7 Step Guide, similar to the one featured below.
Major Lean Principles in Software Development
- Eliminate waste
- Amplify learning
- Decide late
- Deliver fast
- Team empowerment
- Integrity
built in - Seeing the whole picture
Eliminate Waste
As mentioned above, streamlining systems to adhere to minimizing waste and maximizing output. Waste is not just confined to
Amplify Learning
Learning is at the core of any lean project. Sharing of knowledge and ideas alongside agile’s focus on iterative progress which helps speed up the learning processes. Ensuring your team help each other and learn from each other is a great way to incorporate both agile and lean principles.
Decide as Late as Possible
As in many software development companies, change happens constantly. Delaying concrete decision making until the last possible moment ensures that there is room to breathe. The later critical decisions are made the better in the lean world, as there is more information available the further the project progresses. It also suits agile principles as there is room for change in the development process. As well as this, late decisions ensure that planning doesn’t happen at the start of the project and thus moves it away from the traditional waterfall method.
Deliver as Fast as Possible
To be ahead of the game in a software world, there is a need for the company to deliver the product faster than everyone else. This is one of the core principles of lean management. Agile management also works iteratively, which helps to deliver products in a quicker and more streamlined fashion.
Integrity Built-in
Lean focuses on integrity and agile on people. The two work together to ensure that there is continuous face-to-face conversation regarding the product between producer and client. Increasing the customer feedback sessions as well as communication between the team with regular stand-up meetings (internal link) monitors integrity.
Empower the Team
Both agile and lean focus on people and people’s relationships with one another and the client. If you have a happy team, you’ll have a successful team. That’s why trust and communication are so important in both relationships. If there is trust and communication between the parties, this fosters a team mentality that is self-empowered and self-organising which is the perfect environment for process. A self-managing team will ensure that products are meeting demand in all areas.
Seeing the Whole Picture
What’s the greater meaning behind the work that you are trying to achieve? Lean is important in its application because it is people and
Changing your Company to Lean?
How a company treats change separates the men from the boys (in terms of lean management, of course). Change is necessary for progress, but it also can be the biggest hurdle in your company’s growth if not done correctly. Traditional change is rarely a collective movement. You may find that, either from personal experience or otherwise, large changes made by one part of a company rarely please everyone. Have you ever been in a position where your role was changed in a way that you didn’t think was good, or that made your job harder? Maybe you just wish someone had asked you, the one doing the job, what you think?
Well, this is where lean’s change strategies come into play. Alongside it’s open and collaborative management style, change is implemented in a similar fashion within lean management. Lean Management is designed to encompass the problem and work on the change solution with those who are immediately affected by it.
Time is of the Essence, or is it?
One word of warning is that the process of implementation of lean management systems can take time. Not just for the process to run smoothly, but for the company to learn at their own speed ‘by doing’. The process of pushing people to change also needs to be gradual, as to minimalize push back, it is essential to ensure that people are not too far out of their comfort zones too fast. The exchange for the time is a system where everyone is on board, collaborating and working as a team; think “the perfect
Frequently asked questions
What is Lean Methodology for software development?
In short, lean methodology encourages developers to eliminate any waste of resources during every stage of software development. Its main goal is to optimize performance at every step of the process by identifying unnecessary tasks, wasted time scenarios, defects, overproduction, and quickly reducing them. At the core of lean methodology is continuous movement coupled with strong focus on adding value at every stage.
What are key principles for lean software development
There are seven key Lean principles:
1. Eliminate waste.
2. Create knowledge
3. Build quality in
4. Deliver fast
5. Respect people
Optimize everything
Defer commitment
What is the difference between lean and agile?
The difference between lean and agile methodologies is that they are guided by different principles. In short, lean methodology is all about optimizing resources and eliminating waste, while Agile is about iterative, customer-centric approach to development. However, both methodologies share similarities and both foster continuous improvement. These methodologies can be combined.