Skip to main content

· 7 min read
Yangshun Tay

Since summer internships are round the corner, I figured it'd be useful to share some tips for interns to have a successful internship. Having mentored a few interns who and seen many examples of successful interns at Meta, I observed a list of traits that successful interns demonstrate.

At the end of the internship, a good litmus test on whether your internship was successful is whether the team would hire you or take their chances with someone else.

1. Do what is expected of you

Firstly in order to do what is expected of you, you need to know what is expected of you. If you're a SWE intern, most of the time you need to complete a given project before the end of the internship by writing high quality code. Look at how code is written in the code base and follow existing conventions, directory structure, naming, use existing abstractions. Break your code into small PRs so that it's easy to review. Write tests and test your code thoroughly before submitting for review.

2. Demonstrate independence

Your intern manager/mentor/host is also a busy employee and they have their own work to do. If you run into issues, try to unblock yourself first before asking someone. Look up internal documentation, refer to existing code and see if you can follow similar approaches. If you're still stuck, then ask. Post in support groups/chats and share your high level goal, the approaches you've tried and why they didn't work. This helps people to help you. It's ok to ask more questions at the start but the frequency should go down over time.

3. Take initiative and ownership of your project

Rather than waiting for tasks to be handed to you, look at the plan/roadmap (or create one if it doesn't exist) and work through the tasks. Break down the project and create tasks for yourself, closing them when completed. Be your own project manager and product manager. Anticipate blockers where possible and unblock yourself ahead of time. Keep a log of the work you've done. This will be super useful if you have to write a self evaluation at the end of your internship.

4. Communicate

You are the best advocate of your work. In large companies, peer feedback is taken into account for the internship evaluation so it'd be good if more people knew about your work. Tell your team what you are doing, make occasional updates about your work, give others visibility into your work and demo your work during sprint retros. Communicate if you are unblocked or if you don't feel like you're heading in the right direction.

5. Ask for and address feedback

Your mentor should already be providing you feedback constantly and you should address them in the remaining time you have. If your company doesn't have the open feedback culture, you can ask your mentor or teammates when you get the chance. Ask how you can improve and what you can do better. Since you'll be spending lots of time writing code, make sure you pay attention to the code review comments and that your reviewers don't have to make the same comment twice.

6. Assess the company

As much as an internship is an extended interview of your fit for the company, it is also a chance for you to interview the company. Do you enjoy the team's and company's working style? Do they overwork their employees and treat employees with respect? Sometimes interns can be too busy with their projects to pay attention to these things but ultimately these are important factors to take into consideration when deciding whether to sign the return offer. You might not be joining back the same team but the company culture affects the team's culture to some extent.

Rockstar Interns

Your performance during the internship will affect the offer you're given. At Meta, the top interns (< 10%), or what we commonly refer to as "rockstar interns" were given out-of-the-band offers that enter the L4 (mid-level) salary range, where few other big tech companies can match. I've encountered some of them throughout my time at Meta and Grab and they're all doing really well in their careers now. Here's what they did:

1. Overdeliver

There are a few ways to overdeliver, by completing things faster, doing more things, or doing them better. This intern did all of that and completed the intern project even before the mid-point review (6 weeks in, out of a 12-week internship) and spent the remaining time working on things beyond the intern project.

2. Review code

As part of the project, the intern became familiar with certain features owned by the team. Usually interns are the most junior members of the team, but this intern became such an expert that they were able to review code of not just fellow interns, but also full-time members of the team, making meaningful suggestions and spotting bugs during code review.

3. Refactor code

This intern saw that there was a similar component that could help achieve their task, but not without some changes. Instead of duplicating the code for their own use case, they refactored it such that it could be used in the current callsite and also their work.

4. Provide customer support to users

This intern was working on an internal tool and adding an entirely new feature to it. Before that, they had to understand how the internal tool worked. As a result, they became extremely familiar with the tool and was helping to answer questions from users all over the company. Some were shocked to find out that it was an intern that helped them with their issue.

5. Oncall

Being oncall is a responsibility of being available outside of regular working hours to respond to urgent issues with a product with the goal of addressing issues promptly and minimizing downtime and full-time engineers take turns to be oncall. This intern understood the team's work so well after a few weeks that the team trusted them to be added to the oncall rotation. They were able to pull this off by exploring beyond their assigned project, reading lots of the team's code and being familiar with the operations of the team.

6. Have time for side projects

This intern was not from my team, but someone I knew prior to them joining the company. They completed their assigned work so fast and was constantly bored, and they asked if they could help me with my work. I was working on some code modernization efforts and they wrote a codemod (script to do AST-based code modifications) to help me complete my refactoring work in a fraction of the time. They were able to dive into a code base outside of their team, entirely new stack (front end) and make impact. Mindblown.

Most of these interns had something in common, they functioned like a full-time member of the team. The primary goal of internships is to convert interns to full-time. Interns who exhibit behaviors of full-time employees will come out on top. Naturally these intern got the top ratings and one of them was even selected to have dinner with Mark Zuckerberg, a privilege only a handful of the top interns had.

However, it's also important to note that one has to complete their core project / responsibilities before striving for brownie points. The core project is the cake and these behaviors are icing on the cake. You can't just have icing without a cake.

It goes without saying that the above is non-exhaustive, but hopefully these tips and examples will be helpful!

· 5 min read
Zhenghao He


See discussions on Hacker News

Most technical interviews are over-indexing on coding

Over the past two years, I have interviewed with over 10 different tech companies ranging from hot startups like Coinbase, Stripe, and Instacart to FAANG companies like Amazon and Meta, for Software Engineer positions of various levels.

The technical interview processes I have had all consisted of at least two rounds of coding interviews, where I either had to solve an algorithmic, LeetCode-type question or build a practical app/feature. During those coding interviews, I always started with an empty slate: if it was an algorithm-heavy interview question, there would be a literally empty file in the editor for me to start writing code; if it was a practical app building exercise, there might be some boilerplate code or some utilities/helper functions available but still I was expected to build the app/feature from scratch.

· 12 min read
Zhenghao He

The interview question

Imagine you were a university student looking to land an entry-level software engineer job and you were having this technical coding interview. The interview question starts with a table showing amount of units of a product sold at the shop and the corresponding price per unit. The idea here is that there is an incentive for customers to buy in bulk – the more we can sell the lower the price:

purchase quantity                                  price per unit
1-5 5 dollars
6-10 4 dollars
11-20 3 dollars
20+ 2.5 dollars

· 16 min read
Yangshun Tay

A number of the folks I referred have completed their interviews and are in the midst of deciding which company's offer to accept for their internship/full-time roles. Hence I figured it might be a good time to write about my experience at Meta (previously Facebook) so far as it could be helpful in helping some of them make their first important career decision!

Meta logo

Disclaimer: Opinions are my own and do not represent the views of my employer (Meta)

· 4 min read
Yangshun Tay

As an example of putting the Resume tips to practice, let's reviewing Teik Jun's resume, critiquing it and improving it. At the time of writing, Teik Jun is a Year 4 undergraduate at National University of Singapore and is looking for a Software Engineering (SWE) internship for the summer of 2022.

· 39 min read
Yangshun Tay

A number of students from the Project Intern group have been asking me questions related to Facebook internships, working at Facebook, and my personal journey. I decided to write down my answers in the form of a blog post so they can be shared more broadly and I can point people to this blog post in future whenever I get asked similar questions.