More material on bottlenecks
- Eliot Muir
- Aryn Wiebe
If you want a bit more material to look at bottlenecks then here we are:
Love him or hate him, one thing that Elon Musk understands is bottlenecks. It’s a common pattern in all his businesses - the focus on efficiency.
Elon runs his companies on first principles style thinking. That’s why Tesla can build cars more efficiently than its competitors and why SpaceX can put payloads into space more efficiently than any other organization.
The way these businesses are able to out compete their competition is by making sure there is nothing in infra-structure they cannot optimize.
Elon runs his businesses in a manner that he has much tighter control over all the processes that are core.
Private sector organizations tend to have an easier time being efficient and successful because they have much more clear goals
Most businesses have a handful of core processes which define the business.
For instance for iNTERFACEWARE these would be our core processes:
Quality assurance
Support
Acquiring new clients
Growing our relationships with existing clients so they become bigger clients
Recruitment
Helping staff grow with training.
Accounts receivable
That’s about it. It’s not to say that there are not other processes. But these are the core ones that to be successful as a business we need to focus on optimizing.
Some processes don’t need optimization. Payroll is pretty important process for us but it works well - we won’t make much impact by making 100 times more efficient.
The theory of constraints gives another lens to understand why premature optimization is a problem in software development.
If the piece you are optimizing isn’t a bottleneck in the overall process you are losing valuable time and creating unnecessary complexity which is probably going to hurt your ability to optimize what matters.
It’s easy as a manager to look at a system and find things which look like they are broken or could be improved.
The problem is if you are not tapping into the knowledge of the people in the system who are closest to it, you may end up identifying things which you think are bottlenecks but actually aren’t the real bottlenecks.
This is when time and money get wasted fixing problems which don’t improve the system. You have to be humble as a manager and get people to trust you to have open conversations to find the real bottlenecks with your people.
This is so important.
When you look at system with the goal of trying to improve the speed and output, the first thing you need to do is try to look for what the biggest ‘bottlenecks’ are. Think of the problem abstractly in terms of components of the process. Let’s say they are A, B and C. If we look at the break down of time spent on these things maybe it breaks down as:
A takes 5 minutes (5%)
B takes 1 minute (1%)
C takes 94 minutes (94%)
Total time is 100 minutes.
As a manager or a software developer if we focus our efforts on making A or B twice as fast we won’t see a measurable improvement - increasing the speed of B by a factor of ten times only will barely produce a 1% increase in speed.
But if we focus our efforts on making C change from 94 to 47 minutes then the figures will change to this:
A takes 5 minutes (9%)
B takes 1 minute (2%)
C takes 47 minutes (89%)
Total time is 53 minutes.
If we further optimize C to take it down to 5 minutes then the figures stack up like this:
A takes 5 minutes (45%)
B takes 1 minute (9%)
C takes 5 minutes (45%)
Total time is 11 minutes.
What is interesting about this process is that as you solve one bottleneck then usually another bottleneck emerges as significant. At this point optimizing A would now offer some opportunities to make measurable improvements in the process.
Â