Lean Software Development

Incorporating Lean Management into your Agile Software Development

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 it roots in the Toyota Manufacturing Industry and was designed as a system for streamlining production.

Lean management has been utilized within software development teams as it offers a solid framework with good principles, values and practices that both support and mesh well with agile organisation.

Lean Management Principles

Lean management operates on a step-by-step system designed to reduce and eventually eliminate waste through consistent process.

  1. Identify value: Defining ‘value’ from the standpoint of the customer.
  2. Map the Value Stream: Identifying which parts of the process can be changed or managed differently to maximize value and minimize waste.
  3. Create Flow: Creating an easily managed and smooth system for the ‘value-creating’ steps of the process.
  4. Create a ‘Pull System’: creating a system where only that which is required is produced. Supply meets demand.
  5. 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 and waiting can all contribute to waste product. So, value stream mapping is still an important step in the process to ensure that your company is identifying the waste in its systems.

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 product, it is time as well as built-in of teams and product development. Allowing teams to self-manage to reach goals can ensure that jobs are not double handled, and teams are not time wasting. There’s lots of research suggesting that eliminating waste and streamlining processes towards the late end of the products lifecycle is what defines modern agile techniques, and what makes them so popular.

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 project based, not skill based. Making the focus of the project the entire process (i.e. the entire value stream) shows people how they fit into the bigger picture and this, in turn, can help maximize the functions of the team. They all have a common goal and know what they are working towards, giving everyone a sense of ownership over their project.

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 bee hive”. Everyone knows and understands their positions, the positions of their team and knows that their input, decisions, thoughts and work are all a valuable part of keeping the machine running smoothly. This is worth the time!