Meta Summer Vibe | Internship and Growth

2022/08/21 I ended my 12-week internship at Core Ads: R&P Infra team at Meta Platforms, Inc. Besides building connections with cool people, I made great impact with my code and also learned a lot from the industry. This post lists my work and also what I learned from this internship.

Skills related to this Internship

GraphQL· React · Pipelines · Hadoop· Presto · MySQL · Message Queue · Apache Thrift · Hacklang · Python · Javascript Relay

What I have done

  • Built pipelines that continuously validates political preferences of 1.96 billion Meta users are not used in Ads targeting.
  • Helped Core Ads team solve the challenge of lack of self-serving support and developed an end-to-end platform with React and JavaScript Relay. 10+ product teams (e.g., Facebook, Instagram, and Messenger) benefit from it.
  • Utilized distributed SQL query engine Presto to query trillions of entries from Hive, a data warehouse based on Hadoop, and feed the data into the dashboard which increased the decision-making efficiency for the product teams.
  • Applied data structure Graph to define the relationship between users and events and used algorithms like Depth First Search (DFS) to recursively parse the cascaded information from UI to generate the corresponding Presto query.
  • Implemented CRUD with GraphQL queries over relational database XDB and operated on Petabytes of data.

What’s the impact

  • Contributed towards the ‘self-serving’ platform goal, by replacing code based Hive table column verification with declarative hive table column verification. Platform users don’t have to depend on oncall to onboard new hive table column validations.
  • Reduce the time needed dramatically for the product teams to onboard validations by 98%.
  • Increase the scalability of the privacy Platform by providing well-supported back-end logic, which covers most column types in the back-end and allows users to pass cascaded filter information.

Growth & Suggestions for Interns

  • Document Everything

The palest ink is better than the best memory. Good documentation also makes synchronization easier for teammates.

  • Ask Questions

It’s understandable to have questions when you start a new career, so don’t be afraid to ask them. Good questions can be a way to communicate with other teammates and let others stay on the same page with you. Some tips about ask questions are:

  1. set arround 30 minutes (this time frames depends, better to check with your mentor or manager at the beginning of the internship) for yourself to find out a solution;
  2. If being blocked by more than 30 minutes, write down summary of what you found, e.g what you found useful, what issues have been solved, what still blocks you, what you think are the potential reasons for the blockers, etc;
  3. Ask an experienced engineer if have 15 minutes, don’t forget to bring your summary;
  4. Don’t lose track of time, because every minute matters for us engineers, doesn’t it~
  • Prepare for 1:1

1:1 is a dictated time where you can communicate your progress on the benchmarks and learn how to hit the benchmarks or to adjust them based on roadblocks! Some tips about 1:1 are:

  1. Set expectations: Check-in on concrete goals and adjust if needed. Measure small goals while tracking longer-term goals for the project completion!
  2. Feedbacks: Feedback is better to be in real-time, don’t be shy to ask them!
  3. It’s always good to send the agenda for the 1:1 before it happens.
  • Focus on Code Quality

Every company should have its “Code Smell Anthology”. Look through it as soon as possible and keep them in mind when writing the code. Below are some common terminologies:

  1. Better Engineering (BE)
    1. help improve the productivity of our engineers.
    2. Examples include building tools, cleaning up dead code, updating code to modern frameworks and writing documentation.
  2. Engineering Excellence (EE)
    1. help improve the quality, reliability, efficiency, security or performance of our products or services.
    2. Examples include adding alerts and tests, reducing CPU usage, reducing memory usage, fixing SEVs and fixing bugs.
  • Don’t forget to say thanks

The deepest craving of the human nature is the need to be appreciated. So don’t hesitate to show your appreciation, thumbs-up, thanks to anyone who have help you along this way.

Hope this helps!

If you change the way you look at things, the things you look at change.”