Adam Simpkins is a software engineer on the traffic infrastructure team.
Q: Why did you to choose to work on the developer toolchain?
A: Having fast, reliable, and easy-to-use tools helps make all our engineers' jobs much easier, and helps everyone move fast and focus on shipping cool new products. I initially started working on the toolchain since I wanted the tools to be better for my own use, but it's really rewarding to see how much it impacts all the other engineers as well. I've worked a lot on fbconfig, the tool we use for building all our back-end services. It makes it easy for developers to create new projects and share code between projects, without having to worry about the details of how they need to be compiled or the details of the build dependencies.
Q: What problem are you most passionate about solving right now?
A: I'm really focused on how to make the network faster and more efficient so Facebook loads quickly and performs well for everyone. Several other developers and I are working on our HTTP stack and load balancing infrastructure to ensure that the traffic flow is optimized both within our datacenters and between our datacenters and people accessing Facebook. As part of this we are adding support for next-generation protocols like SPDY, and improving our load balancing mechanisms to ensure that people always connect to servers near them. To be honest, there is still a lot of low-hanging fruit in this area that our team can take advantage of to speed up the site. It's exciting to work on an area where I can see my code have such a dramatic impact on performance for hundreds of millions of people.
Q: What's your favorite tool?
A: One of them is Phabricator, the open-sourced code review system we use at Facebook. Phabricator's support for image macros is definitely one of my favorite features. It makes it easy to insert funny pictures and nyan cats in your code review feedback. This seemed like a pretty trivial feature when I first started working at Facebook, but after using it for quite a while now I think it's by far one of the most important features of the tool. It's amazing what a difference this makes in keeping work lighthearted and fun.
Q: What is the dev process like for you at Facebook?
A: The dev process is normally pretty lightweight. If there is a code change that I think will help improve the site, our libraries, or our toolchain, I can normally just go build it. Larger changes require a bit more coordination, but if you have a good idea to improve our code it's normally fairly easy to get other developers on board to help out. One of the great things about the dev culture is that there is a sense of shared ownership of all the code. If I run into a problem in pretty much any area of the code base, I can go in and fix it myself, get it reviewed by someone familiar with that code, and check it in.
Q: Why do you come to work in the morning?
A: I come to work for the challenging problems, and for the opportunity to work with a lot of talented, motivated co-workers. The sheer scale of the amount of traffic we receive each day means that we have to solve problems that you won't find at very many other places. It's also really fun and motivating to get to work with a lot of other extremely smart engineers, all of whom are very passionate about the site and the problems we work on.
Q: What advice do you have for other engineers?
A: Be curious. When you encounter problems, don't be afraid to dig into the source code until you find the root of the problem, even if it's in a lower-level library or in one of the tools in your toolchain. Even if it takes a while to track down the problem, having a better understanding of your entire tool stack will pay off in the long run.