December 19, 2023Platform Engineering

Common bottlenecks that impact developer productivity

Want to learn about how to actually improve developer productivity? Read this post!

So you want to improve developer productivity? This is what really works

Through my work at Gitpod, I’ve engaged with developers from a diverse range of companies and industries. This experience has provided me with a unique perspective into the factors that impact developer’s productivity, both individually or as part of a team. Instead of going through your typical theoretical frameworks to measure productivity like DORA and SPACE instead today, I want to get really practical and go over the most common challenges for developer productivity I encountered and go over actionable ways to overcome them.

We’ll cover everything from improving your own individual developer flow state with time blocking, increasing your developer feedback loops with tools like hot reloading and why it’s important to standardize to reduce cognitive load.

Individual developer’s challenges

There are productivity challenges that any developer will encounter - even if they are working solo:

1. Interruptions and flow state

Developers often work best when in a ‘flow state’, delivering quality work quickly. In this state, they’re deeply focused and highly productive. But frequent interruptions can break this flow, hurting both quality and quantity of work.

Hot fixes:

2. Iteration speed (slow inner loop)

The speed at which a developer can change, build, and test code is crucial for productivity. Quicker builds allow for more changes in a single day. Slow builds aren’t just inconvenient—they can greatly impede progress. Consider a scenario where a change-build-test cycle takes 10 minutes, with half that time dedicated to building. If you work undisturbed for 5 hours, you can do 30 cycles a day. Reducing build times by just two minutes saves an hour each day or adds 7 additional cycles. That’s 21 hours saved per engineer every month!

(Not so) Hot fixes:

3. Cognitive load

Developers need to keep a mental map of their code’s structure, dependencies, bugs, and more. This mental effort can slow progress, especially with complex projects. If a codebase has unclear boundaries, many interacting components, or confusing names, the mental load further increases.

Hot fixes:

4. Developer environment maintenance

A developer’s environment isn’t static. Operating systems update, tools evolve and sometimes clash. Maintaining this takes time—time not spent writing code.

(Not so) Hot fixes:

Team-level challenges

When developers collaborate and share work a new set of challenges emerge:

5. Slow feedback loops (slow outer loop)

When more than one developer is involved, collaboration is essential. They co-own the codebase and need feedback. However, slow feedback loops, whether from a sluggish outer loop (i.e. CI/CD) or lengthy PR reviews, can hamper progress and lower spirits.

Hot fixes:

6. Environment inconsistencies

When multiple developers are involved, different development environments come into play. These can vary based on machine setup, OS, developer preferences, and update frequency. This can lead to a code change working on one machine but not another— the “it works on my machine” problem.

Additionally, there are CI and production environments to consider. These can differ greatly, especially when developers use Windows or Mac, and production runs on Linux containers. This mismatch can reduce productivity, as what works in the development environment might break in production.

Hot fixes:

7. Onboarding onto unfamiliar codebases

A lone developer knows all their code - they wrote it. But in a team or a large company, developers often encounter unfamiliar code. Contributing to an unfamiliar codebase is costly - not just because of the learning curve to understand the code, but also to have the right tools and dependencies set up. An outdated readme.md file usually guides this setup. This initial hurdle of setting up not only hampers productivity, but also discourages developers from contributing to other code bases hurting cross-team collaboration and hampering any inner-source initiative before it takes off.

Hot fixes:

8. Costly context switches

Reviewing a PR or “quickly” switching from feature work to fixing a bug means switching context - not just mentally, but also in the development environment. You need to checkout a different code branch, build it, and install dependencies. This can take time, especially with large codebases and varied tool requirements. It’s time spent waiting, not coding.

Hot fixes:

Conclusion

The role of the developer, whether working individually or as part of a team, is marked by challenges that extend beyond simply writing effective code. The challenges that arise compound when developers need to collaborate with others. Cloud Development Environments (CDEs), where a developers environment is standardized and readily available in the cloud, are a holistic solution to all of the challenges listed above. CDEs are worth a deeper look if you can identify with the challenges listed - find out more by downloading our whitepaper.

This website uses cookies to enhance the user experience. Read our cookie policy for more info.