Blocked: Tips on how to Ask For Assist as an Intern

You grinded LeetCode, nailed the interview course of, and obtained an internship at a tremendous firm. Congrats! However now it’s week three of your internship, you haven’t any concept how something works, and also you’ve written one line of code prior to now two days.

How do you ask for assist? Whom do you ask for assist? Must you even ask for assist?

Working at Slack, I discovered that understanding learn how to navigate these conditions and unblock your self is crucial to having a profitable internship. Studying learn how to be taught usually felt extra vital than studying the technical materials itself.

Background

  1. I’m going into my final yr on the College of Virginia, majoring in Pc Science
  2. Earlier than Slack, my solely work expertise was at a small startup the place there was just one different iOS engineer; this summer season was a totally new expertise for me.

 

My undertaking

  • I interned on the iOS Software Infrastructure workforce. My undertaking centered across the Mentions tab (also called the Actions tab)
  • I used to be tasked with altering the info supplier for the Actions tab
    • Earlier than: knowledge refreshed from an API name triggered by handbook pull down, or 60 second timer
    • After: use incoming WebSocket occasions with message knowledge to replace the display screen, as an alternative of ready for the subsequent API name

The primary a part of my undertaking centered round including listening for updates to message fashions related to current actions. The technical a part of this undertaking was not that tough by itself. It nonetheless took me round half of my internship, although, as a result of I used to be familiarizing myself with the codebase and — extra importantly — studying learn how to be taught.

The second a part of my undertaking concerned including a brand new knowledge supplier that streamed all actions from WebSocket occasions, after which mixed it with the present knowledge stream. This was a a lot more durable job than the primary half, however as a result of I had realized learn how to unblock myself, every part went rather a lot sooner; I used to be by no means caught for that lengthy.

Hopefully, a number of the issues I realized this summer season may also help future interns get to that time earlier of their internship!

When to ask for assist

Step one to understanding when to ask for assistance is studying that the trade is a totally totally different world than faculty . There isn’t any dishonest, there aren’t any particular person grades, there aren’t any exams. Every little thing, particularly at Slack, is collaborative. If it’s going to take you two days to repair a bug, however one other engineer can let you know what’s mistaken in two minutes, you ask for assist.

A very powerful query to ask your self when deciding whether or not to ask for assistance is:

Will I be taught something from spending extra time on this?

Your job as an intern is to be taught as a lot as you’ll be able to. Generally, you’ll be taught rather a lot from taking the time to step by an issue. Different instances, you would possibly waste an entire day within the debugger on a easy drawback that may be solved with a one-sentence rationalization out of your mentor.

Varieties of issues you shouldn’t spend important time tackling by yourself:

  • Formatting
  • Syntax
  • Which operate to name to get a sure kind of knowledge

Varieties of issues you would possibly wish to spend a while tackling by yourself:

  • How a operate you’re calling truly will get the info you want
  • How adjustments within the state of part of the app get mirrored within the UI

The important thing distinction between these two sorts of issues is the distinction between information and understanding. You must solely spend the time to step by an issue by yourself if doing so will go away you with a greater comprehension of how issues work.

Even when approaching issues by your self may also help you be taught, generally you continue to would possibly need assistance from another person to maneuver ahead. That is completely fantastic! Apps like Slack are extremely sophisticated, and interns usually are not anticipated to have the ability to perceive every part by themselves. So long as you ask for assist in the correct manner, there’s nothing mistaken with it.

Tips on how to ask for assist

Ask questions which are easy to reply.

Should you’re asking a knowledge-based query, that is fairly simple as a result of there’s usually one easy reply. For instance, it is a query I requested in the beginning of my internship:

When you’re blocked on a extra sophisticated drawback, asking the correct query turns into rather a lot more durable. I undoubtedly had hassle attempting to seize the complexity of issues whereas nonetheless offering an easy manner for another person to reply.

Step one that helped me was merely spending time attempting to grasp the issue. Should you perceive 95% of the change you’re attempting to make, clarifying that final 5% is rather a lot simpler for another person to do than stepping by your entire course of. In my expertise, persons are very prepared that will help you if it’s clear that you simply’ve hung out gaining understanding of the methods you’re working with earlier than asking them for assist. Generally, you’ll even reply your individual query within the technique of attempting to grasp the issue!

Should you nonetheless need assistance after attempting to achieve an understanding of the issue you’re engaged on, the subsequent step is to offer as a lot context as you’ll be able to when asking your query.

This will contain describing:

  • What you perceive about the issue
  • What you don’t perceive about the issue
  • What you’ve modified
  • The anticipated habits vs. the precise output

As an alternative of claiming one thing like, “I’m having hassle implementing <function>, are you able to assist?” say one thing like, “I attempted utilizing <operate> to implement <function>, however as an alternative of <anticipated habits>, <precise habits> is occurring. Do you might have any concept learn how to strategy this?”

One other technique for unblocking your self is pair programming or calling with somebody in your workforce. I might undoubtedly suggest doing this as a lot as doable, particularly on your more durable issues.

Whom to ask for assist

At my final internship, my supervisor was additionally the one different iOS engineer on the firm. In different phrases, in 99% of conditions the one particular person I requested for assist was my supervisor. This summer season, I discovered myself on a workforce of 14 folks, all with information in several areas. It was not easy to know whom to ask for assist.

What I realized:

  1. Don’t be afraid to ask for assist in a channel. Should you don’t know who to ask, it’s significantly better to ask in a public channel than to DM half of your workforce till somebody may also help you.
  2. Don’t be afraid to ask your mentor or supervisor whom they suppose it’s best to ask.
  3. If somebody helped you with a sure space earlier than, don’t be afraid to ask them for assistance on the identical matter once more.

Evaluating two examples

Let me give you two examples from this summer season. The primary one is a scenario the place I ought to have requested for assist earlier however didn’t. The opposite is one the place I efficiently took time to grasp the issue earlier than asking for assist.

Scenario 1

This example is from the very starting of my internship. For context, in Slack’s iOS app there are totally different knowledge fashions for a Message and an Exercise (aka a message that mentions you or a response to your message). For every Exercise, now we have an related id that appears one thing like:

<channelId>_<timestamp>_<kind>

I used to be attempting to alter the actions knowledge supplier to pay attention for updates to any messages related to actions. Messages even have a id, so I added a stream of Message fashions with the identical id as the present Exercise fashions. Unexpectedly although, the stream wasn’t returning any Messages. I stepped by the debugger for some time and ultimately noticed that in different elements of the app that used MessagesDataProvider, Message ids appeared totally different; all of them had no kind and simply appeared like:

<channelId>_<timestamp>

I wasn’t positive if this id discrepancy was from a mistake I had made when making native adjustments to Message knowledge, or if it was as a result of ids are totally different in Actions and Messages. At this level, I ought to have merely requested, “Are Exercise and Message ids totally different?” to see learn how to strategy this drawback. As an alternative of asking a clarifying query, I jumped straight into discovering an answer. I ended up utilizing one other Exercise discipline messageIdentifier because the ID to stream Messages, which appeared to work.

The issue was that as a result of I by no means requested a query, I didn’t actually perceive why the ids had been totally different, although it appeared I had discovered an answer. In a while, I ran right into a bunch of issues as a result of after I began creating Actions from Messages, I copied all of the Message fields, together with id! This brought about issues with duplicate actions, as a result of I used to be writing the identical Exercise with two totally different ids (one with the kind, one with out).

It seems, as you will have guessed, that Exercise and Message ids are simply formatted otherwise and I wanted to transform between the 2. I finally clarified this by asking somebody. Nevertheless, I might have saved myself hours and hours of time if I had merely requested this query as quickly as I noticed the id discrepancy. This was a information-based query and never an understanding-based query, so I ought to have requested as quickly as I wanted clarification. I’m glad this occurred in the direction of the start of my internship, as a result of I used to be in a position to be taught from it and be extra prepared to ask information based mostly questions sooner or later.

Scenario 2

This example comes from midway by my internship. I had simply completed the primary a part of my undertaking and was beginning the second half: including the power to stream Actions created from a distinct supply (WebSocket occasions) than we usually do.

Based mostly on a suggestion from my supervisor, I took an entire day simply to write down a doc that defined precisely how knowledge flows from the community request that returns actions to the UI within the mentions tab. Doing this gave me an immensely higher understanding earlier than I began the issue. As soon as I did begin, I spent just a few days implementing a fundamental answer that appeared to work from my exams. It was at this level, after gaining some understanding of what I used to be altering, that I requested for evaluate on my adjustments.

The PR evaluate got here again, and it turned out that I did it fully mistaken. Nevertheless, as a result of I had a stable understanding of the system, I instantly requested for assist and joined a Huddle with two workers engineers on my workforce. We mentioned one of the best ways to strategy the issue; it turned out that I needed to write a brand new knowledge supplier for the actions tab that mixed a stream of actions from the final API name with a stream of actions filtered on the final timestamp of the opposite stream.

This one Huddle in all probability saved me weeks of time that I might have spent if I had tried to only sort out the issue and create an ideal answer alone. Nevertheless, if I had requested for assist earlier than I understood the issue, I wouldn’t have been in a position to acquire a lot from the decision.

The takeaway from this case is that it’s best to attempt to discover the candy spot of asking for assist: it’s best to perceive sufficient that different folks can effectively allow you to, but additionally ask early sufficient that their assist saves you time.

Huge takeaways

Studying learn how to work within the trade is as vital, if no more, than studying the technical aspect of software program engineering. I additionally discovered myself rather a lot much less harassed after I turned extra comfy asking for assist. As soon as I turned comfy, I felt like far more of a workforce member than a person engineer and had much more enjoyable day-to-day.

My closing recommendation is simply to get pleasure from your time as an intern! Twelve weeks flies by and it truly is such an superior alternative to be an intern at Slack. I’ve had a tremendous summer season and I hope any future interns studying this may too!

In case you are inquisitive about engaged on Slack’s cell apps, try our open roles! Apply now