Digitalization
28. June 2023
5 places where bottlenecks occur in software teams
Based on my experience, leaders in software engineering should constantly focus on identifying and eliminating bottlenecks in their workflows. Remove these bottlenecks, and see value flow faster.

During my summer holiday, I reread the book “The Theory of Constraints”. A theory that every leader in software engineering should know.
Here are five places where bottlenecks typically occur:
- Quality assurance – waiting for synchronous feedback
- Waiting-time shadows: unclear waiting time in processes
- Hero syndrome – “He is the only one who can solve this”
- Code reviews – lack of automation causing back-and-forth
- Rework station – quality issues not addressed from the start
A quote that always reminds me why I need to remove them is:
“A system’s capacity is defined by its slowest, not its fastest, component.”
1: Quality assurance – waiting for synchronous feedback
Quality assurance is a crucial part of any software organisation. However, waiting for synchronous feedback can create a significant bottleneck.
This is because developers have to wait for their work to be reviewed and approved before they can continue building on it.
This waiting time can delay the entire development process and create unnecessary downtime.
The process can potentially be delayed significantly if those who need to review the code do not have the time, and if others are blocked in their work by the task that has not yet been approved.
To minimise this bottleneck, it can be beneficial to implement an asynchronous feedback process.
This means that developers do not need to wait for feedback in real time, but can instead continue their work while waiting for comments and suggestions for improvements.
2: Waiting-time shadows – unclear waiting time in processes
Another common bottleneck in software organisations is unclear waiting time in processes, also known as “waiting-time shadows”.
This happens when it is not clear how long certain steps in the development process will take, which can result in inefficiency and delays.
One way to address this issue is to implement clear deadlines and guidelines for each step in the process.
By establishing a predictable timeframe for each step, team members can better plan their work and minimise unnecessary waiting time.
3: Hero syndrome – “He is the only one who can solve this”
Hero syndrome can also create bottlenecks in software organisations. This happens when individual employees take it upon themselves to solve complex problems on their own, often at the expense of the team’s overall productivity.
To avoid this trap, it is crucial to foster an environment where collaboration and collective problem-solving are the norm.
By distributing responsibility and tasks more evenly among team members, companies can avoid becoming overly dependent on individual “heroes” and instead benefit from the collective talent and expertise of their team.
4: Code reviews – lack of automation causing back-and-forth
Code reviews are an important part of the software development process, but a lack of automation can often lead to lengthy back-and-forth discussions that can slow the process down.
This can create a bottleneck that prevents the team from moving quickly and efficiently through the development process.
One solution to this problem can be to implement automated code review tools that can help identify and correct errors faster and more effectively.
By automating this process, teams can minimise the time spent on manual reviews and increase their overall productivity.
5: Rework station – quality issues not addressed from the start
Finally, rework stations i.e., situations where work has to be redone due to quality issues that were not addressed from the start can also create significant bottlenecks. This can result in considerable wasted time and resources.
To avoid this, it is crucial to implement robust quality assurance procedures from the start of any project.
By identifying and resolving quality issues early in the process, teams can minimise the need for rework and ensure a more efficient and streamlined development process