SLIDE 1 @chrisbbehrens
SOFTWARE ARCHITECT
Chris B. Behrens
Understanding Waste in Software
SLIDE 2 The Seven Wastes of Manufacturing
2.Overproduction 3.Overprocessing 4.Transportation 5.Unnecessary movement 6.Inventory 7.Defects
SLIDE 3 Inventory waste
Partially Done Work
The team did great work But was constantly
and behind schedule A problem executive
SLIDE 4 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
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
SLIDE 5 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
SLIDE 6
Extra Features
SLIDE 7
You ain’t gonna need it
YAGNI
https://martinfowler.com/bliki/Yagni.html
SLIDE 8
Cost of delay Cost of carry Cost of repair Cost of building
The Costs of YAGNI
SLIDE 9
Features and Costs Wrong feature Right feature, built wrong Right feature Building Repair Carry Delay
SLIDE 10
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
SLIDE 11 Code from a year ago
Relearning
I recognize this What is this dark magic? Sometimes, the subject matter expert is not available
SLIDE 12
Handoffs
SLIDE 13 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
SLIDE 14
Handoffs
SLIDE 15
Handoffs
SLIDE 16 Nobody can multitask
Task Switching
When you add up the time to perform tasks… Almost always more efficient performed serially Only audiobooks and exercise
SLIDE 17
“But I’m good at multitasking!”
SLIDE 18
“...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
SLIDE 19 Task switching is costly
Task Switching Functions
Even this underestimates the cost of rework In the meantime, the partially completed work is waste
SLIDE 20
Phase Ones
SLIDE 21
Easier to see, anyhow Standardize! Automate! For authorization For information Waiting for approval
Delays
SLIDE 22 The Riddle of the Bridge
1 minute 2 minutes 5 minutes 10 minutes
1. Tom and Roy – 10 minutes 2. Tom back – 1 minute (11 minutes total) 3. Tom and George – 5 minutes (16 minutes total) 4. Tom back – 1 minute (17 minutes total) 5. Tom and Jeff – 2 minutes (19 minutes) 1. Tom and Jeff – 2 minutes 2. Tom back – 1 minute (3 minutes total) 3. George and Roy – 10 minutes (13 minutes total) 4. Jeff back – 2 minute (15 minutes total) 5. Tom and Jeff – 2 minutes (17 minutes)
SLIDE 23 Single Sign On
A Delay War Story
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
SLIDE 24
Finally, after two months, we had the certificates We had to sell new people on the project Their process took thirty days (by design) A few days later… Find the point of contact
The Certificate Process
SLIDE 25 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
SLIDE 26 Continuous Deployment
Check-in triggers a build
- Automated testing
- Autogenerated documentation
- Deployment to Production
“How can you deploy without having tested it?
SLIDE 27
Who, What, and When
We don’t inspect to find defects, we inspect to prevent defects 100% test coverage Build scans for security problems
SLIDE 28
Unless you’re both slackers Pair programming will stop this A lousy test that satisfies coverage
Pointless Test Coverage
SLIDE 29 Now that stuff has to pass the larger suite of automated unit and integration tests against pseudo-production data
So they approve your garbage code and your garbage tests
Maybe these senior developers are slackers, too The changes are reviewed by senior developers
A PR build validates that the merged code will at least compile Once your work is complete on a branch, you create a pull request
Pointless Test Coverage
SLIDE 30 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
SLIDE 31 “A Failure of Imagination”
Astronaut Frank Borman Anticipated problems all happened at launch or in space Are there defects in your code?
Are you good at imagining failure in your code? People, process and automation
SLIDE 32 t h s
Eliminate waste The wastes are the inverse of principles
- Extra features -> Defer commitment
- Relearning -> Create Knowledge
- Defects -> Build Quality In
The Seven Wastes
- Partially Done Work
- Extra Features
- Relearning
- Handoffs
- Task Switching
- Delays
- Defects
Summary