WIP, Capacity, and Dirty Laundry

June 9, 2016 — Posted by Guy Beaver

A benefit of being a CIO is that you get to collect a treasure chest of war stories to share with other CIO’s.  These stories also serve a purpose:  They teach patterns to watch out for (so that if nothing else, you learn when to cringe.)

One of my war stories goes like this.  Outside my glass-walled office, in plain view from my desk, is an operational dashboard that shows concurrent users, and server load.  CIO’s have a (good) habit of looking up at these dashboards for obvious reasons. 

Late one Friday, after most people had left, and more importantly when our user load is normally at a minimum, I happened to see CPU going very high on one server in our load balanced server farm.  After a quick check of the logs, I realized that it was due to multiple instances of five very large reports that only internal users could run, and the culprit was an executive who sat across the floor from me. 

Kicking myself for not having the planned data warehouse implemented yet to take the reporting load off our transactional system, (and allow elastic scaling by spinning up servers when load threshold was exceeded) I walked into his office to check on him.  The conversation went like this:

Me: “Hey , working late I see.  You realize it’s Friday?"

Exec: “Yeah, gotta get last year’s data printed out."

Me: “Oh?  How are you doing that?"

Exec: “Well, the one year report takes too long, so I kick off each month separately in different tabs, then I go on to something else until they finish."

Deep cleansing breath.  

Me: “You realize that kicking off those reports at the same time means all 12 will be competing for the same resource, making each take 12 times as long (or longer)?"

Exec: “Yeah but if you are doing laundry and you have 12 driers you can dry a big batch of laundry quicker if you run 12 driers in parallel."

Me: “Very true, but in this case, we only have 1 drier* so dividing it into 12ths doesn't magically get you 12 driers."

This was a movie I’d seen before, but in a different context.

IT Organization has a development team with 12 developers.  The development team couldn’t seem to get enough enhancements done because of all of the support requests.  That dialog goes like this:

Exec: “We aren’t getting enough enhancement stories done.  We need more velocity."

Tech Lead: “We are spending half our time working support issues.  We can’t focus."

Exec: “Well then, let’s split the team into two teams and one will work support issues while the other can focus on our enhancement stories."

Again, deep cleansing breath.

Me: “You realize when you split your capacity in half, velocity is reduced by half, taking twice as long to get work done.  Why not use the full capacity to focus on fixing the cause of the support issues, and then apply that full capacity to your enhancement requests?"

Executive looks at me like I have two heads.

Me (anticipating the laundry analogy): “If you divide your drier into 2 smaller each with half the capacity of the original, you can’t get more laundry done."

Executive looks as though a vein might pop in his forehead.

This is really a physics problem—you can only get more capacity by adding capacity.  You can get improvements in the effectiveness of your existing capacity by flowing prioritized work through it, but dividing your capacity only creates more work-in-process (WIP) and hides the real problem—you have too much work for the capacity you have, and the best way to determine the true capacity is to limit WIP to determine the optimal loading that allows the team to sustainably deliver highest quality solutions in the shortest amount of time.

Key takeaways:

  • Prioritize and reduce WIP to most effectively use the capacity of your organization
  • How much capacity do you have in your organization?  How do you know? 

*The server farm used sticky sessions and had not yet leveraged an elastic scaling architecture.

Subscribe to our blog Net Objectives Thoughts Blog

Share this:

About the author | Guy Beaver

Guy Beaver was VP of Enterprise Engagements and a Senior Consultant. He is a seasoned technology executive known for building Lean organizations that are driven by business priorities. With 30+ years experience in Financial Services, Aerospace, Health Care and eCommerce, his technology accomplishments include managing enterprise web development and delivery for world class transaction systems (16 Million users), large data center transitions, and SaaS operational excellence utilizing Lean IT practices. He is skilled at organizational change and is the co-author of Lean-Agile Software Development: Achieving Enterprise Agility.


Blog Authors

Al Shalloway
Business, Operations, Process, Sales, Agile Design and Patterns, Personal Development, Agile, Lean, SAFe, Kanban, Kanban Method, Scrum, Scrumban, XP
Cory Foy
Change Management, Innovation Games, Team Agility, Transitioning to Agile
Guy Beaver
Business and Strategy Development, Executive Management, Management, Operations, DevOps, Planning/Estimation, Change Management, Lean Implementation, Transitioning to Agile, Lean-Agile, Lean, SAFe, Kanban, Scrum
Israel Gat
Business and Strategy Development, DevOps, Lean Implementation, Agile, Lean, Kanban, Scrum
Jim Trott
Business and Strategy Development, Analysis and Design Methods, Change Management, Knowledge Management, Lean Implementation, Team Agility, Transitioning to Agile, Workflow, Technical Writing, Certifications, Coaching, Mentoring, Online Training, Professional Development, Agile, Lean-Agile, SAFe, Kanban
Ken Pugh
Agile Design and Patterns, Software Design, Design Patterns, C++, C#, Java, Technical Writing, TDD, ATDD, Certifications, Coaching, Mentoring, Professional Development, Agile, Lean-Agile, Lean, SAFe, Kanban, Kanban Method, Scrum, Scrumban, XP
Marc Danziger
Business and Strategy Development, Change Management, Team Agility, Online Communities, Promotional Initiatives, Sales and Marketing Collateral
Max Guernsey
Analysis and Design Methods, Planning/Estimation, Database Agility, Design Patterns, TDD, TDD Databases, ATDD, Lean-Agile, Scrum
Scott Bain
Analysis and Design Methods, Agile Design and Patterns, Software Design, Design Patterns, Technical Writing, TDD, Coaching, Mentoring, Online Training, Professional Development, Agile
Steve Thomas
Business and Strategy Development, Change Management, Lean Implementation, Team Agility, Transitioning to Agile
Tom Grant
Business and Strategy Development, Executive Management, Management, DevOps, Analyst, Analysis and Design Methods, Planning/Estimation, Innovation Games, Lean Implementation, Agile, Lean-Agile, Lean, Kanban