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

  1. The challenge of operating at the scale they do
  2. 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?)

JavaScript is not available.

Untitled

Fast/Slow in 3X: Explore/Expand/Extract

Kent Beck’s 3X - Explore, Expand, Extract