Jason Ashton

On Internships

Feb 3, 2022

Me presenting

My final presentation of my Lyft internship

I consider getting an internship to be the most crucial part of a successful computer science (and most other) college experience. As I advise my younger family members and other friends graduating college around me, the world is an extremely competitive place. There are thousands of other students graduating at the same time into an increasingly tight labor market. Many of them will have better grades, come from a better-known school, and will have more extracurriculars. The deciding factor, then, might be the extra experience and investment into your own education that an internship brings.

Many students get caught up in the all-encompasing college experience. My peers at school were very involved in extracurriculars and had some of the best grades. The problem I saw with some was that they were great at “doing school” but were so focused on their clubs and grades that they ignored the outside world. By the time that graduation came, they were taking the jobs that they were left, but not necessarily the best jobs. The best jobs went to those that understood that college is the time to set yourself up for success, and not to wait until graduation day to figure it out. Many new grad roles fill up months before commencement.

This post details my experience with internships and the successful strategies I learned from others. My first internship was between my Sophomore and Junior year, and the second between my Junior and Senior year, which I took a full-time offer from.

Understanding Internships

When a company takes on interns (and new grads) it is expected that their raw work output won’t get them the best value per dollar. But it’s seen as an investment into the talent pool, good marketing, and a relatively low-risk hiring funnel. The company is giving you an opportunity to take (in education) more than you give (in work output). These opportunities can lead to return offers, but at the very least will signal to other companies that you have important work experience, and are familiar with how to work.

Even just the understanding of “how to work” will give you a leg-up on other new-grads. A full-time work environment is significantly different than college life. Intangible skills and experiences like being able to sit at in the office for eight hours (if that ever comes back?) are important. When I first started my internships, I couldn’t believe how long the work day felt. College is full of bursts of work and broken-up time. By a few weeks in however, this starts to feel normal. You learn about etiquette, the hierarchy of management, how to work with people with much more experience than you, and all of the other things that aren’t experienced in school.

If all goes well by the end of the internship, you will have done some work that you can be proud of. This work gives you something to talk about, to prove that you know how to do something “in the real world’. If you’re lucky and you enjoyed the job, you might even get a return offer. There’s nothing more satisfying than cruising through senior year knowing you don’t have to fret over job applications.

My Internship Experience

This is my anecdote, feel free to jump to the next section.

Sikorsky

The summer between my sophomore and junior year I did a summer internship with Lockheed Martin (Sikorsky) in Stratford, Connecticut. My lead on this one was a personal connection, so not the most helpful to everyone, but it’s important to note. I would encourage anyone to scour friends and family for an “in” on a potential work experience. Do this early (freshman or sophomore summer ideally), as the situation might not be your first choice, but will provide the crucial foundation for the following summers. Once you rack up work experience, take that to get a more targeted experience the following summers.

For twelve weeks I commuted an hour and a half each way, waking up at 5:00 AM every day. It was a typical defense contractor cubicle office workplace, with cool helicopter things here and there. The work environment was disorganized, I never even got set up on the codebase. Instead they had me do research and try out a few algorithms they were interested in. The project I was on was autonomous helicopter development, so the concept was very cool, but the day to day wasn’t as glamorous.

Since my work involved researching algorithms, I spent the summer reading about autonomous technologies, at a time when self-driving cars were ramping up development. The headlining companies like Uber and Waymo had exciting promises, the best engineers, and cool offices. I knew that I needed to get into one of these companies the following summer.

Crucially, I also began to understand that there was a lot that I didn’t know and I didn’t have anything to stand out. To start to learn, halfway through my internship I enrolled in the new Udacity Self-Driving Car Nanodegree, for a whopping $800. This was an investment into myself, and would hopefully set me apart when I started to apply to the companies I was interested in. Thankfully now they have some discounts for students.

Lyft Level 5

Every month during my Sikorsky internship and after I was checking out Hacker News’ Who’s Hiring? thread looking at self-driving companies. That August I saw a small post about Lyft looking for full time engineers for their self-driving research. I reached out to the poster, asking if they had internships. The answer I received was no, but to send a resume, which I happily did. I then didn’t hear anything for a few months.

In the meantime I bought “Cracking the Coding Interview” and started to grind out Leetcode problems to prepare for the technical interviews that I had no experience with. The problems were hard, especially for only being halfway through my schooling with no algorithms classes yet. But as you keep going, they get easier. I was applying to every self-driving research intern posting I could find, and made a big spreadsheet to organize it all.

The first culmination of my preparation was an interview with NVIDIA. By this time I felt ready to test all of the algorithms practice I had put in. To my dismay, my interviewer had other ideas. The question was a physics/math one, which I still remember clearly: “If you have a robot with two wheels one meter apart, each controlled by a motor controller that accepts a speed in meters/second, what do you set each wheel to so that the robot turns in a 10 meter circumference circle in ten seconds?” The answer is 0.95 meters/second and 1.05 meters/second. I guess the interviewer just wanted to evaluate my thinking skills, but I was so thrown off I couldn’t even think through the problem. I promptly proceeded to quiz my roommates, who weren’t sure either. Needless to say I did not get the internship.

Interviews kept coming and weren’t going well. I was getting better but as anyone who’s done an algorithms interview knows, either it goes well or it doesn’t.

Lyft Level 5 (the self-driving division) eventually reached out to me and scheduled some interviews. After passing a preliminary phone call I had a three hour technical interview containing three parts. A live coding interview, a “take home” test, and a chat with a manager. When the time came, everything “clicked”. I had done enough interviews at this point that I was familiar with the types of questions they asked. Each one was a variation of something I had seen before, and my confidence was at an all-time high. It was the failing of previous interviews that best prepared me to do well in this one. I ended up getting the internship offer, and it was my favorite option out of every company I had talked to.

That following summer I arrived in Palo Alto having never been to California before. My home for the summer was a $2000/mo bedroom in Los Altos, close enough that I could bike to work.

At the time, Level 5 was like a rapid-growing startup. Progress was being made quickly, I had incredibly smart people to learn from, and a cool office with robots and snacks everywhere. Writing software in a software-first environment was dramatically different (and better) than working in an old-school organization. It was everything you hear about Silicon Valley - big open floor plan, people hacking on both hardware and software, t-shirts boasting which company you came from, and kombucha on tap.

My first assignment to get me up-to-speed was to add some small extensions to an internal math library. At that point I hadn’t worked in a production environment before, and my C++ experience was from my operating systems class. I won’t forget getting my first review on my pull request, my mentor probably put 30+ comments, and after addressing all the issues, would add thirty more. Over time I made it my goal to get as few comments as possible, and my software skills grew rapidly.

I learned a ton that summer. This included hard skills like using git, writing better C++, and how a production codebase works. But maybe even more so were skills like working with a mentor, how to participate in meetings, how to accept (and give) feedback, and what kind of engineer I wanted to work to become. Thankfully my hard work paid off, and I received a full time return offer, which I happily accepted.

My advice

While some parts of this are CS-specific, like algorithms interviews, the more important part is identifying where your college experience will take you and how to get there.

Identify what you’re looking for

Many students leave high school and enter college not knowing what they want to do with their lives. They enroll ‘undecided’ or with a generic declaration, and push off figuring it out for later. While I think this is fine, I also think a lot of students don’t actively work on figuring it out. Many end up picking a major based on which classes they like better. What’s missing is an understanding of where that major will take you.

Even if you’re confident in what you want to study, it’s important to understand the careers that come with it. Go to the career center and ask what jobs students of that department are taking after college. At Worcester Polytechnic Institute, my school, a report was published every year of the companies that students went to work for. Look at these positions and understand if this is something you’re interested in. It’s also important to understand where these jobs are located, what career progression is available, how much they pay, and what the day-to-day looks like. You can even look on LinkedIn for alumnus in positions you are interested in, and reach out to them to learn more about their work experience and how they got there.

The goal is to form a plan that lands you somewhere you are happy with. Once you’re in a school, it costs the same amount to get a degree that sets you up for success as one that is ultimately unused.

Understand the market

Once you feel confident in your career succession, make a plan on how to get there, and how to stand out. Look at job descriptions for new grad positions, what are they asking for? It’s important to remember that there will be many other students graduating with the same degree applying to this job. Identify what you can add onto your resume that will make you stand out and be a better fit for this position.

Research the major (and local) companies in your field and understand the internship positions they have. Companies often visit schools to promote their programs, sign up at your career center to learn when these are available. Lastly, while the career fair is often tailored towards full-time positions, go and ask about internships. Learn from the representatives what they are looking for and what opportunities are available. Treat this as market research and interview preparation.

Set yourself up to stand out

There’s many different ways to stand out among the crowd. The most accessible and familiar way is to start or join a club on-campus that is targeted at your career path. There are many engineering and other discipline societies that are available to join. Try to work up to a leadership position in one of these, and make sure that there are specific results that you can speak of. Organize speakers and activities, hold events, and produce something that shows it’s more than a social club.

Another way is to educate yourself beyond what is available in the classroom. The courses you take will be generic enough to facilitate students entering a variety of roles. If you’ve identified a more specific path, take it upon yourself to do extra projects and learn skills that align well. This might look like earning certifications, taking accredited courses (that require actual submitted work) from something like Coursera, or producing content. You might start a blog where you identify topics and write about them, showing your interest and ability to be pro-active.

It’s a numbers game

When I talk to students applying for jobs, the first thing I ask them is how many they’ve applied to. The answer is almost always less than five. My response is to make it fifty, ideally closer to a hundred. The reason is simple: if you have a 10% chance of getting an interview and a 10% chance of getting an offer, you need to apply to a hundred companies before you will land an internship. Friends of mine in college were applying to over three hundred companies (this might be a bit extreme). Create a big excel spreadsheet of each company and your application status, and apply to 5-10 a day for a few weeks. Even if you face trouble in the beginning, you’ll quickly become an interviewing pro.

Prepare for the interview

Before applying, carefully prepare your resume. Use a professional template, and read the resumes of others for comparison. Have someone with professional experience review it, your career center should be able to provide this. Be sure you can speak to each topic at length, and rehearse doing so. Once you have an interview scheduled, research the company and make sure you understand what they do, and prepare questions ahead of time.

A note on CS interviews: Buy “Cracking the Coding Interview” and read it. Work through the problems in the book, and then move to Leetcode. It’s very hard at first but it gets easier. This is an unfortunate requirement of the field, but it’s worth the effort.

Conclusion

Successfully landing and completing an internship is rewarding, fun, and sets you up for success. With careful planning and a little above-the-rest work, you can stand out and land your dream role.

older, newer
comments powered by Disqus