Making the Most of Your Remote Internship

With Four Lessons From My Time at Amazon as an SDE Intern

Published in
7 min readSep 2, 2020

--

This year has been a year of relinquishing any idea of control. If you had told me back in December (in the before time) that the internship offer I was ecstatic to receive would not be completed in Amazon’s Austin offices, but virtually during a pandemic of which the U.S. would be the epicenter, I would have asked which timeline you’d leaped from.

Unfortunately, in the totally hypothetical case that I had scoffed in the face of a time traveler warning me of the perils of 2020, I’d have been sorely mistaken in my disbelief.

Like everyone, the past couple of months have been a lesson in adaptability and a test of resolution and purpose - one which I’d like to think that I passed.

Though I’m no time traveler, fortunately for you, future reader, you have someone from the past with a message to you at present containing some brief lessons I learned during my remote internship that will (hopefully) help you make the best of yours.

Help Others Help You

Photo by Annie Spratt on Unsplash

You’re working as an SDE, so you’re probably used to the struggle of problem-solving. Or maybe I’m the only one who takes Ken Thompson’s quote, “When in doubt, use brute force,” a bit too literally. Regardless, a phrase I like to remember to counter the rugged individualism that so many SDE’s seem to battle is “It’s dangerous to go alone!

In other words, part of being as productive as possible is striking a balance between making a best attempt to solve a problem and badgering your mentor or teammates to come up with solutions to problems that are your responsibility to solve. Hence, the two parts of this phrase.

By making solid attempts to fix the problem you a) solve the problem (hooray!) or b) eliminate the most apparent possible solutions before going to someone else to collaborate.

Then, by going to peers or mentors for help with what you’ve tried and the errors you’re facing, you’re better able to engage in the process of solving the problem and set up your advisors to better support you.

Notice that you still have to go to them for help. DON’T be like me and try to struggle your way through every little problem. DO attempt a few things, document your attempts and errors, and reach out for support if you’re blocked for longer than a couple of hours.

Look for Learning Resources

Photo by Anthony Martino on Unsplash

Throughout the course of my internship, I noted and bookmarked any resources that I found helpful. I saved them because they were useful. Many times I did so after I had made a first run at the problem. They would’ve been even more useful if I had found them before I reverse-engineered my own solution to the problem they walk the reader through solving.

At a large company like Amazon, it’s unlikely that you’ll be asked to work on something within a framework that no one else has worked on, at least as an intern. That’s not to say that your project has been done before, but that the workflows and general architecture that you will utilize have been leveraged by another engineer to create something different.

For me, I was creating a cloud-native AWS application that needed to call a legacy service. Learning how to do so was a learning curve in itself. Well, halfway through sifting through documentation, I found an internal tutorial that walked the reader through the exact process I was struggling with. What I felt was a combination of relief that I found it, and frustration with myself that I didn’t look for something like that earlier.

Also, remember that other teammates are sources of knowledge too. Reach out, schedule 1:1’s with people in your team, and in the larger org.

Explore, But Don’t Get Lost

Photo by Gabriel Sollmann on Unsplash

As an intern, the sheer amount of information coming at you is unbelievable. You’ve likely never experienced engineering at the scope and scale of the company you will be working at.

Toy programming assignments pale in comparison to the moving megaliths of modern engineering that are Amazon services. It’s simultaneously daunting and exciting to have the privilege of working on such systems. It’s easy to spend hours exploring the details of low-level concepts that ultimately have nothing to do with your project.

Now, I’m by no means saying that spending hours reading is a waste of time. In fact, love of learning is a necessary attribute to every successful SDE; however, as an intern, success also requires you to make the best use of the limited time you have and maximize your impact on the host company.

If I’m honest, the intimidation I felt around my ability to perform well in these new gargantuan systems prevented me from acting on the knowledge I gained from all that exploration and reading.

I roamed and explored my new environment, but found myself lost in inaction. Thankfully, my manager was keen enough to perceive what was going on and I was supported in executing on my project.

Map it Out and Leave Breadcrumbs

Photo by Thought Catalog on Unsplash

When you start, you won’t be sure where you’re headed. You may not even know the details of your project as you’re reading this.

That’s okay.

Each day you learn more that will help you see further toward the horizon that is project completion, and each day you get to choose where you’ll direct your attention to get you closer to that aim.

The best practice I have to share from my time at Amazon is keeping a notebook designated just for work-related things — not digital, but physical.

It sat on my desk, and each morning I would write down the date and what I wanted to accomplish, and each evening I would mark items as complete or move them forward for the next day (if they were still relevant) along with notes about my stopping point at day’s end.

With this practice, I knew exactly what I would work on. My day ahead was mapped out with each morning being a step forward from where I last stood. It was nothing fancy, just some bullet journaling and scribbles about where I was the night before. But from the scribbles and scratches came threads of thought which I weaved into real progress.

If you take away nothing else from this reading, at least remember this — document, document, document.

After you leave, your work will have to stand on its own. Someone — team member or otherwise — reviewing your project should be able to learn about the following, at a minimum:

  1. Your initial motivation, design, specs, and stretch goals. Yes, that means a carefully considered design doc.
  2. Your project’s final implementation and the technologies you leveraged to get to completion along with your familiarity with said technologies prior to working on your project.
  3. How to use your final deliverable. Think walkthroughs with screenshots, videos, etc. Bonus points for a FAQ and troubleshooting section.
  4. Your process of discovery that informed design and implementation.
  5. Orderly artifacts of engineering (ie. comments, commits & code reviews).

At the end, I had a progress map of where I started and the path I took to get to my end result. Along with that, I also had all the lessons I saved that helped me and allowed me to compile this to (hopefully) help you.

Bonus Tip — Reach out!

Photo by Dylan Ferreira on Unsplash

Your perspective is your reality. There were plenty of occasions this summer when I thought that going virtual put me at a disadvantage compared to working in an office. When I felt that way, I reminded myself of all the benefits that came along with a giant organization working from home.

The biggest one? The only method to connect with others is virtual. It’s not just the default, it’s now the norm. And with that, people from all over the company are accessible so long as they have the availability. It only serves you to request time on someone’s calendar and show up with thoughtful questions and an inquisitive mind.

This cannot be understated: as an intern, your superpower is the ability to explore.

You’re there to learn, to search, and to fully experience working within the environment and culture that is your host company. An internship is a distinctly unique experience from any other job title in that you can wander the (virtual) halls of a company to find where you may fit best and then return post-graduation.

Now, I didn’t try to put time on Jeff Bezos’s schedule, but I did get to meet with some amazing people during my time who lent their own lessons, insights, and experiences that enriched my learning and internship experience. I hope you do the same. Good Luck!

Thanks for taking the time to read this piece. I’m a senior at Columbia University studying Computer Science & Mathematics with aims to leverage the power of technology against the biggest problems facing humanity — sustainable energy and aging.

P.S. If you enjoyed this read, be sure to connect with me on LinkedIn or Twitter.

--

--

ATX-based Smart Contract Engineer @ Dapper Labs | Interested in building things that empower individuals and communities | CS-Math @ Columbia