For me, the strongest signal of a competent engineer is knowing when to ask for help.
We’ve all been in a situation where we pick up a ticket and think we know what to do, only to fall down a rabbit hole and waste hours or days (or weeks!) trying to figure out how to move forward. It happens. But a strong engineer can identify when they’re spinning and need help.
Asking for help is a more efficient use of time than rabbit-holing. Don’t feel bad about doing it. 🤗
Senior engineers often have a lot on their plates. But they should make time to unblock other team members and mentor early career devs on the team. If you ask someone on the team for help, you are not wasting their time.
The better you get at asking questions, the better your team and senior engineers will be able to support you — and the faster you will level up.
Asking for help is a skill like anything else. Here are my tips for doing it with style.
1. Check if the person has time to give
A good engineer should always be willing to help their team members, but they may have other priorities and deadlines to manage.
Before jumping right into the problem at hand, check if they have time available. Don’t be discouraged if they ask to wait a few hours or to schedule time the following morning when their calendar is freed up. They want to give you their undivided attention.
2. Provide context and goals
The person you are asking may not have all of the information you do. They might be splitting their time between multiple teams or projects. They may be juggling people management responsibilities with coding work. Or they may simply have forgotten what you were assigned at the beginning of the sprint.
Explain to them what you’re working on and what your desired result is. Share project management ticket numbers (Jira, Asana, etc.), link them to the repo or specific code files you are working in, show them the UI for the feature you are troubleshooting.
The more context you can provide, the quicker they’ll be able to home in on what you’re working on and be able to help.
3. Share what you’ve already tried
You’ve probably spent time debugging and troubleshooting independently before you realized you needed help. Share what you tried and why it didn’t work with the other person. This helps so they don’t make the same suggestions.
It can also help you rubber duck the problem and might spark an idea of something else to try. And it allows you to practice your technical communication skills while testing your understanding of why certain solutions didn’t work.
When you share paths you’ve already taken, it saves everyone time and can lead to a productive discussion that gets you to a working solution faster.
4. Ask a specific question
After you’ve provided context for the task at hand and shared what you’ve already tried, ask a specific question. Sometimes this can be hard if you’re really lost. In that case, explain what confuses you. But if you can end with a specific question, you can direct the discussion.
As devs, we sometimes want to fix all the things, but if you’ve been doing a lot of trial and error, the code might be messy (and that’s ok!). A specific question narrows the other person’s focus to just what you’re trying to solve and leaves you space to handle the rest on your own if you want. And if you do want help on cleaning up your code, nothing is stopping you from asking multiple specific questions. :)
A specific question might be, “I can see that the parameter to this function comes in correctly formatted. But then these three lines of code do something I don’t quite understand and the variable is mis-formatted afterward. Can you explain what these three lines are doing?”
Or, “I have a database query that is running really slow and causing API timeouts. I’ve checked that I have a composite index present on the relevant columns, so I’m confused. Does column order matter in a composite index?”
Being able to ask questions well demonstrates your understanding and improves your communication skills. Even asking questions when you’re stuck is an opportunity to level up your software skills!