Runtime Feature Checks at Redfin

BouncerA little over a year ago, the engineering team here at Redfin made a big change: we switched from shipping major versions of the code once every two months to shipping once every three weeks (with only a few exceptions, like when hackathons conflict with release dates).

One of the major contributors to us shipping new features on the dot every three weeks is a feature we lovingly call “Bouncer” (as in the guy at the club that keeps you from getting in when you’re not supposed to). It’s loosely based on the concept of Facebook’s Gatekeeper and similar tools at other companies (see also: How does Facebook’s Gatekeeper Work?). We wrote some code that determines at runtime whether or not a given user should be shown a particular feature. I doubt our code is as complex as Facebook’s, but what we have is pretty sweet: it allows us to show new features to individuals, a percentage of users who are logged in (or not), and by popular demand from the QA team, individual browsers.  We also still count our engineers in tens, not thousands… (Related: We’re Hiring).

Runtime feature checks open up a whole new world of possibilities. Remember when we launched the new design for our listing details page? That was rolled out as a private beta to a subset of users first using Bouncer. Redfin Collections? Same story. Even for features smaller than those, things don’t always get rolling in time to make it into the current release, so they get added to the code in an ‘off’ state, and only get turned on once they’re totally finished and our QA team has had time to sniff out the bugs. This is another huge benefit: when we ship code this way, there isn’t nearly as much pressure to ship things that aren’t quite done, and we avoid having a bunch of large feature branches that have to be merged in and tested. We also ship a fair number of non-critical minor releases (in addition to hotfixes for breaking bugs) in between major releases, so if the feature is something small it might only be a couple days late getting turned on, and if it just isn’t ready, there’s only a couple more weeks till the next major release.

At Redfin, we love shipping code, and Bouncer lets us ship code faster.