Getting Unblocked
Every software engineer gets stuck every now and then. What makes a difference is, how we deal with it.
To clarify, “getting stuck” here means to not be able to make progress on the top priority work.
In bigger companies with hundreds or thousands employees people tend to get stuck more often due to organizational than technical reasons. If you work at a company like this, knowing how to navigate these blockages has a direct impact on your career. The most successful engineers are not only able to get themselves unblocked quickly, they actively work to avoid getting into this situation in the first place. Unfortunately, this is not always possible so here are a few strategies the can help you get unblocked if you are stuck.
From my experience, the following are common reasons for getting stuck :
missing information
waiting for another team
not knowing what to work on
Let’s break it down.
Missing information
This is probably the most common case that blocks you. Maybe you need some information but the person who was supposed to give it to you went on vacation. Or the code you integrated with behaves in an unexpected way and you’re not sure if this is a bug or a feature. Or you want to take a dependency on some infra but are not even sure if it is a good fit for you scenario. All these cases can be easily resolved just by talking to the right person. In bigger companies, often the problem is to find this person. Here are some ideas:
Post your question to the appropriate work group, Slack channel or mailing list. If you’re lucky you might get a response. Alternatively, someone may point you to a better place to post your question. In the worst case your question won’t get any traction but at least you will have it in a written form which makes it easy to copy and ask elsewhere.
Find a person who is likely to know the person you are looking for. It could be your manager, your partner’s team manager, or one of your team members.
The ultimate hack - if you have a technical question but have no idea what team you are looking for, it might be easier to find their code. Once you do it you can check commit history to find the person that is likely to be able to help you
Waiting for another team
Projects where multiple teams are involved can be problematic. Involved teams may have different priorities or face challenges that makes the collaboration hard. The most common problems are not keeping promised timelines and not communicating problems.
Agree with the partner team on the interface. Once the interface in place, you can make progress without having to wait on the the other team. No, the interface won’t get you 100% there but it can get you to 90%. This is much better than starting only when your partner team is ready.
For communication issues, schedule regular sync up meetings to discover problems before it’s too late
If you have a hard time getting a fix for a bug that is blocking you prioritized - can you mitigate or work it around on your side? If it’s not possible, try fixing it yourself. The latter is funny, because it may prompt the team who owns the code to fix it only to avoid taking your fix.
Not knowing what to work on
This one is interesting - you’re not blocked on your top priority. You don’t even know what this priority is. It is also kind of unexpected as most teams have way more work than they can do. Yet, here we are!
There could be many reasons for this - from not having enough clarity about team priorities, to unbalanced work distribution to a code freeze. The main step to take in a situation like this is to make the manager aware, and the sooner you do it the better. In the meantime you want to find some useful work yourself. Here is how:
Ask senior engineers on your team if they could use your help. Most senior engineers keep a list of projects they would love to do but don’t have enough bandwidth to do them
Investigate and fix issues issues reported by your users
Improve your systems - flaky tests, slow builds, test coverage, build warnings etc.
Maybe you have an idea that you think would be useful - this might be an opportunity to work on it
What are your strategies to get unblocked? Let me know!
Thanks for reading!
-Pawel