Saying “yes” to all new challenges made me feel appreciated and accomplished. However, I was just one more “yes” away from being overwhelmed. I had become the bottleneck, with 100% of my focus on urgent tasks that popped up daily.
“Yes, of course our app can scale", "Sure, I can do that" — these are things we say and hear, until it becomes more wishful thinking than realistic.
Where does it all fail? Usually in the most vulnerable part — the bottleneck.
The necks of the bottles make them easier to drink from and pour out of, but they limit the flow. This concept has been adopted when we are speaking about components that are limiting factors for the systems.
Bottleneckman wants to help but slows everything down; rather a villain than a superhero. (my definition)
Different Bottles
Every system has bottlenecks, it's a feature of all systems, and perceiving the world through the lens of system thinking helps you notice that bottlenecks are everywhere.
If you think there is no bottleneck, your system is far from its limits.
Dealing with limitations:
Find all components that limit system flow
Identify the maximum flow of the limiting component
Increase the flow or reduce the load by setting up workarounds, making changes, delegating, etc.
Repeat until your bottleneck is strong enough to handle the predicted flow
“The chain is only as strong as its weakest link, for if that fails the chain fails and the object that it has been holding up falls to the ground.”
― Thomas Reid, Essays on the Intellectual Powers of Man
Engineering
One of our clients hadn’t said that they’d planned a campaign with famous influencers to promote the app. We didn't have a clue. There was a huge spike in traffic that overwhelmed the MVP prototype for a few hours until the team was able to scale it. A retrospective after the event revealed that we lacked proper communication about the application load.
Make sure to discuss potential traffic increases with your stakeholders, for example, those influenced by marketing plans. Not everyone understands how software scales.
The part of your app that breaks under high traffic is the bottleneck. Your system won't operate faster than the slowest component.
Ask and check, for example:
What is the maximum number of users the app can handle?
What is the maximum number of concurrent transactions?
Are there any blocking processes?
Run stress tests and find out the limits.
Delegate
I was leading five technology units, each with different processes. It was tough. I felt that I was helpful and that I was in control. I discarded feelings of being overwhelmed. But, in reality, I was slowing everything down, I was the bottleneck.
By the time you feel the pressure of time, it is probably already too late. But, it does not mean that you can't do something about it. After admitting it was too much, my leader and I worked together to determine which processes could be delegated and which activities needed to be put on hold.
How to do that effectively?
One of my favourite examples of removing yourself as a bottleneck is by Derek Sivers, founder of CD Baby. He described it in the book "Anything You Want", chapter: "Delegate or die: the self-employed trap":
He was a CEO spending 12 hours a day answering questions from employees on what to do with clients: can we provide a refund? Can we charge using a wire transfer? Can we send two orders in one package?
He was overwhelmed and reached breaking point. He went offline and spent the day figuring out a solution. When he returned, the very first question was not answered. Instead, he gathered all employees and explained his values and his process of making decisions.
One of the employees wrote it down, which was later published as an internal manual. The CEO was explaining every question asked for the next few weeks until all the answers were documented. He delegated it all, with a huge change in his mindset. It was a great relief. He was no longer needed for daily operations, and the focus shifted to thinking about the future of the company.
This example shows how clearly defined values and a coherent approach helps with delegating. Derek Sivers' guiding rule was simple: "Helping musicians is the first goal, the profit is second” — employees understood it and applied it. He was free.
Summary
Systems thinking helps us notice that bottlenecks are everywhere. When we explore and understand them, we operate more effectively. It can also save us from surprises. Remember that when one bottleneck is 'fixed', another may appear — there is always one, somewhere.
What are your bottlenecks? Are you one?
Thanks for reading,
— Michał
Post Notes
Introduction to Systems Thinking
Catalogue of Mental Models — Power Up Your Brain
Discover Weekly — Shoutouts
Articles that might help you explore new perspectives, which I’ve read recently:
"Are Knowledge Silos Sabotaging Your Productivity?" by
"Being an engineering manager at Amazon" by
and"Stop learning to give feedback. Learn to receive it." by
"There's a right way to be wrong" by
Powerful lesson for the senior and staff levels.
I know in system design interviews, one of the main things interviewers look for is if you can identify and fix the bottlenecks. It goes for interviews and for everyday engineering. Appreciate the lesson on this, Michał!
Loved the story from “Anything You Want"! I’m going to check out the book :)
I first thought deeply about bottlenecks while listening to ‘The Goal’. A bit outdated, but very interesting (and a great narration on Audible!). The more software-oriented version is ‘the Phoenix Project’.