Why are you doing a software engineering internship? What is it that you expect to get out of it?
Maybe you want a full-time job offer for after you graduate. Maybe you want to build your professional network. Maybe you’re trying to earn a bit of cash. Maybe you just want to absorb as much information as possible and become a better software engineer.
Regardless of your specific goals, there are some things that everyone should do during their software engineering internship to make the most out of the experience. Depending on your goals, you may want to focus on some points more than others, but to have the best possible experience, you should try to incorporate all of these ideas as much as possible.
Do real work
Fortunately, for most software engineering internships, we are past the whole “get your boss coffee” internship paradigm. That’s awesome, because presumably you’re doing an internship to build your technical skills. Sadly, however, interns still often get shunted off into the land of “intern projects”.
Intern projects are generally small, standalone projects for each intern to complete over the course of the summer so that they can have some sense of accomplishment, while safely keeping them from breaking any of the important software at the company. It’s easy to see why intern projects exist, but despite the (maybe) good intentions of managers, interns can easily get siloed into their project and not get the chance to learn about the full product or make any real contribution to the company.
While you aren’t going to get out of doing your intern project, that doesn’t mean you have to be stuck doing one thing for the whole summer. With some concerted effort, most intern projects can easily be completed before halfway through an internship. Once you’ve proven yourself by completing your project (and doing an excellent job), it’s easy to ask to be included in the real work going on at the company. Even picking up small tasks will quickly expand your skills.
When I interned at Hubspot in 2014, I decided that I was going to go all-in. I’m not naturally an outgoing guy. Although I enjoy speaking with people 1-on-1 and in small groups, I struggle to go up to people and ask for what I want when I don’t know them well. I wasn’t going to let that hold me back, though, so I found a compromise: email.
Learning from my buddy Smit Patel’s experience interning at Hubspot a year earlier, I sent out a few emails every day, requesting that people get lunch with me. I was prepared for a lot of rejection, being a lowly intern and all, but more than 90% of the people responded, including the Director of Marketing, VP of Engineering, Chief Revenue Officer, and CEO, all agreeing to join me for a meal. I ended up having several lunches with new people each week, meeting more than 20 people across the company that I never would have interacted with otherwise.
Not only was I able to learn from higher-ups at the company, but I learned all about other areas of the organization that I wouldn’t have had a clue about otherwise. It also opened up interesting opportunities, like sitting in on customer support calls and learning how sales works at a growing SaaS company.
As an intern, you are in a great position to ask for stuff. You are there to learn, and people understand that and are willing to help. Be a sponge. Absorb everything. Talk to as many people as you can, especially making sure to find people outside of the engineering team. And reach out to people. Most people are way more accessible than you might think.Be a sponge. Absorb everything. Talk to as many people as you can. Click To Tweet
Find a great mentor
A mentor can be anyone. Maybe they’re your tech lead. Maybe they’re the intern who started two weeks before you. If you’re lucky, maybe they’re the CTO.
Regardless of their title, a mentor is someone who will help you learn the ins and outs of the company. They’re someone you can always turn to if you have a question and they will help you learn the things you need to know to be effective at your job. Also, importantly, they’re an objective observer of how you are succeeding or not at your internship.
Finding a great mentor is hugely important to your success in any internship. A great mentor will help you to integrate into the company much more quickly and easily, letting you spend less time getting up to speed and more time actually doing meaningful work.
As an intern, it is most likely that you will be assigned a mentor as part of your internship program, but that doesn’t mean you have to settle for that particular person. Not all software engineers are cut out to be mentors, and if your mentor doesn’t provide you with the support you need, don’t hesitate to find additional mentors. Instead of officially asking “will you be my mentor?”, see if you can schedule meetings every week or two to pick their brain.
Scheduling weekly meetings is important because it gives you a forum to bring up any concerns that might have arisen in the last week and makes sure that you can regularly update people on your progress. This also relieves the pressure of scheduling a meeting for a specific problem. You can talk about something in your pre-scheduled time rather than having to take additional time out of their day.
Most people are not good judges of their own performance. This is a direct result of the differing perspectives and expectations people have. Although you may know that you’ve been working really hard, your coworker may think that since they always see you watching Netflix, you aren’t being productive. Even though you know that you work better with How I Met Your Mother playing in the background, their impression matters.
You’ll rarely learn what other people think unless you ask them. This is one of the great advantages of having weekly one-on-one’s with your mentor: It gives you a chance to ask for honest feedback. If your mentor is also your tech lead or manager, this is even better, because chances are they have heard about you from other people as well and can give you a summary of their feedback.
In your one-on-one, you should ask “What do you think I’m doing well and what could I be doing better?” People often try to be non-confrontational and may resist giving any useful feedback unless urged to, so you should prod them.
Most importantly, once you get the feedback, listen to it and act on it. It is really easy to justify the feedback that people give you by saying “Oh, they just don’t understand.” But thinking this way is not productive. You won’t be able to explain yourself to everyone. You can’t write an email to the company saying “I’m more productive while watching Netflix.” (Well you can, but I wouldn’t). As a result, everyone who walks by your desk is probably going to have the same negative impression about you not working hard enough, so what you really have to do is take the advice and stop watching Netflix at work.
Keep a “to-done” list
This is as much a productivity tip as a tip specifically for internships, but it also applies particularly here. Many people make to-do lists that list all of the things that they want to get done on a given day. A “to-done” list is a list of all of the things that you have already accomplished (name thanks to James Magnarelli).
To-done lists are a great way to show your manager or mentor what you’ve accomplished without them having to look over your shoulder all of the time. As an intern, you haven’t earned a lot of trust and so people will want to regularly check up on you. This is as much for your own benefit as theirs (they don’t want you to be totally stuck on a problem), but it can get overbearing. By creating a to-done list that your manager/mentor can see (something like a shared Google Doc), they can make sure you’re on the right track without having to constantly bug you.
There are also benefits to keeping a list of things that you’ve accomplished from a productivity standpoint. Some argue that it is more motivating to see all the things that you’ve accomplished rather than a laundry list of things to do. I’m no productivity expert, but if you want to read a bit more about it you can checkout this Lifehack article and this Slate article.
This may seem obvious, but I have to include it because it’s something that I personally struggle with a lot. When I get stuck, I work through the problem until I solve it. Sometimes it’s fast and I can resolve it in 10 minutes. Other times, I can spend days on a problem. There are some times when this is necessary, but if someone else can quickly answer your question or solve your problem, this is a total waste of time.
The key here is to figure out the right time to ask. While you don’t want to waste too much of your own time, you also want to show the people you’re asking that you tried to figure out the answer on your own first. But every problem is different. There is no single hard and fast rule for when to ask, so you’ll have to use your best judgement. Here are a few ideas, though:
- When to ask about something non-technical:
Ask immediately. Don’t waste your time trying to figure out how to log the hours you worked in Workday when someone in HR could tell you.
- When to ask about a part of the product handled by another team:
Spend no more than 30 minutes figuring out the basic architecture of their software so you can ask intelligent questions. Then ask.
- When to ask about a part of the product handled by your team:
Spend an hour. If you’re making significant progress, continue. If not, ask. It is also reasonable to ask your manager how long they think a task should take. If you don’t think you’re going to finish anywhere within that timeframe, ask.
Also don’t hesitate to ask people about other aspects of the company. When you have lunch with them, ask questions. Try to learn everything that you can. Show your interest in the company and it will make a huge difference.
Summer internships can be really fun or really lame. As much as the internship is dependent on the company, it is more dependent on you and what you make of it. As with so many things, you get out of it what you put in, so put in everything you’ve got. Success at internships is one of the biggest factors in getting a full-time job, so don’t waste your chance.