Don't hire until you've identified your actual bottleneck
There many ways to identify bottlenecks, some more formal than others. Here are a few simple patterns to watch for.Adding someone new to a team tends to slow it down, at least in the short term, as they need to get up to speed, and overhead increases.
So instead of blinding hiring new people when our team is slow, we’re interested in identifying the actual constraint that’s making us slow. How do we do this?
There are many approaches, some more formal than others. But at a glance, here are a few patterns you can look for:
-
Where are the queues?
Which resources have a waiting line in front of them? Common culprits in software development are: The QA team, the security team, release team, or any cross-team dependencies.
Sometimes the queues aren’t obvious. This is where a Kanban board can really help to visualize queue.
-
Every hand-off is an opportunity for queuing and waiting. If your backend team writes a feature, then hands it off to the frontend team, who then hands it off to the QA team who then hands it off to the release team, you have three hand-offs.
Each one of these is a potential queueing spot, and a bottleneck.
-
What are your external dependencies?
While you can have queues within a team, the worst ones are usually while waiting for something outside of your team. Examples include: Waiting for customer feedback, or waiting for another team to do their part of a task (i.e. the frontend team, or the QA team). External dependencies also include vendors and suppliers. Are you waiting for a SaaS provider you depend on to fix a bug, or provisoin a new account? Are you waiting for delivery of a new MacBook, because your old one snapped in two by an elephant at the last company off-site at the zoo?
For more on identifying bottlenecks, I encourage you to listen to or watch my interview with Steve Pereira on the Tiny DevOps Podcast, The value of value flow mapping.