www.balki.io

Engineering Reflections

Asking For Help From Senior Software Engineers

By balki | September 21, 2020 | 0 Comment

Why Are We so terrified of asking for help?

So what stops us from seeking the help that we need? According to Leon Ho, sometimes it is the fear of being perceived as weak, needy or incompetent in front of our peers and superiors.  Imposter syndrome comes to mind, doesn’t it?

Especially if you’re in a competitive, fast-paced team environment, there is a genuine fear that if you let your guard down, that vulnerability might backfire. If you’re too open about asking for help, people may start stereotyping you as the leech who always relies on someone, and you’ll start to appear incapable. There will be overly aggressive individuals who will gladly amplify your weaknesses to get to the “proverbial top”.

Unfortunately, we all have a natural tendency to judge ourselves too harshly–often overthinking situations much worse than they are in reality. As a result, you miss out on learning new things, forming relationships that happen when you ask for help.

Additional hardship within the software development industry

Syeda Aimen Batool writes on freecodecamp.org that the other name for software development is “struggle”. And if you are a beginner or a first-time developer, this ordeal often is multiplied by 100. Learning to code (often a new programming language), finding the right resources, and then working alongside other experienced software engineers can be daunting. And all of this unfolding in very open settings like modern agile teams, oh my!

But the good thing about struggling is that you learn and come out stronger at the other end. You experience new things and implement new ideas, eventually transforming yourself to be a better version.  

Reaching out to other for help benefits you in multiple ways:

You’re forced to restate the problem in a way someone else can understand. Sometimes this is sufficient to help you solve the problem, even before they get to answering you. In fact, this technique is so useful that sometimes you don’t need a person, and talking to a rubber duck will do. Itamar Turner-Trauring likes debugging out loud for this reason, so occasionally he uses a #rubberduck Slack channel, so he doesn’t have to distract his coworkers.

All that said, software engineers at all levels are faced with the terrifying and awkward question: “When and how do I ask for help?”. A related dilemma is to label something as “I am stuck”. This is a very personal question to address but in the spirit of our culture of safety, here’s some best practices when you do decide to “ask for help”.

When to ask for help?

  • You have exhausted all of your personal experience and google/stackoverflow research
  • Quickly (mentally) calculate the right time based on how far along are you in the sprint and how much work is still left for you
  • Guess (or even better ask your project lead, SCRUM master, or Product Owner) the priority of the work at hand. Obviously if it is critical and cannot be dropped from the sprint, ask sooner than you are comfortable with and before you exhaust all options on your own
  • If in doubt, seek advice from someone you trust (your mentor or manager, for example)

How to ask for help?

  • Remember the company’s official SafetyNet tool is designed exactly for situations like this!
  • Also remember that great engineers are not only confident in their own skills but have learned the art of balancing when to seek help
  • Definitely bring it up in your team’s daily stand-up as a blocking item
  • Make a judgment call and label whether you are explicitly asking for help or if it is just an FYI for the team
  • When you do explicitly ask for help:
  • Summarize your blocking issue in 1-2 sentences and ask in a broader group first (e.g. Development Discussion slack channel)
  • If no response within a reasonable timeframe (1-2 hours), target and tag specific individuals who you think might be subject market experts – continue to do this in the open (e.g. an open slack room for developers) so that others can jump in or learn from the solution!
  • At this point, be prepared with the following information (preferably documented in a public place like your ticketing system, jira):

A well-defined problem summary (do this first before you start talking about the likely “solutions”)

What you have tried so far

What seemed to have worked and what didn’t

What you wanted to “try” but didn’t know how

What do you think could be the root cause and the potential solution

  • Remember that “asking for help” doesn’t redeem you from the ownership — continue to own the underlying task until resolution or until a new owner is explicitly identified.

Sophie DeBenedetto’s article at dev.to explains that one way to simplify a complex problem is to clearly define our expected behavior. Ask yourself: “Why is this a problem? Exactly what behavior am I seeing that I shouldn’t be seeing?/Exactly what behavior am I missing that I should be seeing?” We need to clearly define the parameters of the problem if we are going to solve that problem. This kind of mindset and documentation is really helpful as you approach someone else for help.

When you are that senior engineer likely to help

  • Remember that not everyone around you is at the same experience or expertise level
  • Be curious and uncover the details of the work/research completed so far
  • Remind yourself that although there is a cost for you to stop what you are doing to help, it is the right thing to do and is likely aligned with one or more values at your company. You are literally obligated to help out when someone asks for it!
  • If you don’t have the time right away or you are not the expert, gently try to explain that and redirect to someone else
  • In fact, be nice and connect the dots and hand-off the help-seeker to the new potential helper
  • Depending on the time available, and the help-seeker’s ability & interest, use your judgment to leverage this as a teaching opportunity instead of jumping into the solution yourself.

As a stretch goal, collaborate with the help-seeker to document your findings on a public forum like Confluence

As a further stretch goal 😃, propose to discuss the troubleshooting/resolution path in an upcoming team meeting.

My main takeaway is your colleagues may have an idea you don’t, especially if they’re experienced. Learning and practicing how to ask for help, and getting the answers to solve your programming puzzles is the fastest, most fulfilling way to accomplish your career goals.

Inspired by:

(This article was originally published on Linked as Asking for help from Senior Software Engineers.  This is a repost of the same article on my personal blog)

0 Comments