Important aspect of doing a Lean Software Development is identifying and eliminating waste and amplifying learning. Sharing summary of my notes as I go through LSD by Poppendiecks and practice it myself at Go-Jek.
3. Eliminate Waste
Do you see waste?
● Code not in production
● Docs Unused (Customer tests not PRDs)
● Extra features (Maybe, How it works)
● Task Switching (1@time)
● Waiting (staff, specs, merge, test, deploy)
● Motion (Time to answer, Interfaces)
● Defects (Impact*Time to detect)
● PM Bullsh*t (backlog, tracking, change auth)
Do you see value?
4. Amplify
Learning
Recipe vs McChicken
Feedback
● Test asap
● Customer/Business Tests vs PRDs
● User Requirements vs Demos
● Study tools vs Spike top 3 tools
● Prototype vs full system
Iterations (small batch, options, sync via demo)
● Plan, Commit, Support*
● Convergence
● Negotiable scope and go by priority
Synchronization
● Sync & Stabilize (Fast & Freq. builds & tests)
● Spanning Application (End to end)
● Matrix (Interfaces then subsystems)
Options-Based Dev. (vs sols; not choices, constraints)
● Develop Multiple Options (prototypes, spikes)
● Selection (spontaneously happens)
● Communicate Constraints (not 1 solution)
● Let the solution emerge (vs selecting one)