Understanding Waste in Software Chris B. Behrens SOFTWARE ARCHITECT @chrisbbehrens
The Seven Wastes of Manufacturing 1. Delay 2.Overproduction 3.Overprocessing 4.Transportation 5.Unnecessary movement 6.Inventory 7.Defects
Partially Done Work Inventory waste The team did But was A problem great work constantly executive overstressed and behind schedule
Churn In Requirements The exec should keep their beak out of the work But the review often did improve the design The problem was WHEN the review occurred Shifting the timing of the review should have been easy… But the company wasn’t optimizing for the whole And it wasn’t Respecting People
Incomplete Software Work Continuous Integration – preventing the waste of non-integrated code Continuous Deployment – preventing the waste of non-deployed code Continuous Whatever – testing, documentation, whatever
Extra Features
YAGNI You ain’t gonna need it https://martinfowler.com/bliki/Yagni.html
The Costs of YAGNI Cost of building Cost of repair Cost of carry Cost of delay
Features and Costs Wrong feature Building Repair Right feature, built wrong Carry Right feature Delay
My Missing Abstraction Layer Where does my abstraction layer fall? It WAS the wrong feature… But we didn’t know that at the time How hard is it to refactor? User concurrency would have made it necessary In the end, I think it wasn’t an extra feature
Relearning Code from a year ago I recognize this What is this dark magic? Sometimes, the subject matter expert is not available
Handoffs
Handoffs and the Game of Telephone Information is lost at each step - Front line of communications - Consultant - Manager - Developer Phone support Admin tools for support I called the customer directly Otherwise, back to the manager - To the intern - Back to the customer
Handoffs
Handoffs
Task Switching Nobody can When you add Almost always Only multitask up the time to more efficient audiobooks and perform tasks… performed exercise serially
“But I’m good at multitasking!”
“...even brief mental blocks created by shifting between tasks can cost as much as 40 percent of someone's productive time.” Multitasking: Switching costs https://www.apa.org/research/action/multitask
Task Switching Functions Task switching is Even this In the meantime, the costly underestimates the partially completed cost of rework work is waste
Phase Ones
Delays Waiting for For information For authorization approval Easier to see, Automate! Standardize! anyhow
The Riddle of the Bridge 1 minute 2 minutes 5 minutes 10 minutes 1. Tom and Roy – 10 minutes 1. Tom and Jeff – 2 minutes 2. Tom back – 1 minute (11 minutes total) 2. Tom back – 1 minute (3 minutes total) 3. Tom and George – 5 minutes (16 3. George and Roy – 10 minutes (13 minutes total) minutes total) 4. Tom back – 1 minute (17 minutes total) 4. Jeff back – 2 minute (15 minutes total) 5. Tom and Jeff – 2 minutes (19 minutes) 5. Tom and Jeff – 2 minutes (17 minutes)
A Delay War Story Single Sign On Users would log onto their company website And be logged into my site without entering their credentials The crypto was challenging initially, but I figured it out Now we just need to order the certs
The Certificate Process Their process took Find the point of thirty days (by A few days later… contact design) We had to sell Finally, after two new people on the months, we had project the certificates
Defects A car that doesn’t run, a badly manufactured part All of the forms of waste can accrue to defects Eliminating defects is like pursuing speed – a purifying force
Continuous Deployment Check-in triggers a build - Automated testing - Autogenerated documentation - Deployment to Production “How can you deploy without having tested it?
Who, What, and When We don’t inspect to find defects, we inspect to prevent defects 100% test coverage Build scans for security problems
Pointless Test Coverage A lousy test that Pair programming Unless you’re both satisfies coverage will stop this slackers
Pointless Test Coverage Once your work is A PR build validates The changes are complete on a that the merged reviewed by branch, you create a code will at least senior developers pull request compile So they approve Now that stuff has to pass Maybe these the larger suite of your garbage code senior developers automated unit and and your garbage integration tests against are slackers, too tests pseudo-production data
AS-204 A plugs-out test - The umbilicals disconnected from the capsule - The internal atmosphere overpressurized to reflect the relative pressures in space Roger Chafee, Ed White and Gus Grissom Apollo 1
“A Failure of Imagination” Astronaut Frank Borman Anticipated problems all happened at launch or in space Are there defects in your code? - “Yes” - “I can’t imagine” Are you good at imagining failure in your code? People, process and automation
t h Eliminate waste s The wastes are the inverse of principles - Extra features -> Defer commitment - Relearning -> Create Knowledge Summary - Defects -> Build Quality In The Seven Wastes - Partially Done Work - Extra Features - Relearning - Handoffs - Task Switching - Delays - Defects
Recommend
More recommend