Engineering

Accelerating growth through Facebook’s rotational engineering program

By Nimrod Hoofien
June 30, 2017

One of the core tenets we value at Facebook is diversity of thought. We know that teams with people who bring a diverse set of experiences, backgrounds, identities, and perspectives build better products. As we grow as a company, we’re looking beyond our traditional recruiting channels and diversifying our efforts to find the best people from all backgrounds.

From left: Lucy Barron, Angel Gomez, Brian Hsu.

Let’s start by learning a bit about your backgrounds. How did you get into engineering?

Angel Gomez: I studied computer science in Mexico. I started coding when I was 10 years old when my brother-in-law got me into Python. I stopped coding for a few years but got back into it because I figured out it was my lifelong passion. Prior to Facebook I had been working at both Mexico and U.S.-based consulting companies as an Android engineer with a light sprinkling of JavaScript.

Brian Hsu: I hold a bachelor's degree in chemistry from National Taiwan University and an MS in environmental science from Lehigh University. After graduation, I interned at USDA National Agricultural Library. Because I needed to process lots of data, I started to learn programming. The more I coded, the more I fell in love with computer science. I then spent almost all my free time devouring more and more computer science knowledge. A few months later, I joined a cloud messaging startup called Hook Mobile. My work focused on maintaining the company website and building an internal reporting dashboard system. I learned how a startup works and realized that I wanted to do more front-end development, so I attended Hack Reactor, a coding school in San Francisco, to sharpen my skills. It was an immersive three months where I learned and coded from 8 a.m. to 10 p.m., six days per week. After Hack Reactor, I joined SolarCity/Tesla to build a web app for utility providers to control solar electricity flow in electricity grid systems. After that, I came to Facebook!

Lucy Barron: I grew up in Tabasco, a small city in the south of Mexico. My parents joined Rotary International, which was an amazing experience because it allowed me to meet people from all around the world. When I was 15, I had the opportunity to be an exchange student in Germany as part of the rotary program. In 2006, I Googled the words “design” and “math” because I really wanted to do something that involved both fields. I found the Digital Graphic Design Engineer at the University of Monterrey, where half my courses were in design and half of them were in computer science. As part of that program I interned at NEC in Osaka, Japan, where I worked with students from the Entertainment Technology Center at Carnegie Mellon in Pittsburg. After finishing my bachelor's degree I joined the game development industry as a 3D modeler, designer, and programmer. In 2010 I started building mobile apps for Google Play and App World on Blackberry. This made me realize I needed to learn how to manage huge projects, so I decided to do a Master of Science in Information Technology at Carnegie Mellon University, which I finished in 2015.

What was the most important thing you learned in Bootcamp?

BH: To ask questions early and often. The Facebook codebase is large and complex, and no one knows everything. If you are stuck with something, you can reach out to internal groups and ask questions. People can usually help or guide you in the right direction in a timely manner.

LB: Before joining Facebook I used to try to find solutions by myself and learn new skills by reading. While working on different Bootcamp tasks I realized that the key to succeeding and getting things done is through communication and teamwork. At Facebook, getting support from experienced coworkers is very easy. I was surprised that groups were so helpful, and every time I struggled with something, no matter the time of day, someone was always available and willing to help. After I realized that, I started to work faster on the tasks I was assigned.

What advice would you have for other rotational engineers going into Bootcamp?

AG: I think the most important thing that people who are in Bootcamp can focus on is making long-lasting relationships with other Bootcampers. This is important because it allows you have insight into parts of the codebase you otherwise wouldn't have.

BH: I would suggest learning as much as they can. There are lots of good classes in Bootcamp, and you can ask your mentor to let you work on the tasks you're interested in. It's a great time to explore the codebase and learn more about your future team.

After Bootcamp, what teams did you do your first rotations with? What projects did you work on?

AG: I'm currently working on GraphQL on a variety of projects. I added feature parity to mutation inside Relay Modern, which was introduced to the world during F8. I also helped improve the developer experience with GraphQL at Facebook, improving test quality and removing old code to make it easier to work with. I've also worked on a few of the GraphQL GitHub projects, especially GraphiQL. This has been valuable because we have been able to build a larger community around our projects and in turn receive some new features that we now use internally at Facebook.

BH: I worked on a project that revamped one of our major ad interfaces and brought a better user experience. I helped rework the UI, added features, and fixed bugs on different levels. I enjoyed the process because it gave me the opportunity to touch different aspects of our codebase. Adding new features with the same user experience and handling edge cases is challenging but also rewarding.

LB: I worked on the Ads Manager App team. The Ads Manager App allows big and small businesses to build their online presence on the go. It's built on React Native and available for Android and iOS. Since I joined the team I have had the opportunity to work on several app fixes and improvements, research, and new features. Now I’m working on a new navigation feature that will provide advertisers detailed information about their ads and give them more control over their budget and objectives. It also will provide tools to make changes easily to improve their ads performance.

What technical challenges did you encounter that excited you most?

BH: Adding new features and striking the balance between a better user experience and technical limitations. Because Facebook has a large codebase, I learned a lot each time I tried to add something new from the PHP side to the JavaScript side. It usually involves deep understanding about how the modules interact with each other and providing solutions that match our current user experiences.

LB: Thinking carefully about code architecture to allow it to grow and scale easily to meet future needs. I also feel excited solving hard problems such as unknown crashes, and the research process, which requires advanced tools and statistics. This process is not only about debugging code. Here you really need to think out of the box and be creative.

How have you grown technically since joining Facebook's Rotational Engineering program?

AG: My code quality is definitely much higher than before. Since I’m currently working on an infrastructure team it’s really important that the tests I include with code aren’t brittle, so my testing has definitely improved in my time at Facebook.

BH: I've learned PHP and Hack languages. As a front-end engineer, I've learned how Facebook built the React Apps. I think Facebook is a wonderful place to work since everyone is smart and incredible at executing plans. I like the company-wide UIE talks held every month and learning about the cutting-edge front-end technologies developed at Facebook. Overall, I think developing large-scale apps has helped me learn more about what should be taken care of at the company level.

LB: I have learned to think on a big scale and build products for the whole world. I have learned to analyze the impact and make use of different tools required to build large scale products. Now I'm able to write quality and scalable code, thanks to the feedback I got from my team.

What surprised you the most about working at Facebook?

AG: The most surprising thing about working at Facebook for me was the fact that you really get to choose what you want to work on. It’s amazing how well this scales at Facebook. Even though the majority of my work experience had been around Android, I was easily able to go into a JavaScript team and have a good amount of impact.

LB: I had never joined a company before with such amazing culture and respect for each other. I was also surprised by the huge impact that a single line of code has, and the high level of trust. Since the first week at Bootcamp I was allowed to write code fixes that were released to the whole world. I was making an impact from my earliest days at Facebook.

What are some of the most helpful things you've learned from your mentor or teammates?

AG: My mentor has really helped me find the resources I need to get help when I happen to get stuck on something. They also provide very valuable feedback so that I can continue growing as an engineer.

BH: I have one-on-ones with my mentor every week to discuss my tasks, questions, and how to grow as a software engineer. I find it very helpful to hear what they experienced before, and it is reassuring to know they also struggled at some moments. They've helped me create a clear path for what I should do, what to expect, and where to go as a software engineer at Facebook.

LB: My mentor has shown me how to use all the different tools we have to solve complex problems in the best way. In Mexico, most of the time I was the only woman on an engineering team, and here for the first time in my life I’m learning a lot of things from an amazing woman who is my mentor. I'm so glad to have this opportunity to work with the smartest women and learn from them.

As it turns out, your mentors and teammates also learned things from you. We asked them what you all brought to their teams, and here's what they had to say:

Alex Langenfeld, Engineering Manager on GraphQL: Angel has brought a fresh new perspective to the team. He identified things the team had so far overlooked, and took the initiative to address them.

Ritwik Tewari, Engineering Manager on Ads Reporting: Brian is a very keen learner. He is not afraid of asking questions, and always provides heartfelt help when someone else is in need. After a short ramp up time, he is already one of the most active code contributors and reviewers among peers who joined around the same time.

The project he is working on is to migrate a huge system into a new platform. The code complexity is high and Brian had to be extra careful to not impact the users who are using it every single day. To his credit, he dove into a complicated codebase, contributed code patches, and launched in production without regressions. This is really impressive work that helps the team a lot.

Dan Witte, Engineering Manager on Mobile Ads Manager: Part of what makes Lucy a fantastic engineer is the wealth of diverse experience she brings to the team. She has a background in technical artistry for game design on web and mobile, UI engineering across mobile platforms, and technical teaching. Her work experience spans Mexico, Japan, and the US. Having people with different experiences and backgrounds is important to us -- both from a cultural and professional perspective -- so that every member of the team can contribute something unique to our product’s and team’s direction.

I'm so glad to hear how you've all grown and made impact here at Facebook in a matter of months. I know you'll take what you've learned to your new rotation, and I'm excited to see what you build next!

This story first appeared on Facebook's enginering blog, Code.

We're hiring engineers!

Help us build infrastructure and solve big challenges at scale

Engineering

Meta’s engineering teams create the infrastructure and systems that underpin our apps and services, connecting more than 2 billion people.