15:02 - Wednesday, 16 April 2014

Stack Exchange Release Management

I saw this thread: How often are SO new versions deployed?

  • You are using CI and unit tests, right?
  • Do you do anything more before pushing out new releases?
  • What kind of guidelines do you follow when writing unit tests?

Basically, I’m wondering how you make sure that each release is good enough.

Herding Code 110 just came out today; it’s an interview with two SO developers (Geoff Dalgas and Jarrod Dixon). They discuss some of their process:

  • How do you share data when developing with a remote team? Geoff talks about how they started with the Database Project type, but moved to SQL scripts, ending with a migration tool. Jon gets to say “idempotent”.
  • Geoff and Jarrod talk about how they’ve moved form Subversion to Mercurial.
  • Jon asks how code moves from local development to a production server. Geoff talks about the build and deployment process.
  • Kevin asks how much the process has changed over the years.
  • Geoff talks about how features first hit Meta, then the “others” tier (everything but StackOverflow), then to StackOverflow.

We practice FDD: faith driven development. We believe our code will work.

The software development process is very much test-orientated as I believe that SO engages tens of thousands of regression testers, who are happy to be paid with virtual currency.