A Comprehensive Guide to Success in the Tech World for Software Engineer Interns

A Comprehensive Guide to Success in the Tech World for Software Engineer Interns
Meta interns enjoying the unlimited free meals, snacks, and drinks. Only half will get a return offer.

We're entering our favorite time of year – summer intern season! From excited new faces joining the team meeting to anxious faces trying to make sense of a massive codebase, internships are hugely important for students.

Done correctly, interns earn valuable experience, accelerate their careers, and sample the life of a full-time software engineer.

Done poorly, interns read documentation and complete useless tasks.

As the founder of Taro, a software engineering coaching platform, I've talked to 100s of software engineers to speed up their career growth. More than a decade ago, I was also an engineering intern at companies like Meta and Walmart. My co-founder Alex has directly mentored dozens of engineers directly from his time at Meta and Robinhood. This guide is the distillation of two decades of experience.

Will this help me?

This advice is designed for you if:

  • You're working full-time (40 hours/week) in a 10-12 week internship. We believe the shortest period for a "proper" internship is 8 weeks.
  • Your title includes engineering and you're responsible for writing code. If your internship is about fetching coffee or organizing files, this guide won't help. (And I suggest finding another internship!)
  • You're at a legit company with a properly-resourced intern program. That means you have an assigned mentor. Companies like Meta, Google, and Airbnb are famous for the quality of their intern programs.

Starting a software engineering internship is both exciting and overwhelming. In this guide, we'll share the key aspects of surviving (and thriving) in your internship. We'll focus on the key strategies for confidence and success while you work toward that sweet, sweet return offer πŸ₯³

πŸ–₯️
A Meta internship or Google internship is lucrative, but the much larger prize is getting that full-time offer.

Differences between an internship and a full-time role

Before we dive into specific tactics, it's worth calling out what makes a software engineering internship unique compared to internships in other disciplines like Mechanical Engineering or Psychology: you do real work.

One of the best parts of the software industry is how easy it is to get started. Whether you're an 18-year-old student or an 88-year-old retiree, you can create valuable software with just your laptop. You don't need to undergo weeks of safety training, you don't need to obtain a security clearance, and you don't need to order a bunch of equipment.

As a software engineering (SWE) intern, this means you need to have real impact on your team. You're not shadowing an engineer; you're shipping code and delivering a feature that people actually use!

And you should do it fast. Meta famously encouraged engineers to ship code to production in their first week.

Moving quickly is especially important as an intern. You should think of a 12-week internship as a 12-week interview. Whatever urgency you see with full-time employees, double or triple it for yourself πŸ˜…

A full-time software engineer may get performance feedback every 6 months, but your entire internship is 3 months long. The time to onboard, get feedback, and deliver your project is dramatically compressed as an intern. Keep this in mind throughout your summer – socializing with your fellow interns is fine, but remember that you have work to do.

Timeline and success rate

The best SWE interns will operate as strong new-grad engineers, and you only have a few weeks to show that level of competency. Here's the week-by-week breakdown:

  • Weeks 1-3: Onboarding
  • Weeks 5-6: Mid-cycle review
  • Weeks 10-11: Final calibrations (return offer is decided here)
  • Weeks 11-12: Have fun. Your performance in the final weeks typically won't count in your final review
21-year-old Rahul could have used this guide

A common myth about internships at these high-powered companies is that the evaluations are a formality – if you're well-liked, you'll get a return offer. Nothing could be further from the truth.

The best intern programs maintain a high bar. They are truly used as a recruiting and evaluation tool, which means not everyone will "pass" the internship. The return offer rate is ~50%, and this is further reduced in poor economic times.

This is another difference between an internship and full-time employment: unlike full-time employment, the outcome of an internship is binary – did you get the return offer or not? Landing the return offer can unlock lucrative packages with total compensation (TC) of more than $250K/year.

πŸ’Έ
After receiving the full-time conversion offer after my Facebook internship in 2013, I received a $125,000 signing bonus.

Onboarding efficiently

Your first few weeks on the job are critical since they set the foundation for your entire internship. As soon as you get your equipment, your goal is to get the minimum viable environment setup to start exploring (and running!) the codebase. Remember the urgency we talked about for the best interns? It starts here.

At any reasonably-sized tech company, there will be many mysterious parts of the setup. You'll run a script that does something, but you're not sure what. (I remember one of my past companies literally had us run setup_script.sh.) Resist the urge to rabbit-hole into tools or code that are not directly tied to your work. Your goal is not to satisfy your intellectual curiosity, it's to have a business impact.

Interns during onboarding

Speaking of impact, you should set up a 45-minute meeting with your intern manager (IM) ASAP, no later than your first week. Your intern manager can explain the codebase to you at a high level and answer the many questions you'll have. You should also ask about what type of work or project your IM has planned for you.

You should also set up 30 min 1:1s with other engineers on the team. At the very least, the list should include the team's eng manager, the Tech Lead, and any engineers familiar with your intern project.

In the first 2 weeks of your internship, you'll meet a bunch of people, but most of your time should still be focused on the code. As soon as you're setup, start working on an "onboarding task". If you're not assigned one, ask for one.

The idea of an onboarding task is to get familiar with the workflow of landing code. The actual code change is irrelevant, and in fact, the simpler the better. An ideal onboarding task is something like "Remove this comment", or "Fix the spelling of this variable name" – your goal is to get familiar with the codebase, understand the review process, and get the confidence boost that comes from shipping code.

Your aim should be to merge your first Pull Request (PR) or code change by the end of week 1. Ask a ton of questions and keep notes so your question quality improves over time. Don't be afraid of "over-asking": if you're polite and include context, you will be fine no matter how many questions you ask.

❓
Check out the masterclass on Taro about learning quickly.

Treat onboarding as an urgent priority for you and your IM. For example, instead of emailing people when you get stuck, which may lead to a delay of a few hours, message them directly so you get help in real-time.

Working with your manager

If it's not obvious already, your intern manager will play a critical role in your internship experience.

After the first meeting with your IM, make sure you have a recurring 1:1 meeting with them, ideally at a weekly cadence. Generally, the IM will set this up for you, but in case they don't, you absolutely should ask for it. These recurring meetings are a core part of how you'll get feedback and improve.

Treat your intern manager as a resource, not a boss. At most companies, the IM is not officially a manager, but simply an individual contributor (IC) who volunteered to manage an intern for the summer. Your IM's success in their own performance review depends on how much they supported you (did you get a return offer?). The incentives are aligned, so don't be afraid to leverage them aggressively to unblock you.

Tactically, this manifests in a few ways:

  • Share issues as they come up. If you have any sort of problem, whether it's a technical one or a mental one, share it with your IM. Learn to be vulnerable.
  • Make clear that you want feedback. Tell your manager (and others) that you treat feedback as a gift. Acknowledge any feedback you get and act on it, literally within a few hours/days.
  • Ask for feedback every 2-3 weeks. Instead of asking "How am I doing?", ask questions that give you more signal like "Relative to your expectations of progress at this point, how far along am I?" Most internships will have a formal mid-cycle check-in, but you shouldn't wait for that.
Google interns being Googley

Writing the code

As an engineering intern, your raw coding output is, by far, the most important metric.

The job of a software engineer involves many skills beyond coding. (In fact, this thesis is why I started Taro!) However, as an intern, you should throw most of that thinking out the window and simply focus on the code.

As an intern, you're the newest and most junior person in the entire company. If you're in countless team meetings or strategy debates as an intern, you're doing it wrong. The non-coding skills like code review and architecture become important as you become more senior, but you should actively ignore them for now.

As an intern, you're the most junior person in the company. That means you should be writing lots of code.

The best engineers ship code with both high velocity and high quality. Your goal is to write a bunch of high-quality code, and do it in a hurry. Here's some tactical advice for productive code output:

  • Keep your code changes focused. Each code change should do one thing ("one diff, one thesis"). The size of the change will depend on context, but as a rule of thumb, aim for 25-250 lines of code per change.
Code reviews and dependency in PRs in One diff, One Thesis
So I am trying to understand how code reviews are done in PRs and how dependency is handled when adhering to the *One diff, One Thesis* principle. Assume we h
  • Make sure that every code change has an explanation. Add a "context" section explaining your higher-level goal (e.g. what your intern project is meant to do) and then talk about what this specific change tackles. Your goal is for a random engineer to read the context of your code change and understand what you're building and why.
  • Attach a test plan to show that your code works. Having a detailed test plan not only helps reviewers trust your change but also turns the pull request into a high-value artifact. Document the edge cases, and if possible, add something visual like a screenshot or video.
  • Keep a close eye on notifications regarding your code. Your goal is to respond to code review comments quickly (within 30 minutes) and gracefully. Code review feedback is also a key learning opportunity.
  • When your code gets approved, push it to mainline ASAP. Nothing is worse than having your valuable code stuck in rebase hell and merge conflicts 😑

Working on a team

For many people, an internship in Big Tech will be the first time they operate in a large team. With so many people to meet and processes to understand, operating in a large company can be overwhelming. As a result, many interns either underinvest or overinvest in this people aspect of the job.

If no one knows what you work on, you've underinvested in team collaboration. Too many interns write code in isolation, find someone to review their code, and then complete their project without anyone knowing. This is a recipe for failure, even if you're a phenomenal coder.

If you're attending every single intern party, hackathon, and company networking event, you're overinvesting in people. A huge value of any internship comes from the network you develop, but networking only works if you have substance. Your primary focus should be on completing your intern project. Sometimes the best networking is less about meeting people, and more about the impact of your work.

The middle ground is best: your team should know who you are and why your work is valuable. Here are a few tactics to make this happen:

  • Broadcast updates to the team as you hit major milestones. Depending on the team, this should be in the form of standups, emails, and team meetings. There should be at least one written update that has a permalink. Updates should include a clear description of the problem you're tackling, your progress at that point, and your request for feedback.
  • Invest in recurring updates for the "customer" of your project, e.g. a group of engineers or PMs interested in your work. Send these stakeholders updates on a weekly basis. This may feel like overcommunication, but that's ok!
  • When your project launches, make a big deal about it and thank the people who helped you. Include screenshots, metrics, or something else visual. Post-launch is the ideal time to do a team dinner or offsite!

Failure modes

Here are the most common reasons interns end up without a return offer:

  • Misalignment of expectations: Many interns gauge their performance relative to other interns across the company. This is valuable but ultimately an imperfect way to judge your work. Instead, get regular feedback from your intern manager. Ask for an assessment of how you're trending every 2-3 weeks.
  • Defensive around feedback: Respond to feedback gracefully and quickly, even if you don't agree with it. Being a team player and acting on the feedback is much more likely to get you that return offer compared to convincing the full-time employee that they're wrong.
  • Sphere of influence is too small: You typically need 2-3 other peers to vouch for you in final calibrations. While it may be comfortable to ask your IM for help on everything, diversify the people you talk to. Consider having a recurring 1:1 with your non-IM peers.

I documented my own experience as a Facebook intern in this video, along with 4 tips that helped me:

An internship is a valuable opportunity to refine your craft while learning from tech veterans. The skills and network you develop become valuable assets even beyond the internship.

Enjoy the process, work hard, and share this guide with other SWE interns 😚 Good luck!

πŸ’™
Credit to Alex Chiou for his valuable input in creating this guide. If you found this valuable, go through his 8-part internship success series on Taro for Meta (applicable across companies).

Let's connect on LinkedIn! I also regularly post career tips for software engineers on YouTube.

Rahul Pandey