How Facebook Ships Code
Interesting blog post by yeeguy entitled How Facebook Ships Code. mig33 do share some common things with Facebook =)
Here are 8 interesting snippets:
- All engineers go through 4 to 6 week “Boot Camp” training where they learn the Facebook system by fixing bugs and listening to lectures given by more senior/tenured engineers. estimate 10% of each boot camp’s trainee class don’t make it and are counseled out of the organization.
- Very engineering driven culture. “product managers are essentially useless here.” is a quote from an engineer. engineers can modify specs mid-process, re-order work projects, and inject new feature ideas anytime.
- By default all code commits get packaged into weekly releases (tuesdays)
- Resourcing for projects is purely voluntary.
- Engineers responsible for testing, bug fixes, and post-launch maintenance of their own work. There are some unit-testing and integration-testing frameworks available, but only sporadically used.
- Ops team is really well-trained, well-respected, and very business-aware. their server metrics go beyond the usual error logs, load & memory utilization stats – also include user behavior. E.g., if a new release changes the percentage of users who engage with Facebook features, the ops team will see that in their metrics and may stop a release for that reason so they can investigate.
- If a feature doesn’t get coded in time for a particular weekly push, it’s not that big a deal (unless there are hard external dependencies) – features will just generally get shipped whenever they’re completed.
- Getting blamed will NOT get you fired. We are extremely forgiving in this respect, and most of the senior engineers have pushed at least one horrible thing, myself included. As far as I know, no one has ever been fired for making mistakes of this nature.
Read: How Facebook Ships Code