Think about your computer for a moment, what happens when you have too many programs running? The computer slows down, right? When you run many programs at one time your CPU has to switch back and forth between processing instructions for each program, which causes your CPU utilization to spike– slowing down your computer (a condition called “thrashing”). Want to go faster? Then you need to close some programs. The same principle holds true for your development team. If your team is over utilized then they will slow down.
How many of you focus on utilization of your development team as a Key Performance Indicator (KPI)? According to Mary Poppendieck–a noted Lean Software Development expert–if you focus on driving utilization up, you will actually slow down your team’s efforts.
For those of you familiar with Agile frameworks you will notice that one of the key tenants is small batches. The team decomposes the work to be done into small manageable tasks, think of these groups of tasks as batches. Then the team commits to completing only as many batches as they can in the length of an iteration. By keeping the batch size small and the team at about eighty percent utilization they are actually maximizing their available throughput.
Here are a few more tips for reducing cycle time as outlined in Mary and Tom Poppendieck’s book “Implementing Lean Software Development”:
Even out the arrival of work
Minimize the number of things in progress
Minimize the size of things in progress
Establish a regular cadence
Limit work to capacity
Use pull scheduling
If you think about it, Agile incorporates all of these principles into its basic model. So next time your team wants to go faster, recommend the fundamental tenant “do less work”.