Lean software development Michal Krajíček Agenda 1. Origins of Lean 2. Principles of Lean 3. From cars to software development 4. Lean software development – principles 5. Lean & agile 6. The Lean Startup Origins of Lean Japonsko po druhé světové válce Origins of Lean Lean production • Waste • Kaizen • Jidoka • Just in time • Lean time & cycle time Origins of Lean 7 principles • Eliminate waste • Build quality in • Create knowledge • Defer commitment • Deliver fast • Respect people • Optimize the whole Eliminate waste „All we are doing is looking at the timeline from the moment a customer gives us an order to the point when we collect the cash. And we are reducing that timeline by removing the nonvalue-added wastes.“ Build quality in Build quality into the code from the start – the ultimate goal is to eliminate the defect tracking system altogether. Create knowledge Software development is a knowledge-creating process. The important questions in development is: how can I learn most effectively? Defer commitment Schedule irreversible decisions for the last responsible moment – the last chance to make the decision before it is too late. It is easier to change a decision that hasn´t been made. Deliver fast Companies that compete on the basis of time often have a significant advantage over their competitors.  Elimination of huge amount of waste  Low defect rate  Experimental approach to product development  The faster you can deliver, the longer you can delay decisions Respect people  Lean thinking capitalizes on the intelligence of frontline workers  Critical factor in motivation is empowerment "Hire good people, and leave them alone." "If you put fences around people, you get sheeps. Give people the room they need." "Encourage, don´t nitpick. Let people run with an idea." "Give it a try - and quick" William McKnight Optimize the whole Software development is legendary for its tendency to sub-optimize. If you break a value stream into silos and optimize them separately, experience shown that the overall system will almost certainly be sub-optimized. The basic rule: you get what you measure Solution: measure up Lean  Agile Eliminate waste  deliver value Build quality in  XP engineering practices, agile testing, shippable product Create knowledge  iterations, spikes, automated testing, customer collaboration Defer commitment  incremental design, agile backlog, iterations Deliver fast  short release cycles, MVPs, pull system, shippable product Respect people  self organizing teams, Scrum master, agile organization Optimize the whole  team is responsible What is startup? • Temporary organization designed to search for a repeatable and scalable business model What is The Lean Startup? • Methodology used by startups • Way of maximizing learning per unit of time • Systematical process of iterating from plan A to a plan that works Questions?