diff --git a/contents/best-practice-questions.md b/contents/best-practice-questions.md index f0573ba8..2552d3f3 100644 --- a/contents/best-practice-questions.md +++ b/contents/best-practice-questions.md @@ -3,10 +3,16 @@ id: best-practice-questions title: Best Practice Questions --- -Here is a suggested schedule for revising and practicing algorithm questions on [LeetCode](https://leetcode.com). Sign up for an account if you don't already have one, it's critical to your success in interviewing! +Practicing is the best way to prepare for coding interviews. Years ago, I curated a list of the most important 75 questions on [LeetCode](https://leetcode.com). Many other LeetCode questions are a mash of the techniques from these individual questions. I used this list in my last job hunt to only do the important questions. + +I [shared this list on Blind](https://www.teamblind.com/post/New-Year-Gift---Curated-List-of-Top-100-LeetCode-Questions-to-Save-Your-Time-OaM1orEU) to save peoples' time when revising and someone reposted this list on [the LeetCode forums](https://leetcode.com/discuss/general-discussion/460599/blind-75-leetcode-questions). It somehow blew up and became super famous in the coding interview scene, people even gave it a name - **Blind 75**. The Blind 75 questions as a LeetCode list can be found [here](https://leetcode.com/list/xi4ci4ig/). + +Years later, I further distilled the list down into only 50 questions and spread them across a 5-week schedule. Here is the suggested schedule for revising and practicing algorithm questions on LeetCode. Sign up for an account if you don't already have one, it's critical to your success in interviewing! When practicing, you are advised to treat it like a real coding interview and check through thoroughly before submitting. Consider even manually coming up with some test cases and running through them to verify correctness! +I've created a [LeetCode list](https://leetcode.com/list/9h4lgwl2) for the following questions (except the Premium ones). Feel free to use it to track your practice progress. + ## Week 1 - Sequences In week 1, we will start off easy and do a mix of easy and medium questions on arrays and strings. Arrays and strings are the most common types of questions to be found in interviews; gaining familiarity with them will help in building strong fundamentals to better handle tougher questions. @@ -105,3 +111,7 @@ Practically speaking the return of investment (ROI) on studying and practicing f - [Unique Paths](https://leetcode.com/problems/unique-paths/) - [Jump Game](https://leetcode.com/problems/jump-game/) - [Word Break Problem](https://leetcode.com/problems/word-break/) + +--- + +I've created a [LeetCode list](https://leetcode.com/list/9h4lgwl2) for the following questions (except the Premium ones). Feel free to use it to track your practice progress. diff --git a/contents/coding-signals.md b/contents/coding-signals.md index 1555b070..afb3a0c3 100644 --- a/contents/coding-signals.md +++ b/contents/coding-signals.md @@ -63,8 +63,8 @@ When interviewers take down interview feedback, these are likely what is on thei #### Coding style -- πŸ‘ Coding style was neat (proper indentation, spacing and no bad practices) -- πŸ‘Ž Coding style was messy (inconsistent indentation, weird spacings, etc) +- πŸ‘ Coding style was neat (proper indentation, spacing, and no bad practices) +- πŸ‘Ž Coding style was messy (inconsistent indentation, weird spacings, etc.) ## Testing @@ -92,11 +92,11 @@ When interviewers take down interview feedback, these are likely what is on thei #### Communicating approach -- πŸ‘ Able to explain overall approach, technical terms and acronyms (where applicable) -- πŸ‘Ž Failed to effectively explain overall approach, technical terms and acronyms (where applicable) +- πŸ‘ Able to explain overall approach, technical terms, and acronyms (where applicable) +- πŸ‘Ž Failed to effectively explain overall approach, technical terms, and acronyms (where applicable) #### Explains while coding -- πŸ‘ Explains what the code is doing while coding, especially for parts which aren't obvious +- πŸ‘ Explains what the code is doing while coding, especially for parts that aren't obvious - πŸ‘Ž Keeps silent during coding, or just reading out the code without much -explanation \ No newline at end of file +explanation diff --git a/contents/landscape.md b/contents/landscape.md index 1d5fe8c5..b1e3084c 100644 --- a/contents/landscape.md +++ b/contents/landscape.md @@ -3,7 +3,7 @@ id: landscape title: Landscape --- -import useBaseUrl from '@docusaurus/useBaseUrl'; +import InternshipSalariesURL from '@site/static/img/internship-salaries.jpg'; Most of the content covered here will be specific to the Bay Area. Landscape differences due to geographical location are mentioned briefly [below](#geographical-location). @@ -33,9 +33,15 @@ Top tech companies pay a ridiculous amount for interns:
- +
+Salaries of top tech internships in 2016 -_Salaries of top tech internships in 2016 ([source](https://twitter.com/rodneyfolz/status/724787290824798209))_ +
+ +Salaries of top tech internships in 2016 ([source](https://twitter.com/rodneyfolz/status/724787290824798209)) + +
+
diff --git a/contents/mock-interviews.md b/contents/mock-interviews.md index 32227ced..0278fa4f 100644 --- a/contents/mock-interviews.md +++ b/contents/mock-interviews.md @@ -5,9 +5,9 @@ title: Mock Interviews Interviewing is a skill that you can get better at. The steps mentioned above can be rehearsed over and over again until you have fully internalized them and following those steps become second nature to you. A good way to practice is to find a friend to partner with and the both of you can take turns to interview each other. -A great resource for practicing mock coding interviews would be [interviewing.io](https://iio.sh/r/DMCa). interviewing.io provides free, anonymous practice technical interviews with Google and Facebook engineers, which can lead to real jobs and internships. By virtue of being anonymous during the interview, the inclusive interview process is de-biased and low risk. At the end of the interview, both interviewer and interviewees can provide feedback to each other for the purpose of improvement. Doing well in your mock interviews will unlock the jobs page and allow candidates to book interviews (also anonymously) with top companies like Uber, Lyft, Quora, Asana and more. For those who are totally new to technical interviews, you can even view [recorded interviews](https://interviewing.io/recordings) and see how phone interviews are like. Read more about them [here](https://techcrunch.com/2017/09/27/interviewing-io-hopes-to-close-the-engineer-diversity-gap-with-anonymous-interviews/). +A great resource for practicing mock coding interviews would be [interviewing.io](https://iio.sh/r/DMCa). interviewing.io provides anonymous practice technical interviews with Google and Facebook engineers, which can lead to real jobs and internships. By virtue of being anonymous during the interview, the inclusive interview process is de-biased and low risk. At the end of the interview, both interviewer and interviewees can provide feedback to each other for the purpose of improvement. Doing well in your mock interviews will unlock the jobs page and allow candidates to book interviews (also anonymously) with top companies like Uber, Lyft, Quora, Asana and more. You can also book mock interviews for more specific roles such as Mobile, Front End, Engineering Management. For those who are totally new to technical interviews, you can even view [recorded interviews](https://interviewing.io/recordings) and see how phone interviews are like. Read more about them [here](https://techcrunch.com/2017/09/27/interviewing-io-hopes-to-close-the-engineer-diversity-gap-with-anonymous-interviews/). -I have used interviewing.io both as an interviewer and an interviewee and found the experience to be really great! [Aline Lerner](https://twitter.com/alinelernerLLC), the CEO and co-founder of interviewing.io and her team are passionate about revolutionizing the technical interview process and helping candidates to improve their skills at interviewing. She has also published a number of technical interview-related articles on the [interviewing.io blog](http://blog.interviewing.io/). interviewing.io is still in beta now but I recommend signing up as early as possible to increase the likelihood of getting an invite. +I have used interviewing.io both as an interviewer and an interviewee and found the experience to be really great! [Aline Lerner](https://twitter.com/alinelernerLLC), the CEO and co-founder of interviewing.io and her team are passionate about revolutionizing the technical interview process and helping candidates to improve their skills at interviewing. She has also published a number of technical interview-related articles on the [interviewing.io blog](http://blog.interviewing.io/). Another platform that allows you to practice coding interviews is [Pramp](https://pramp.com/). Where interviewing.io matches potential job seekers with seasoned technical interviewers, Pramp takes a different approach. Pramp pairs you up with another peer who is also a job seeker and both of you take turns to assume the role of interviewer and interviewee. Pramp also prepares questions for you, along with suggested solutions and prompts to guide the interviewee. diff --git a/contents/resume-case-study.md b/contents/resume-case-study.md new file mode 100644 index 00000000..d383c7e6 --- /dev/null +++ b/contents/resume-case-study.md @@ -0,0 +1,59 @@ +--- +id: resume-case-study +title: Resume Case Study +--- + +import TeikjunResumeOldURL from '@site/static/img/teik-jun-resume-old.png'; import TeikjunResumeNewURL from '@site/static/img/teik-jun-resume-new.png'; + +To put the points mentioned in the [the previous section](resume.md) in practice. Here we will be reviewing [Teik Jun's](https://github.com/teikjun) 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. + +Here's the initial version of Teik Jun's resume I received from him. + +
+
+ Teik Jun's Initial Resume +
Teik Jun's Initial Resume
+
+
+ +On first glance, it looks like a solid resume, and it is. However, I've known Teik Jun for a few years now since the [Major League Hacking (MLH) Fellowship program](https://fellowship.mlh.io/) where he [contributed a ton of features to Docusaurus v2](https://github.com/facebook/docusaurus/commits?author=teikjun), and know that he has done even greater things in the past. This version of his resume doesn't do his skills justice. Let's see how we can improve it by applying the points learnt in the previous section. + +## Resume critique + +### Good + +- Demonstrates diverse and full stack experience - Has experience in front end, building web applications, JavaScript tooling, payments infrastructure and blockchain +- Diverse interests and abilities - Open Source, AI and Machine Learning, Front End, Algorithms TA, Hackathons +- Clean formatting which is easily readable +- Reverse chronological order +- Straightforward, bullet point format + +### Points of improvement + +- Irrelevant experience - It's honestly super cool to be "Best Shot" of Sniper Course and to get other impressive accolades as an NSF, but it's hardly relevant to a SWE job. If I were running out of space I'd remove it. +- Not sufficiently conveying the impressiveness of his experience - Teik Jun's work on the MLH program was for a popular Facebook Open Source project, Docusaurus (the same project that powers this website) and he did very very good work as part of the program. I know because I reviewed his Pull Requests and he did a damn good job. Docusaurus is an important project to Facebook and widely used by popular Facebook projects like React Native, Jest, and Relay. +- Not explaining what the project is about - In most cases, recruiters are the ones reading a resume and they would not know what a project is about, especially when most of them aren't technical. Hence resumes also have to explain the complexity and impact of a project. I know what Docusaurus and TEAMMATES are, but that's because I worked on Docusaurus and I am aware of NUS' projects. Most recruiters would not, so we have to explain what they are. TEAMMATES was also a Google Summer of Code project, so mentioning that would be nice. +- Trivial details - Under TEAMMATES, there was a point "Added a progress indicator component for expensive operations". This sounds quite small and can be removed if there's a lack of space. +- Obscure projects - The "Mentorship Management Web Application" doesn't sufficiently relay the complexity. The details are also obvious and doesn't sound impressive. I'd remove this project because it doesn't add much value. +- Contributions to Open Source Projects - Any project can be made open source and contributing to your own open source homework doesn't mean much. What makes open source contributions impressive would be the complexity of the project and the contributions made. The latter might be hard to fit into a resume, so we should do the former at the very least. + +### Bonus + +I know that Teik Jun will be interning with ByteDance in the fall, so it could be added as a signal of Teik Jun's abilities, telling recruiters that he's good enough to work at ByteDance. + +## Improved version + +Here's an improved version of Teik Jun's resume which I feel which better highlights Teik Jun's abilities. Main changes made were: + +- Added more important keywords - ByteDance (future internship), Facebook (MLH collaboration), Google (TEAMMATES was a Google Summer of Code project for a few years). +- Removed redundant and unimportant details. +- Added links to certain projects to make it more convenient for recruiters who want to gain more context of the projects listed. + +In my opinion, this improved resume is sure to capture the eyes of any recruiter in the world! + +
+
+ Teik Jun's Improved Resume +
Teik Jun's Improved Resume
+
+
diff --git a/contents/resume-sample.md b/contents/resume-sample.md new file mode 100644 index 00000000..a6bc01fa --- /dev/null +++ b/contents/resume-sample.md @@ -0,0 +1,17 @@ +--- +id: resume-sample +title: Resume Sample +--- + +import YangshunResumeURL from '@site/static/img/yangshun-resume.png'; + +Here's a sample resume (mine). I like using Google Docs as the portability is great and also comes with version control. Feel free to clone my resume and use it as a starting point for your own. + +Here's a [Google Doc template](https://docs.google.com/document/d/1DQ5SKNrm1hb1BRS40ejovLxhyEKXiuTGsDEXIiZSW0o/edit?usp=sharing) of my resume if you're interested. + +
+
+ Yangshun's Resume 2021 +
Yangshun's Resume 2021
+
+
diff --git a/website/blog/2019-11-03-front-end-development-enough-for-a-career.md b/website/blog/2019-11-03-front-end-development-enough-for-a-career.md new file mode 100644 index 00000000..d1a44ce9 --- /dev/null +++ b/website/blog/2019-11-03-front-end-development-enough-for-a-career.md @@ -0,0 +1,60 @@ +--- +title: Are Front End Development Skills Enough for a Career? +slug: are-front-end-development-skills-enough-for-a-career +author: Yangshun Tay +author_title: Front End Engineer at Facebook +author_url: https://github.com/yangshun +author_image_url: https://github.com/yangshun.png +author_twitter: yangshunz +tags: [front end, career] +--- + +Recently, an undergrad freshmen I met at an event asked me a question regarding Front End development as a career. + + + +> I'm honestly quite into front end development β€” web technologies, UI/UX, web design and stuff. But with there being more and more accessible to new developers (create-react-app, parcel and such), I just can't help but wonder if these skills are sufficient to survive in the tech industry today. Not that it's a bad thing! Lowering the barrier to entry for programmers is always good. However, for those like myself who would like to pursue front end development as a career, I'm just wondering if having these skills are enough. + +Interesting question. I've wondered the same question to myself before but convinced myself that I'm probably fine just dabbling in Front End development for now. 😌 + +## Front End is complex and getting increasingly so + +Most people would have used websites like facebook.com, youtube.com and gmail.com. These applications have hundreds of engineers working on them (thousands if you include the back end) due to the demanding nature of the application - it has to load fast, it has to be secure, it has to look pretty. These days, front end development is no longer just about building websites rendering a static HTML. Many websites these days are in fact web applications and a lot of thought has to be put into the application architecture, and that requires good software engineering capabilities. + +That's why you see many Front End tools these days like React, Redux, Relay, CSS modules, webpack, etc. These tools exist because of the ever-increasing requirements of building rich and performant user experiences on the web. [Being a good Front End developer](https://www.toptal.com/front-end/how-to-hire) is very hard, there are many aspects to know about - HTML, CSS, JavaScript, Browser APIs, Security, Performance, Animation, SEO, Networking, the list is non-exhaustive and growing. There are always new problems to solve and new things to learn. [JavaScript fatigue](https://medium.com/@ericclemmons/javascript-fatigue-48d4011b6fc4) was a term pretty common a few years back due to the explosion of tools in the Front End ecosystem. Things have gotten more stable but the JavaScript community is currently still one of the most fast-moving communities. + +## Does the rise of mobile threaten the existence of web developers? + +Many products now have a native mobile app version and that might make people think that the existence of Front End (web) developers could be threatened. I think that is only true to a small extent. Certain applications like Uber and Lyft make sense to be mobile-first, but there are also many complex professional applications where web (or any interface with a larger screens) will always prevail, such as office productivity and design software. Viewing things at a more macro scale, both mobile apps and web apps fall under the category of client-side applications. Many core skills important for being a good web developer are also important for mobile app development - they are transferable across platforms. + +Tools like [React Native](https://reactnative.dev) and [Flutter](https://flutter.dev) have also been created to help engineers build products across platforms by only writing the code "once" (in quotes because that dream is still in development). This approach is not a silver bullet solution and has yet to prove itself adequately, but for prototyping small apps or even just certain parts of your mobile app, it works pretty well. In React Native, you write your application in JavaScript using React Native primitives, and the React Native runtime runs the code on the JavaScript engine in the platform to construct native app UI views and handle application logic. It's pretty similar to writing typical web front end code. Facebook's Ads Manager App and the Marketplace tab are built using React Native. There are numerous technologies that enable you to build native apps on mobile platforms by knowing web front end development. + +Even though mobile usage is on the rise, there still exists many use cases where the desktop still excels at. Google Suite, Microsoft Office, Design tools are still more efficiently operated on desktops. In fact, many desktop applications these days are built on HTML5 technologies instead of native desktop code using tools like Electron to package web application code into an executable shipped to users. You might already be using some of them without knowing - Slack, Discord, WhatsApp Desktop, VS Code, Atom Editor, just to name a few. I think developers who are only familiar with native desktop platform engineering skills have more reasons to worry than Front End developers. + +The web is incredibly cross-platform! + +## Jack of all trades, master of one + +However, I think that being a Front End development in many regards, is considered a specialized position. That's why it's important to be "T-shaped". I first got introduced to this term through my ex-manager at Grab, Tim Goh. He advised me to have a specialization (front end), yet still know a bit about everything. In other words, you are strong in your core fundamentals, but you also specialize in a particular area. + +This is good advice and it's not new advice. In most university courses, students are expected to study the fundamental courses before choosing their area of specialization. In the context of a School of Computing in National University of Singapore, students start their in school by taking basic classes in Algorithms, Data Structures, Software Engineering, Operating Systems, Computer Networks, before choosing their specialization in deeper areas like Compilers, Computer Graphics, AI and Machine Learning, Media, Networking and more. + +Having a strong foundation enables someone to make switching domains a possibility. There will definitely be a ramp-up process, but it can be made smoother with solid foundations, and with the skill of learning how to learn fast. In the extreme case where the web becomes irrelevant, and no companies want to hire front end developers anymore, front end developers with strong fundamentals can always slightly switch tracks by doing mobile or back end engineering, or even the hottest UI platform (AR/VR?) out there. + +Having good tools to use (like Create React App, Parcel) doesn't eradicate the need for Front End developers to possess good software engineering skills. What will happen if you are the person tasked to build the tools? Great Front End developers (or Software Engineers really) go beneath the abstractions layer, understand how their tools work, and what problems the tool set out to solve. They also constantly seek to challenge and improve the status quo by building better technologies to cater to the ever-increasing demands. + +At Facebook, the Front End Engineers are Software Engineers first, domain experts second. Many of the Front End engineers I know at Facebook have a deep understanding of the technical stack and don't just work on stuff related to the browser. At Facebook scale, front end work also involves building a lot of infrastructure to make our front end code base scale well with the growing technical and people needs. That means writing [codemods](https://github.com/facebook/jscodeshift) to do large-scale refactoring, inventing new [UI](https://reactjs.org) [paradigms](http://facebook.github.io/flux/), performant [testing frameworks](https://jestjs.io), creating [type-checkers](https://flow.org) for untyped languages, changing the ways we [fetch data](https://graphql.org) from our servers and [managing it on clients](https://relay.dev). These tools wouldn't exist if the Front End engineers at Facebook didn't possess strong software engineering skills. + +## Pick up new, relevant skills + +It can be hard to pick up new skills at work in an unrelated domain if there are no opportunities to do so. Thankfully (or not), due to the explosion of tools in the Front End ecosystem, I've found an area which I have gained a new-found interest in - Programming Languages Theory (Static Analysis, Compilers, and Intepreters). Static analysis is incredibly important in tools that I use on a daily basis - it's being used by the module bundlers for bundling JavaScript files together, generating CSS from more user-friendly CSS syntaxes, compiling modern JavaScript into older versions of JavaScript that more common browsers can run, and even this blog post written in Markdown uses static analysis to be converted into HTML. + +I've been toying with writing my own interpreter after learning this awesome book called [Crafting Interpreters](http://www.craftinginterpreters.com) and will be further exploring this domain in my spare time, possibly building Front End-related tooling in future that leverages static analysis and compilation. + +Adding new skills to my arsenal in a related but different domain helps me to stay relevant in the event that the industry no longer needs Front End developers 😱 + +--- + +In summary, although Front End development is considered quite specialized, there's enough demand and complexity for it to stay relevant in the years to come. What would threaten the web would be an entire shift of the way users interact with apps, perhaps to a non-visual paradigm like a brain-controlled interface. However, paradigm shifts don't happen overnight and there will be sufficient time to react (pun intended) in the case that ever happens. Being strong in your Software Engineering fundamentals and knowing how to learn new skills fast will help you in switching domains (and also careers). + +_Opinions are my own and do not represent the views of my employer._ diff --git a/website/blog/2020-05-28-summing-root-to-leaf-numbers.md b/website/blog/2020-05-28-summing-root-to-leaf-numbers.md index 96baf4d4..f8577f45 100644 --- a/website/blog/2020-05-28-summing-root-to-leaf-numbers.md +++ b/website/blog/2020-05-28-summing-root-to-leaf-numbers.md @@ -8,7 +8,9 @@ author_image_url: https://github.com/raivatshah.png tags: [leetcode, trees, problem-solving] --- -Sum Root to Leaf Numbers is an [interesting problem from LeetCode](https://leetcode.com/problems/sum-root-to-leaf-numbers/). The problem is of medium difficulty and is about binary trees. This post is an explained solution to the problem. +Sum Root to Leaf Numbers is an [interesting problem from LeetCode](https://leetcode.com/problems/sum-root-to-leaf-numbers/). The problem is of medium difficulty and is about binary trees. This post is an explains the solution to the problem. + + I assume that you’re familiar with Python and the concept of binary trees. If you’re not, you can read [this article](https://www.tutorialspoint.com/python_data_structure/python_binary_tree.htm) to get started. diff --git a/website/blog/2021-04-12-importance-of-communicating-effectively-as-an-engineer.md b/website/blog/2021-04-12-importance-of-communicating-effectively-as-an-engineer.md new file mode 100644 index 00000000..ac895deb --- /dev/null +++ b/website/blog/2021-04-12-importance-of-communicating-effectively-as-an-engineer.md @@ -0,0 +1,78 @@ +--- +title: Importance of Communicating Effectively as Engineers +slug: importance-of-communicating-effectively-as-engineers +author: Yangshun Tay +author_title: Engineering Lead at Facebook +author_url: https://github.com/yangshun +author_image_url: https://github.com/yangshun.png +tags: [career, communication] +--- + +import BadCommunicationURL from '@site/static/img/bad-communication.jpg'; + +**_tl;dr: communicating effectively broadly and frequently helps you grow as an engineer and we have many tools built to do that!_** + +At Facebook where I work at, strong communication is crucial for a successful career. As engineers, sometimes we get too focused on execution and it's easy to forget about communicating our work broadly. Perhaps some of us are new to a large engineering organization and previously did not have the tools to foster communication nor was it emphasized by the company. + + + +I love to code. Personally, I would love to shut off all communication channels and focus entirely on coding if I could. However, doing that will probably have disastrous effects. Communication is super important and I learnt that the hard way when I first started at Facebook. In my first year at Facebook, I made a few painful mistakes related to communication. I changed the project plans and timeline without informing my tech lead, resulting in my teammate having to cover me at the last minute and do the work I reprioritized without telling anyone. In another instance, I didn't communicate that I was going to do some work that my teammate had planned to do, resulting in wasted efforts. From then on, I made a mental note to myself to communicate broadly and early wherever possible and seek alignment. I'd err on the side of over-communicating rather than under-communicating (though sometimes I still forget). + +
+ +
+ You cannot have bad communication if you never communicate +
Just like you can't cause any bugs if you don't write any code.
+
+ +
+ +## Why is communication important? + +Most engineers in organizations don't work alone. When you work with people, you have to communicate with them β€” to set expectations, seek feedback, align on decisions, what not. However, given that remote working is the norm for most of us now, we rarely see each other face to face (I haven't met anyone on the team in person since remote work started). In product teams like the ones we have in Commerce Engineering Singapore, we work with a myriad of XFN partners across the globe in different timezones. These factors make it challenging to be in regular touch and makes it even more important to communicate widely. We have to explicitly communicate through stand ups, weekly syncs, retros, Work Chat messages, Workplace posts, etc. + +Communicating well frequently and broadly helps you to: + +### Broaden your impact + +If you have built something that's useful for yourself/your team, chances are, they will be useful for others as well, so tell more people about it! My first project at Facebook was to build Sentinel, an internal code attribution tool for the humongous Ads code base with nearing a decade's history. The tool solved the problem of people/bots changing a set of files which they were unfamiliar with and not knowing who the best reviewers for those changes were. Nothing about the tool was specific to Ads. After building an MVP (Minimum Viable Product) version of the tool, we reached out to various tools within Facebook which use their own bespoke code attribution approach and we eventually helped to replace them with Sentinel attribution. We also integrated it with popular tools like our IDE (a FB-specific VS Code), our internal component library, and our internal in-browser code explorer. At the end of that half (2018 H1), Sentinel was used by 2% of all diffs at Facebook, which was a pretty significant number. As of writing, over half a million diffs at Facebook have used Sentinel and I would say a huge part of its success was due to the network effects generated by word-of-mouth advertising by our early adopters, our push to integrate it into popular tools, and links within these tools that Sentinel was powering the attribution. + +Takeaway β€” Make a noise! **A good product that many people use has more impact than an excellent product that few people use.** Sentinel wasn't perfect at the time of launch but it worked well enough. One of the easiest ways to get people to use your product is to tell people about it! It can't get any easier. Getting some people to use your product early also gives you the chance to iterate on feedback and make it better before you launch it to a wider audience. + +### Improve your career performance and progression + +Communication has a huge impact on one's performance. If you aren't able to effectively update your manager on what you are doing, it is hard for them to help you stay on track to ensure you meet expectations for the half. At Facebook, Communication is explicitly stated as an evaluation axis of our performance review, but realistically, every axis involves communication. We saw how effective communication helps expand one's project impact in the Sentinel example above. Better engineering practices should be communicated to folks who work on the same code base so as to efficiently deliver products of excellent implementation quality. Strong communication also leads to successful conflict resolution, mentorship and recruiting. + +Here's a scenario on how communication impacts calibrations - Alice's manager put her up for promotion to Staff Engineer after successfully delivering on an impactful project. However, due to lack of communication and visibility about her project, it's the first time other managers in the room heard about this project and many raised questions regarding it due to their unfamiliarity with it. This made the calibration process much harder than it should have been had Alice communicated about her project broadly earlier on. + +### Influence + +Influence is a core skill you need to develop as you grow your career, and communication is at the core of it. Senior folks are leaders and influential and are effective communicators. This is true regardless of IC (individual contributor) track or management track. Senior Engineers are expected to be able to influence the engineering culture in the broader team and possess strong communication skills to be able to explain technical information effectively. Recently I attended a meeting with a very senior Software Engineer and was blown away by how he managed to explain the concept of cookies in such simple terms to the non-technical folks in the meeting and how effective communication helps you to get things done. For those who are interested in embarking on the manager track in future, please also know that most of an engineering manager's job involves communication. + +### Foster alignment and save effort down the road + +At large companies of similar scale as Facebook, it's not uncommon for two teams at Facebook to face the same problem. I'll use Sentinel as an example again. By communicating about the project broadly and early, we reduced the possibility of teams working in silos to solve the same problem and leading to duplicated efforts. By knowing which teams faced similar problems and understanding their unique circumstances, we were able to collaborate on the problem and accounted for the different needs of the various teams, achieving a 1 + 1 = 3 effect. + +### Facilitate project planning and ensure timelines are met + +Imagine this extreme (but still plausible) scenario - Bob and his team have spent a few months working on a huge project which was slated to launch next week. However, the project is only half-completed due to unforeseen technical difficulties and lack of manpower. If Bob had communicated about the difficulties and progress earlier, his manager could have allocated more manpower earlier to help out, and the team would probably be in a better position to meet their deadlines. This scenario is unrealistic at Facebook in the sense that such issues would probably be caught earlier because of weekly syncs and progress update posts. However, it is still possible for smaller projects where there aren't any/many syncs. + +## Ways to communicate effectively + +Hopefully by now you agree with me that communicating effectively broadly and frequently is important! Here are some tips on how to go about doing that: + +### Leverage Communication Channels + +Each company has its own communication channel - Slack, Discord, Google Suite, etc. At Facebook, we use [Workplace](https://workplace.com/), which is similar to the core Facebook app, but for your company and every co-worker is a friend. Workplace is literally a communication tool and it is also the easiest way to get the word out about something. Draft a Workplace post/note and post it in the relevant groups. Attach screenshots/videos to better illustrate the point and catch peoples' attention. Add tl;drs at the top of your posts. Structure your posts according to sections for better organization. If you are unsure about what content should go in your post, seek a review from your manager/tech lead, most likely they'll be happy to help. + +### Write Wikis + +Write wikis for posterity and so that your work appears in intern search results. Add links to your new wiki in existing relevant wikis. Doing all these improves the discoverability of your work. + +### Shamelessly reach out to folks + +If you know of someone/another team that would benefit from your work or the information, reach out to them and let them know! Even if they don't have an immediate need for your work, they might in future, or can inform others about it. The relationships you build along the way might surprise you. + +--- + +Thanks to my manager [Nishita Agarwal](https://www.linkedin.com/in/nishita-agarwal-51872514/) and my teammate, [Yao Yang Leow](https://www.linkedin.com/in/leow-yao-yang/) for proofreading and giving feedback on earlier drafts. diff --git a/website/blog/2021-08-19-facebook-career-questions-and-answers.md b/website/blog/2021-08-19-facebook-career-questions-and-answers.md new file mode 100644 index 00000000..366e4455 --- /dev/null +++ b/website/blog/2021-08-19-facebook-career-questions-and-answers.md @@ -0,0 +1,382 @@ +--- +title: Facebook Career Q&A +slug: facebook-career-questions-and-answers +author: Yangshun Tay +author_title: Engineering Lead at Facebook +author_url: https://github.com/yangshun +author_image_url: https://github.com/yangshun.png +tags: [facebook, career] +--- + +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. + + + +**_I am not a recruiter and I might have answered some of the recruiting or internship-related questions wrongly, so take them with a grain of salt. Opinions expressed are my own and do not represent the views of my employer._** + +## Glossary + +- APAC - Asia Pacific Region +- CVWO - Computing for Voluntary Welfare Organizations +- DSA - Data Structures and Algorithms +- EE - Enterprise Engineer/ing +- FRL - Facebook Reality Labs +- FTE - Full-time Employee +- IANACP - I am not a career portal +- IANAR - I am not a recruiter +- IANAL - I am not a lawyer +- IINW - If I'm not wrong +- RA - Residential Assistant +- SWE - Software Engineer/ing +- TPM - Technical Program Manager + +## Caveats + +- These replies are tailored towards the Facebook interview process for interns and fresh grads. They may or may not apply to other companies, especially smaller ones. +- Most of these answers apply across the board for every engineer role but there are exceptions for certain specialized engineering roles like Security Engineering or Front End Engineering. + +## Application/Referral + +### What's the application process like (for internships)? + +Apply on https://www.facebook.com/careers. Recruiters will reach out to you if there's interest and chat with you over the phone. If it goes well, there will be two rounds of coding interviews. + +### What are some qualities/experiences that Facebook looks for in a resume? + +IANAR and I don't filter any resumes, so I don't exactly know. But from experience, write stuff that makes you stand out from the rest. Have good grades? Add it in. Scholarships/awards, write them down. Have extensive internship experience? Include them in an organized format. Built cool hacks/side projects? Add the GitHub links and demos. Won hackathons/competitions? Put them in. One thing is for sure - few companies would want to hire candidates who only have academic credentials and no industry experience. + +### Does GPA affect a lot on the resume screening? + +GPA/CAP/grades is just one of the signals that can be extracted from the resume. As mentioned above, there are many other qualities and achievements a candidate can possess. Personally if I had my own company, I would rather hire a candidate with a high second upper and fantastic open source portfolio with multiple internship experiences at big companies over a student with CAP 5.00 but has nothing else to show for. Not that one candidate is stronger than the other, but the former would probably be a safer choice. + +### In general, how's the barrier of entry for big tech companies like FB in terms of grades, would a second lower (3.5-3.9) even get pass the resume screening stage? + +Grades matter less the longer someone has left school. For students, because there's a lack of working experience, grades might play a larger part in the resume screening, but it's by no means the only thing that matters. + +### Is the resume screening done by AI / human recruiter? What is being looked out for on the resume? As someone who isn't strong academically, will I be able to compete purely based on experience on my resume? + +IANAR. Usually people suck at their studies because instead of studying they spent their time elsewhere. If it was spent on related stuff like hacking on side projects and internships, that probably makes up for the subpar academic grades. But if you suck at studies and spent your time clubbing instead, then I'm sorry you probably won't get past the screening. Note that CS is such a hot course now that only the best students can get in these days. A fair amount of students have both good grades AND non-academic achievements. Competition is tough! + +### Are there any languages/frameworks that are helpful to know before applying? + +For Software Engineering (SWE) positions, Facebook doesn't require you to have experience in specific languages/frameworks before joining. Likewise, there aren't any of such restrictions for SWE interviews. You can do your interviews in your programming language of choice. One exception to this is if you're applying for a Front End Engineer or Mobile Engineer position, then you will be asked domain-specific questions and by extension, required to use JavaScript/Java/Kotlin/Objective-C/Swift to answer the questions. + +### Are intern applications (and hence, the spots) based on first-come-first-served? + +IANAR. But as with all jobs, there are definitely limited spots and once they're filled up there isn't a need to hire anymore. Applying in 2022 for the internship which application opens in September, is almost definitely too late. You can apply later (October) if you want more time to prepare, but there might be fewer slots left. Moral of the story - prepare early. + +### How's the referral process about/like? + +Facebook will send you a form (initiated by me) where you can fill up your name, email, upload your resume, and select the roles you would like to apply. From there on, from an applicant perspective it's not different from them applying themselves on the Facebook Careers Portal. + +### May I know until when your referral is valid? I was hoping to start my application a bit later so was hoping to reach out to you then for a referral. Is there any last date to "claim" this in any way? + +As long as I remain employed at Facebook, I'm happy to refer you if I feel that you stand a good chance passing the interviews. As mentioned earlier, if you apply when unprepared, you risk wasting the chance. Take too long and apply too late, then you risk the slots being all filled up. I don't know the last date to be referred but I recommend not later than end of September. + +### Any tips for a good resume to apply for FB? + +Answered above. I don't think most students need to worry about the resume screening stage. Worry about the interviews. Use a neat and standard template and you should be fine. + +### If I build my projects must some of them be pushed to production before applying? + +Best if you can, but I'm not sure if recruiters actually click on your project links. Maybe just don't include the link if it's not really usable? + +### Do you have any tips in applying for a fresh grad SWE role in facebook? + +Make sure you know your algorithms at the back of your hand. Fresh grad SWE role interviews also have a behavioral round, so be prepared to talk about your past experiences. There's a section in this handbook which covers those. + +### Apart from preparing for DSA questions, are there other areas you would recommend preparing for (either for the interviews / a better chance to get shortlisted for them)? + +If you're going for a SWE intern/grad position, DSA is the most important. The bulk of the assessment is on DSA. Grind your LeetCode. + +## Would love to find out what the interviewers at Facebook usually look out for in candidates! + +DSA. DSA. DSA. Communication skills - You must be able to also communicate your thought process well throughout the interview. + +### Am I able to apply for both local and overseas (in the USA) roles for FB and be considered for both? Or would I only be considered for SG's openings since FB has an office here and I'm already located in SG? + +IANAR. Typically you will only be interviewed for one location. Candidates based in Singapore are free to apply to non-Singapore positions and intern there. + +### What is the application process like for the Software Engineer role? Is it any different from the Enterprise and Front End Engineer role? + +For SWE, I've answered above. I'm not sure about Enterprise Engineers, I suspect it wouldn't be too different. For Front End Engineers, the questions will be domain-specific, hence will require candidates to write HTML/CSS/JavaScript. Note that Facebook Singapore currently does not hire Front End Engineers and interns. If you're interested in a Front End Engineer internship/FTE position, you'd have to look overseas. + +### Is there anything I can do/prepare to improve my chances of getting through the recruiter screen? + +1. Get a referral +1. Have a solid neat resume that showcases your abilities + +### How much does a referral help in landing a interview? + +Referrals tend to have a higher visibility than someone who applies on the Careers Portal directly, but that's about it. + +### Are there any related full time openings at FB, and if so how can I help you decide if I'm a good candidate to refer? + +I look through your transcript and resume and look for stuff that suggests you'd make a good employee. What things I look out for - excellent grades in the relevant modules, notable internships, interesting side projects, ICPC/IOI awards. Bonus: Open Source experience. I'm a huge fan of Open Source and if you have built something really cool that's Open Source, I'd refer you even if your grades are terrible. + +### Do I stand a good chance if I'm from a Info Systems background but gotten good grades for programming modules? Currently taking some CS modules now too. + +There are many IS folks who are good engineers. As long as you can demonstrate that you have mastery of programming and DSA, it shouldn't be an issue. + +### Would you know whether Facebook's hiring process has a preference for single-page resumes? + +As an interviewer for FB senior-ish candidates, I have seen some horrendously long resumes. So I would think single-page is not a hard rule, more of a recommendation. If you are exceeding a single page, then you are likely including too many things. [My own resume](https://docs.google.com/document/d/13c8KsKSsP5biJT8N70aLULyq-I5ywuWrxRxr2faQTK4/) is a 2-column one with small-ish font which I used in my last job hunt in 2017. It has got me replies from recruiters. This was before I started working at Facebook, so the Facebook branding isn't the main reason. + +### I'm an international student at SMU, does Facebook sponsor employment pass? + +IANAL. But we have had international students interning at Facebook before and are currently working at Facebook. Please check with the recruiter. + +### I'm from SUTD and my schedule is pretty weird! I'm graduating next year so should I apply for internship or a job? + +If you have any spare summers left, you can and should go for an internship. IMO passing an internship interview is easier than a full-time interview, and likely leads to a better conversion package also if you have performed well during the internship. + +### Am I eligible to work overseas in US/London/Canada? + +IANAR. If you're Singaporean, you'd have no problems working anywhere. If you're a foreign student, you could check with your seniors or just ask the recruiter when you get the chance. + +## Interviews + +### What's the interview process like? + +Last year, it was a phone screen with recruiter, followed by 2 rounds of coding interviews (IINW) where the focus is on DSA. + +### Based on your past experience, if a candidate does not get full marks for the online coding test, what are the chances of him or her getting a face to face interview? Just curious about the level of competition haha (This is because I'm not that worried about whiteboard interviews but afraid that I may not even get a chance to go through it) + +I don't even think there's an online coding test for Facebook. Can't answer this. + +### Would FB US hire SG citizens considering that there's an FB SG office already? + +Yes. + +### How I could improve my chances on landing an internship? + +Study your DSA, grind LeetCode, do mock interviews with your peers to get used to talking out loud/communicating your thoughts while coding. + +### I wanna learn as much as possible from you about topics that might benefit me + +Benefit you in terms of what, and when? For passing the interviews, DSA and LeetCode. For the actual internship, that'll be a much longer answer which I shan't go into because that's a problem for later, if you pass the interviews. + +### I heard FB doesn't ask dynamic programming questions, correct me if I'm wrong. Are there any topics I should be focusing more on? + +I can neither confirm nor deny this. General tip for coding interviews - focus on the most common data structures and algorithms. If a particular topic is really obscure, most likely you won't be asked on it because asking obscure stuff sometimes work against the interviewers as it'd be harder for them to extract the right signals out of it. Look at the recommended practice questions in the handbook. + +### How many rounds of interviews are there? Does FB ask system design on the live interviews? + +For internships, typically two coding. For fresh grads, typically two coding with one behavioral. No system design for internships and fresh grad interviews. + +### Would I be tested on specific tech stacks/real project experience, or is it purely algo based? + +If you're applying for a SWE position, you won't be tested on a specific tech stacks/languages. The algorithm questions asked can be implemented in most programming languages (but you probably want to avoid using wenyan). If you're applying for a specialized position, then you might be asked to use domain-specific languages, which the recruiter should (will?) let you know ahead of time. + +## Internship + +### What are 3 qualities of a intern/new hire fellow FB engineers look out for? + +This is a long answer and there are more than 3 qualities. But to get a conversion offer, in summary, interns have to show productivity and complete their assigned projects within the internship duration, product high quality code/work, demonstrate fast learning speed, actively communicate and collaborate, and show initiative and independence. Pretty much common sense if you ask me. + +### What are the different types of internship roles that are opening in FB (both here in SG and overseas)! + +IANACP. FB SG is quite limited in the sense we primarily only hiring SWE, EE interns. But I think I have seen TPM interns before. For overseas, almost every role is available. + +### Are there machine learning/data science internship roles at Facebook SG? How about in other countries? + +Not that I know of. Yes there should be for overseas, but then you'll be competing with a global pool of candidates. + +### What does the SWE role entail? Tech stack and what to expect? + +Software engineering of course. To answer seriously, it really depends on the team and their work. Most (all?) SWEs write code to solve problems. FB is big enough such that there are teams using almost every language out there. + +Here's an oversimplified overview: + +- Web Products - JavaScript/React/CSS/GraphQL/Relay/Hack (typed version of PHP) +- Mobile - Objective-C/Java/React Native/Proprietary frameworks +- Back End Services - Java/C++/Python + +### What is the internship format in Facebook like? For example, are the interns inserted into a team to work on issues or are they handed a project to work on throughout their internship? + +Under normal circumstances, interns would be given one project that should take them the entire internship duration (10 weeks or so out of a 12-week internship) to complete. They will be assigned an Intern Manager that would serve as their mentor throughout the internship. The mentor is typically the one who came up with the project which is broken down into multiple milestones. Responsibilities of an intern manager include: onboarding the intern, giving the intern regular feedback on how they are doing, reviewing their code (typically together with other members of the team), evaluating whether the intern will get a return offer. + +### How's the mentorship like for FB interns? Do a mentor work together with intern on the same project? Are mentors randomly assigned within the company or do they volunteer for it? + +Intern managers may or may not work with the intern on the same project, but they definitely should have context over the intern's project and be able to review (or at the very least, find suitable people) the intern's work. Employees can sign up to be an intern manager for a specific internship season. It is not random. It would be a disastrous and unpleasant experience for both the intern and the intern manager if an employee got randomly assigned to be a manager. + +### What are some products that interns will get to work on in Facebook Singapore? + +Intern projects are typically self-contained and achievable within the internship duration. Some example of intern projects in FB SG - rebuilding Oculus Accounts Portal (https://secure.oculus.com) using a modern React design system, building a self-serve order return flow into Oculus Accounts Portal. Outside of FB SG - Building the settings page of facebook.com, building an internal debugging tool (something like Redux Devtools). + +### What kind of projects are interns usually given (like internal tooling or external products) + +Answered above. Can be both, depends on the team. In Singapore, we primarily have product teams, so the projects are likely about adding product features. + +### Will there be any chances of being transferred to an overseas office after being accepted as an intern? + +Yes I know of that happening to some ex-interns. However, that could be due to special COVID circumstances which might not necessarily apply in following years. You'd have to check with the recruiter. + +### How many interns is FB looking to onboard next summer? Not sure if this can revealed but thought I'll ask nonetheless + +Don't know and even if I knew, I can't say. We had 4 interns in 2019 and around 10 interns in 2020. FB Singapore office is growing quite rapidly. + +### I'm actually more interested in mobile dev, are there open internship roles for this in the SG office? + +There are some teams in FB SG which work on mobile. Prior to starting internship at FB, interns will get to indicate their preference of tech stack and they will be matched to teams/projects which match their preferences. + +### Do you get to try out different parts of engineering as an intern / junior swe in facebook? e.g. if I were doing back end but I would like to try front end later down the road + +Short answer: for interns, not so much. For FTEs, much more autonomy. + +Longer answer: Interns are assigned a project which usually have a pre-defined tech stack. So the engineering work and stack that an intern will be doing is highly dependent on the assigned team and project. If the intern finishes the work early, it's possible to ask for more work from their manager and possibly try out other things. If the internship duration coincides with one of the internal hackathons, interns can participate in them and work on anything they want. For SWEs, there's a process called bootcamp after joining where employees find their own team to join. That gives them more flexibility in deciding what kind of work they want to do. Internal mobility is very good within FB as well. Personally I've done both front end and back end at Facebook. + +## FB Culture + +### What's the difference between Software Engineer (SWE), Enterprise Engineer (EE), and Front End Engineer? This is because I heard from previous FB interns that they worked on the full stack. + +- SWE - Generalists, they are expected to be able to work on software-related problem given to them and should be able to work across the stack. +- EE - Taken from Facebook's Career Portal: "Facebook's Enterprise Products team is responsible for building integrated, scalable, and robust Enterprise Applications. As a member of Enterprise Products team, you will play a key role in re-imagining productivity by shipping transformative products that serve diverse aspects of the enterprise" +- Front End Engineers - SWE with front end specialization. The interview is in HTML/CSS/JavaScript and there's more focus on domain-specific questions. That doesn't mean Front End Engineers can only work on front end stuff, they can work on anything as long as it is what their team needs and they have alignment with their manager. In my experience, Front End Engineers at FB are highly skilled in front end but can do back end work too. Btw I'm a Front End Engineer πŸ˜‰ + +### What are the opportunities that are currently available for the FB SG office? And perhaps what kind of people do you typically look for? (e.g., in terms of technical skills or perhaps other metrics) + +There are two main orgs in FB SG - Commerce Engineering and Ads & Business Products. The Commerce Engineering teams in Singapore build e-commerce websites to sell Facebook's hardware devices (Quest, Portal) and also sees through the rest of the lifecycle of a purchase - support center, returns, warranties. I'm in the Commerce Engineering org and my team manages https://www.oculus.com and https://portal.facebook.com. I don't know too much about the Ads side of things. + +Read an [article about my manager, Nishita Agarwal](https://www.facebook.com/careers/life/help-10-peopleor-billions/), which mentions empathy as a key trait. + +There's also an [article about Software Engineering in APAC](https://www.facebook.com/careers/life/software-engineering-in-apac) on the Facebook Careers blog. + +### How is Facebook Singapore different from that at Hacker Way in San Francisco? + +First and foremost, check out the following (old but still relevant) [article](https://vulcanpost.com/648705/facebook-singapore-office-marina-one/). + +Nit - Hacker Way is not in San Francisco, it is in Menlo Park. Perhaps you meant SF Bay Area. Anyway, FB SG and FB US differ is quite a lot of ways. There are too many to list but I'll list the most obvious ones. + +- Career Progression - FB US, being the HQ and where the company started, has the most number of teams and you have all levels of seniority of folks there. In FB SG, there are fewer teams and due to the size of the office now, there isn't a need for extremely senior engineers yet. So if you're talking about long term career progression, SG definitely loses out here. But don't need to think so far la, FB SG is still big enough for you to get to senior engineer position and earn enough to live comfortably for the rest of your life. +- Projects - Primarily product teams and hires primarily SWEs and EEs, while FB US has a good mix of teams, including infrastructure teams and hires across all roles. So if you're interested in working on infra stuff like our internal logging framework, GraphQL, our internal ORM, you'd have to look at non-SG offices. +- Changing Teams - SG has fewer teams, so if you were looking to change teams but remain in Singapore, the choices are more limited. +- Company Culture - You don't get to attend the events held only at the HQ in-person, such as Zuck's Q&A or company town halls or the summer and holiday parties (but there are local versions of them). +- Food - Smaller selection of cafes. Food is still pretty darn good though. There's nothing to complain about free food. +- Office - Smaller office in SG, but still one of the coolest in SG. Menlo Park Headquarters is amazing, there's an arcade, board games room, a barber, ice cream shop, a gadgets vending machine, and more. It looks like Universal Studios at night. I'll just leave this [video](https://www.youtube.com/watch?v=cY3sMN3wohg) here. +- $$$ - FB pay is top tier in both US and SG. However in SG, you have to pay less tax and cheaper living expenses. In SG, I earn less but save more due to the large difference in taxes. +- Taxes - SG tax is crazy low compared to US. US taxes you on every damn thing, including the capital gains from your stocks and bank interest earned (WTF), but SG doesn't. +- Engineering Culture - Similar-ish because quite a number of engineers in FB SG moved here from FB US, including myself. But being a smaller office, we don't have extremely senior engineers (no principal and higher). +- Social Security - I thought Bay Area was relatively safer than the smaller US states, but these days [driving on the highway also can get shot](https://www.youtube.com/watch?v=0ybiHCxNb3w), so I don't know anymore. I think SG is definitely safer, at least you definitely won't kena any racist remarks or comments while walking on the streets. +- Personal Happiness - Obviously you'd have fewer friends and family if you're in the US. If that's important to you then life there might be hard. But you can make new angmoh friends or hang out with the steadily growing SG community over there. +- Dating Scene - If you're single, it might be hard to find a long-term partner there. The female Singaporean engineers there are mostly taken, those that are not, probably want to stay single. Dating there will be quite hard! I know of friends who got together with Americans/immigrants and then they get a green card and plan to stay there for good. You can consider that too. + +I would describe myself as a small fish in a big pond when I was in FB US and am now a big fish in a smaller pond in FB SG. I enjoy my current work and team in FB SG and I see myself being in this role for a few more years at least. + +### Are Facebook internal hackathons only within branches? Eg. only within FB Singapore? + +They are kinda global in the sense that the timelines are global but each region has different people leading it for the regional offices. Participating teams will take part in the regional selection and winners of the regional ones come together to present to the global heads. + +### What is the difference between Software Engineer and Front end Engineer at Facebook, and considering that my experience lies mostly in Front End Engineering, should I only be applying to the FE role? + +Differences answered above. If you're solid in your Front End web fundamentals (HTML/CSS/JS), and suck horribly with DSA, I think you might stand a better chance going through the Front End interview loop. Unfortunately as of writing FB SG doesn't hire Front End Engineers so you'd have to look overseas for such a role. + +### In the past one year, I have been hearing quite a lot of things about FB Reality Labs, and I heard that quite a significant portion of FB engineers are working on it now (and I think you are as well?)... do you have any thoughts about how it feels to work there and perhaps the future prospects? + +I work on selling FRL hardware, not directly on FRL hardware/software itself. If you haven't heard of the [metaverse](https://www.theverge.com/22588022/mark-zuckerberg-facebook-ceo-metaverse-interview), you should read up about it. I don't have too many opinions on the future of FRL but I can say that Quest 2 is the market leader in terms of VR headsets and [Quest 2 was a major driver behind FB's $885 million 2020 Q4 non-ad revenue](https://www.roadtovr.com/zuckerberg-quest-2-mainstream-vr-headset-facebook-q4-2020-earnings/). + +### What engineers is Facebook looking for - especially for New Grads? At the moment, I have knowledge on a breadth of tools but when asked on under the hood stuff, I can only explain what the tool / framework is trying to extract instead of going in depth as to how stuff actually works. Is the firm looking for new grad engineers who are language / tool / framework agnostic and can work towards building the skillset within the firm - or people who already have a speciality? + +FB uses Flow (for JavaScript typechecking) and Hack (typed version of PHP) which most people outside of FB won't use. If we were to hire only people who have prior experience with them, then we'd have a really hard time filling our head count. + +When tech companies hire SWEs, usually it's for a generalist position and they would expect the employees to pick up any new language or tool to get the job down. If you master your fundamentals, doing that shouldn't be too hard. So really most companies would want to hire people who can learn fast and adapt. The exception is if you're a super senior person (think principal level and above), then you'd be hired for your specialized skillsets probably because the company needs some subject-matter expert in that area. But most of you are still undergrads, that doesn't apply to you. + +At the end of the day, many language and tools are similar-ish. New technologies learn from existing technologies and improve on them, learning new technologies isn't always that foreign. + +However, to be a good SWE, I would recommend peeking beneath the abstraction layers and understanding what problem this technology is trying to solve, how it works under the hood, and what advantages/disadvantages it has compared to similar technologies. That's why I love Open Source, all the code is public - you can read the code, look at how the projects are structured, and even contribute to them. I also love reading articles comparing technologies so that I know what tradeoffs the projects are making and what's the right tool for the job. Don't be a mindless drone who uses technologies without knowing why you are using it instead of alternatives. That'll be an easy way to get phased out really soon, especially considering how fast technologies move. + +### In my conversations with most engineers from US tech companies, I often hear that one of the major shortcomings of working in the Singapore offices is that they are more auxiliary in their functions, and that opportunities for "core" engineering work are few and far between. Since you have worked in both the Menlo Park and SG offices, I'd love to hear your response to this within the context of Facebook. + +Answered above in the US vs SG comparison. + +## Personal Experience + +### Can I know about the project you're involved with in FB? + +I'm currently working on a multi-year project which I can't reveal the details until we launch next year. Last year, I worked on Facebook's e-commerce websites - https://www.oculus.com and https://portal.facebook.com. I built design systems in React and a CMS framework to allow non-engineers to change the marketing content on oculus.com anytime they wish. One of the problems my team works on solving is to decouple marketing launches from engineering work, enabling the business teams to launch new products and campaigns on our e-commerce websites. + +### Why did you choose front end engineering, and separately, how do you think the workload at Facebook compares to that of other "top" companies such as Google? + +As a student I also liked to do design, so it was very cool for me to be able to implement my own designs on the web. That's why I chose to do client side engineering. As to why the web, I like the fast iteration and release cycle of building on web platforms. My first hardcore CS course was actually CS3217 (I only took CS1010E and CS1020E prior to that), so the first proper software I wrote was on iOS platform. Developing on mobile is too troublesome for my liking, because I often need a physical device, compiling the app takes so long, and you have to play by the platform's rules. They could take down your app anytime they want. On the other hand, the web is much more open and anyone can launch any website they want in a matter of hours. Being able to show people what I built by giving them a URL is an exciting experience that never gets old. + +I haven't worked at Google so I can't comment on workload at Google. But Google is known as a good company to "rest and vest" whereas Facebook has faster promo cycles and rewards their top performing employees disproportionately. + +### Am I correct to interpret that you started at Grab after graduation? What internships did you do during your studies? + +Yes I worked at Grab for two years after graduation, you can check out my LinkedIn. Regarding university internships, Year 2 I did CVWO, Year 3 NOC in Silicon Valley for EasilyDo (now called Edison), Year 4 I was a Game Producer (non-programmer!) in SUTD Game Lab (previously MIT Gambit program). Back during my time, overseas internships weren't common. The number of Google and FB interns each year was fewer than 10. + +### I'm also curious about what you do in your role as a Front End engineer, and why you decided to work at Facebook? + +As a Front End Engineer at Facebook, I primarily write JavaScript and some Hack (PHP with types). Being at Facebook is fun because I get to do front end work which isn't product, such as building React-based design systems, front end tooling, lint rules, CSS frameworks (Infima), Static site generators (Docusaurus). + +Facebook is the leader in terms of front end web technologies. If you develop on the web, you would more likely than not, be using some of Facebook's open source work, whether directly or not. There's React, Flux, Jest, GraphQL, React Native, Docusaurus, Draft.js, Relay, Flow, just to name a few. By working at Facebook, I also got the chance to work on Docusaurus and for two years, led the development of Docusaurus v2, which is one of the projects I am most proud of in my career. Today, Docusaurus is powering most of Facebook's open source websites. Many of the open source leaders I look up to were also at Facebook. I got to contribute to many high profile open source front end projects by Facebook and also work alongside the creator of React (Jordan Walke) on improving the front end of Facebook's Ads Interfaces. Not to mention that Facebook employees will be the first to dogfood React's new APIs and participate in design discussions and influence the future roadmap of React. + +On the culture and working environment front, I have always vibed with Facebook's hacker culture and products more than Google's, so naturally I chose Facebook over Google even though their offers were comparable and I was given a chance to work on Google's search results page. + +Facebook is the best place for a Front End Engineer to grow and learn from the very best. So it was the most obvious choice for me and I'm glad I made that decision. It's the best place I've worked at thus far (almost 4 years!) and also financially a great choice. + +### Could I ask about your personal experiences at FB in terms of learning opportunities and the work you do? :) + +The learning opportunities depend on many factors - individual preferences, team, projects, luck. Facebook is such a large company that covers virtually almost every domain of technology one can be interested in. With great internal mobility, it isn't hard to find a project that one will be passionate about. The benefits (and also downsides) of working at such a large company is that you often have to think about scalability in your work. How do you scale your work to the tens of thousands of engineers using your libraries or the billions of users using your product? + +Facebook is also a company which takes the growth of employees very seriously. We have clear levels and expectations for engineers, supportive managers who really care about the growth of their team, mentorship programs available for anyone who wants to grow in a particular area. One of a manager's core responsibilities is to grow their team and employees, and they are being evaluated on that, so you can be sure that they treat it seriously. We have weekly 1:1s with managers and with our leads. Personally I'm mentoring around 3-4 junior engineers and helping them to grow into senior engineers in both their technical and organizational skills. + +I've answered about my work above. + +### What made you and the team came up with the idea of NUSMods and NUSWhispers? I think its really great to code for good and fulfilling stuff rather than coding for corporate means + +I didn't come up with NUSMods. [Beng](https://nusmods.com/team) did. I helped to build features (my favorite being theming and dark mode), recruit members into the team, and also started the v3 rewrite which is the one you are using now. Most of the credit would go to [Yi Jiang](https://www.github.com/ZhangYiJiang), [Li Kai](https://www.github.com/li-kai) and [E-Liang](https://www.github.com/taneliang) for the current version. NUSMods code base isn't exactly that big, but it took us over a year of work to rewrite it on a modern stack. + +Shout-out to [Christopher Goh](https://www.github.com/chrisgzf) for taking the helm now! Joining NUSMods was one of the best decisions in my life, as impacted the lives of so many students (I daresay above 100k), learnt so much from working on it (it's a relatively complex web application), and it helped me grow my network of like-minded individuals. **We need more people to contribute so that the project can live on.** Notice that the NUSMods core team (and alumni) have pretty zai backgrounds? Correlation or causation? Maybe both. + +I came up with the idea for NUSWhispers but I didn't write much code for it. I was tutor for a web development course (CP3101B) back in 2015 and I proposed that idea to some students. I'm glad they did a darn good job of it. Back then I wanted to create a platform that could connect and help students around the school and the idea of an anonymous platform/page sounded like fun. + +I like building stuff that people use, and after graduation I try to open source my stuff. This website you're reading now is also one of my largest open source work (in terms of popularity). + +### I understand that you've been in FB for a couple of years, and worked in tech companies like Grab as well, given your prev/current experiences + what you've heard from fellow colleagues and peers, in your opinion what makes FB different from the other tech companies in terms of work done and how an entry engineer could expect to contribute? + +I have only worked at two companies, so I wouldn't say I have seen a lot. But a few things stand out to me about FB as compared to other smaller companies: + +- Top of the market compensation. It's really crazy a lot. Maybe not as much as quant trading firms, but if you also factor in other stuff like interesting work, social impact, then to me FB still comes up on top. +- Bottom-up culture. In some companies, engineers are treated like mindless drones and expected to just execute. But not at FB. At FB, engineers are expected to do a fair bit of product and project management, propose ideas and lead the roadmap for their team, especially if their team's product is a highly technical one. We have lots of flexibility and autonomy to manage our own work and what we want to do with our time. As someone who has many ideas and likes to build them, it suits me well. +- Lots of responsibilities given. FB trusts you to do the right thing. You could technically bring down facebook.com on your first day of work if you were careless (or evil). + +### How do you run your team? This question is relating to the culture you foster within your own team. + +We have very few processes. My team is excellent so I trust them to do the right things and they don't disappoint. In my current multi-year project, I broke it down into smaller parts and pieces and assigned them to my teammates according to their interests and expertise. I set the guidelines and some general engineering principles, make sure my team is aware of them and we stick to them when developing. We set goals for the half and then we're pretty much running the project each on our own. On a day-to-day basis, I spent about half my time writing code and the other half reviewing code and attending meetings. I'm also mentoring a few engineers and I guide the newer engineers more and provide them with constant feedback on technical work and behavioral changes that could help them to grow. + +### How has Facebook impacted your career in terms of learning and growth and since you probably have many FANG companies to choose from, what is Facebook unique selling point to you personally? + +By working at Facebook, I got to see how large engineering teams operate at scale, how products are developed and launched to millions of users, and learn from the very best engineers in the world. + +Front end and open source. I answered in more detail above. + +### Are most of the projects at Facebook internal tools for the company or more for the public/users? Or does this depend on the team you work at? + +There's a good mix. Yes it depends on location as well. Most infra teams and in the bigger engineering offices (US, London). Singapore is still new and growing rapidly. + +## Career + +### I'd like to seek your advice on what I should be prioritizing in my next two years of school in order to gain relevant skills/experience to stand out to FB recruiters when I graduate. + +Work on being a good engineer who has mastery of the fundamentals. Good grades, impressive internship experiences, side projects, etc are important but only for getting the interview. At the end of the day it doesn't matter how much your CAP is if you can't answer the interview questions, which boils down to your mastery of the skills needed to being a SWE. Do things that you are interested in AND also benefits you. + +### Just wanted to hear your opinion on how much emphasis I should place on personal projects, grades, LeetCode, hackathons/coding challenges, job experiences, CCA involvement, etc. + +This is a hard question to answer because everyone is different. Some people are just born smart and don't have to study much and still get their grades. Some people are just not cut out for studying, but are great at building impactful side projects. Know your comparative advantage and leverage it. Personally, I could probably do back end work if I tried hard enough but I just don't enjoy doing it. I leverage my passion for design and attention to detail to build user interfaces and related tooling instead. + +Strike a balance between breadth and depth. As undergrads, you can have a lot of room to explore and also relatively low stakes environment to fail. Take this chance to try out a lot of things, then choose what you really like and are good at. You can specialize after you have tried out enough things and know what you want and are good at. I've tried out back end, mobile, game development and prefer front end development the most. + +By now you should know that not every investment reaps the same level of rewards. CCAs which aren't related to CS can be fun, widen your social circle and improve your soft skills. If that's important to you, by all means go ahead. But if you suck at programming, and spend all your spare time on random CCAs which doesn't help you in your craft, then you'll probably end up as a mediocre programmer. Back in school, I never really had an official CCA - I chose to do tutoring, work on open source stuff like NUSMods, and working as a boarding councillor at NUS High (sort of like RA but for NUS High Students), which gave me free accommodation near school). I liked the balance and diversity of the activities I had. + +My CAP isn't that high - got first class but not near 5.00. I reckon I could get A+ for every module if I really spent all my time studying, but studying isn't exactly my favorite activity to do. I got my As usually from modules which were project-heavy. I value and enjoy the hands on experience more than the mugging experience. + +I'm very lucky that Software Engineering exists so that there's something meaningful which I can spend my time on, I enjoy doing, and also pays the bills. + +### I want to learn as much as possible from you about topics that might benefit me as I'm graduating next year. + +DSA. No DSA mastery, no passing of interviews, no Facebook job offer. + +--- + +**_I am not a recruiter and I might have answered some of the recruiting or internship-related questions wrongly, so take them with a grain of salt. Opinions expressed are my own and do not represent the views of my employer._** diff --git a/website/sidebars.js b/website/sidebars.js index c93b31e7..8206653f 100755 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -2,8 +2,9 @@ module.exports = { docs: { Preface: ['introduction', 'landscape'], 'Job Application': [ - // 'how-to-apply', 'resume', + 'resume-case-study', + 'resume-sample', 'cover-letter', ], 'Interview Process': [ diff --git a/website/static/img/bad-communication.jpg b/website/static/img/bad-communication.jpg new file mode 100644 index 00000000..fe1731af Binary files /dev/null and b/website/static/img/bad-communication.jpg differ diff --git a/website/static/img/teik-jun-resume-new.png b/website/static/img/teik-jun-resume-new.png new file mode 100644 index 00000000..e3d82882 Binary files /dev/null and b/website/static/img/teik-jun-resume-new.png differ diff --git a/website/static/img/teik-jun-resume-old.png b/website/static/img/teik-jun-resume-old.png new file mode 100644 index 00000000..e5dd301b Binary files /dev/null and b/website/static/img/teik-jun-resume-old.png differ diff --git a/website/static/img/yangshun-resume.png b/website/static/img/yangshun-resume.png new file mode 100644 index 00000000..e248a2ba Binary files /dev/null and b/website/static/img/yangshun-resume.png differ diff --git a/website/yarn.lock b/website/yarn.lock index 79415d83..f17158b0 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -6820,9 +6820,9 @@ path-key@^3.1.0: integrity sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg== path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-to-regexp@0.1.7: version "0.1.7"