Lean Approaches to Software Project

Over the last few years I have learnt a number of techniques that introduce lean system thinking into running development projects. This is a summary of the techniques I have found useful and examples of how I have applied them.

Kanban

Kanban is the Japanese term for signal card, a visual representation of a task or feature to be delivered.   These cards are placed on a board showing their progression through the stages project and information can be captured on the cards as to the performance of delivery.

In software development, each stage (column) on the kanban board typically represents a role that one or more members of the team carries out (analysis, test, develop, deployment).  I have found kanban a very powerful to for:

  • highlighting bottlenecks in the process
  • reducing wasteful multi-tasking (by introducing WIP Limits)
  • effectively evaluating changes to working practices

Value Stream Mapping

Value stream mapping is a big sounding phrase that simply means trying to understand what steps are taken to get work done. I create a visual map of the end to end process for a team - or organisation.

Value stream mapping is often used as an input to the design of a kanban board, with each valuable stage being represented by a column on the kanban board.

The mapping can be done on what you believe the current process is, or you could map what you thing the process should be. Either way, you should test out your mapping to see if you are right. Using a kanban board to test your mapping will give you lots of feedback.

Rolling Wave Planning

I have worked with some teams who “went agile” and decided to throw out any long term planning. It can be very useful to have a high level long term plan to help people understand the direction of the organisation and work towards common goals.

One of the biggest wastes in planning is over-planning and micro-management.

Using rolling wave planning, features can be planned at a very high level with planning becoming more specific as features progres. This give you a destination for you to travel, without the constraint of an exact route to get there.

As you move closer to the timescale in which delivering on your goal is valuable, you can plan more actions that need to be done.

Behaviour Driven Development

BDD evolved from experience gained from test driven development(TDD) and domain driven design (DDD), along with other influences such as neuro-linguistic programming (NLP). Essentially it provides a lightweight lean methodology that concentrates on delivering the right software at the right quality at the right time to the right user.

The official description is:

Why you do it
BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology.

What is it
“It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters.”

BDD is writing software that matters!

If you wish to learn more about BDD, I recommend watching Dan North and Liz Keogh presentations on the Skills Matter website. There is also a BDD immersion workshop on the 26th February which I highly recommend.

Thank you.
@jr0cket


This work is licensed under a Creative Commons Attribution 4.0 ShareAlike License, including custom images & stylesheets. Permissions beyond the scope of this license may be available at @jr0cket
Creative Commons License