Release Engineering is the part of the software engineering process that is most akin to herding cats. As a release engineer you act as gatekeeper between hundreds of code changes that other engineers make and the people that use the systems we build, package, and release. I've been doing release engineering work for about 20 years on projects big and small. I've shipped everything from entire operating systems to small stand-alone apps to large web-based applications responsible for generating millions of dollars in revenue per day.
Each of these environments handled release engineering in their own way, but were surprisingly similar in how the engineers developing the code interacted with the process: in general, those engineers were a bit removed from the nuts and bolts of how their code made it out the door. That's not the case at Facebook. I teach a class here on the release process at Facebook, and the first thing I explain is our unique development and deployment environment.
I mainly give this talk to new people, but even the old timers need a reminder now and then. As an engineer, you will probably never work in an environment that's quite like Facebook. I can pretty confidently say that there is no other place where changes you make in the code will be in front of your mom and 175 million other people in less than 60 minutes. From a developer's point of view, this is pretty great and exactly how things should be. But given the realities of the technologies we use and the infrastructure we run on, Facebook engineers all need to be be aware of how we release code. It boils down to a significant trade off that Facebook has decided to make and that you sign up for when you join as an engineer here.
You're given a rapid development and deployment environment; you give back your time and attention. What this means in practical terms is that you, as an engineer at Facebook, need to be plugged into the release process. Facebook isn't an environment where you can consider yourself done once you check in your code. You're only half done. When you work here, you’ll understand when we release and how we release. You’ll understand the path your code takes from submission to production, and you’ll know exactly how and when your mom will be able to use that great new feature or tweak you developed. And it can happen in 60 minutes or less.
Just in case this sounds exciting to you, you should check out the redesigned careers site that we just launched. Alex, the engineer that developed it, was pretty excited to help that code walk out the door.