A little over 4 minutes read

Editor’s note: this article is published in two pieces, since the concept of lean software development is too wide to be covered fairly in a single post.

In the world of software “revolutions” emerge nearly every month. Each shift in IT, it seems, whether in ways of development or management of software projects, gets labeled a “breakthrough”, which turns the term into a buzzword, stripped of any meaning.

However, every once in awhile, important innovations do appear on the web, and it’s hard for them to cut through all the noise to grab your attention.

Therefore, today, we’ll introduce one of them: lean software development – a ground-breaking methodology that has completely reshaped the whole value stream in IT and yet, unfortunately, remained obscure to a lot of entrepreneurs.

What is Lean Software Development?

lean software developmentThe concept of lean, in general, was pioneered by Toyota, the Japanese automotive giant, as a mean to reduce waste in manufacturing; but soon grew explosively popular and was adapted, among others, to various competencies in IT business.

Lean development as a separate methodology came to us from the book by Tom and Mary Poppendieck and now is expanded upon by the ever-growing body of literature.

Lean development means removing all things unnecessary

As the title suggests, it aims at removing all things unnecessary, all the fat, from software engineering. Its principles resonate largely with those of Agile development; some even consider the two methodologies to be inseparable. Others, on the other hand, admitting to the shared philosophy, still state that lean is more convergeable in terms of development strategy.

Overall, there are 7 principles to Lean software development, each aiming to quicken delivery and bring higher value to end-user:

  • Eliminating Waste
  • Building Quality In
  • Amplifying Knowledge
  • Delaying Commitment
  • Delivering Fast
  • Respecting people
  • Optimizing the whole thing

To fulfill them, Lean makes use of such tools:

Inventory management. A practice of reducing the number of operations in progress at once through application of a theory of constraints and queuing theory.

Kanban – a pull project management system, which by means of limiting tasks that are being completed simultaneously, prevents overloading of the development process.

Value stream mapping – a method of visualization of the development cycle as a whole, from a request of a client to a deployment stage, that demonstrates and helps optimize the time spent on waiting and on actual processing.

Now, let’s look closer into each of the seven commandments of lean software development:

#1 Eliminating Waste

lean software developmentWaste reduction, being the first rule in Lean engineering, defines its entire purpose. For the most part, the methodology tries to fight these 9 types of waste.

  • Unnecessary features and code
  • More tasks in log than can be completed
  • Delays in the engineering process
  • Vague requirements
  • Inefficient communication
  • Issues with quality
  • Unneeded and crippling bureaucracy
  • Data duplications
  • Costs of aforementioned

To identify and eliminate waste, regular meetings are held by Project Managers after each short iteration. They allow team members to report progress, point out bottlenecks and suggest which changes to implement during next iterations, which facilitates learning and allows improvements to the code to be implemented in small, manageable increments.

#2 Building Quality In

lean software developmentEfficient quality management is, too, a guiding principle in lean methodology, as issues in this area lead to different types of waste. Repetitive testing of the code, mistakes in logging and their resolvement take time and therefore drive costs of development higher; lean strives to address such nuances before they even happen.

Various tactics are used in lean, and all related agile development types, to ensure that quality is maintained all along the process. Engineering is kept flexible. Every small iteration, each loop is followed by an immediate assessment. The time between development stages is always reduced as much as possible and trade-offs (occasional sacrifices of qualify for other project dimensions – time, costs and scope) are regularly discussed and considered.

Additionally, to fix bugs before the fact either Pair Programming or Test-Driven Development can be applied.

Pair Programming is the application of “two heads better than one” principle to software engineering. Each task is being completed by two developers, combined experience of which allows to figure out more effective solutions, foresee possible issues better and deliver higher quality than one of them would, singly.

Test-driven programming turns conventional “build, then scrutinize” approach upside down. Tests are written before the code is, so that an engineer, knowing precisely how features’ conditions are going to be checked, works out all probable scenarios whilst developing.

#3 Amplifying knowledge

lean software developmentLean software development originated from lean manufacturing, where the ultimate goal had always been a simplified, standardized, pipeline production which requires no knowledge and rare modifications. Therefore, when lean’s concept “amplify learning” was introduced to physical business, it was a game changer.

In software development, however, the importance of learning was never in doubt and lean methodology, perhaps, only proven it once more. Each time the code is written, engineers reflect on it immediately and then incorporate, during following iterations, the lessons they have learned. That’s true of lean and all agile methodologies. To ensure that particular knowledge isn’t accumulated exclusively by one engineer, who’s writing a particular piece of code, lean methodology often uses paired programming.

Besides that, learning is amplified through ample code reviewing, meetings and establishment of metrics from data that are cross-team applicable. You, as a client, get to voice your feedback to the development team upon each iteration; collecting it and adjusting future efforts to your requirements is paramount to all lean developers.

That’s it for the first part of our series. If you’d like to learn more about lean software development check our second article on the topic, or reach out to our expert.

Ask our expert

Perfectial Expert: Denys Prylutskyi
Denys Prylutskyi

Head of PMO at Perfectial

Ask a Question
Other publications by