Facebook Engineering Process - with Kent Beck
Facebook Engineering Process With Kent Beck - Business and Philosophy Podcast
Interview with Kent Beck - an early proponent of Test Driven Development (TDD).
Observations
Facebook staff @ 2011
2000 employees
700 engineers
Moving into a period of high growth → people joining from Google, Microsoft etc. bringing a different set of values and practices.
Natural tendency to revert to lowest common denominator, in terms of values and practices.
- Lots of planning
- Long cycles
- More handoffs
- Bigger batches
Facebook having to tackle two distinct challenges
- The challenge of operating at the scale they do
- Exploring the many different ways that social interactions can be mediated by a computer
Three-phase approach to development
-
Phase 1 - Explore: Highly experimental, they’ll smash out a feature without tests and push it to production behind a feature flag, so that it can be easily turned off.
- The goal is to get real customer feedback on the feature before investing heavily into the level of completeness and robustness that we might otherwise expect.
- Minimal reliance on unit tests because there is just a bunch of stuff you can’t test for.
- There just also isn’t a lot of point investing loads of time in tests when before you know that the feature will be sticking around.
- This is made up for with a bunch of other forms of feedback, like logging and observability.
-
Phase 2 - Expand: The feature is deemed worth investing resources in, due to rapidly increasing use by customers.
- Overcome bottlenecks to scaling.
- Go back and pay down the debt accumulated in phase 1 that is contributing to bottlenecks.
- This is when cut-corners are remediated - add test coverage, refactor.
- Remain in this phase until things become predictable.
-
Phase 3 - Extract: The high growth period is over, and there is now a consistent/predictable high demand for this feature.
- Efficiency of meeting the now high and predictable demand is important.
- Much more to lose, changes to the idea may need increased levels of safety (test coverage, more scrutiny of changes going out?)
