Skip to main content

Our messy feature rollout process

Lots of developers have secret sins hidden in their codebase, things written in a hurry with an expanding scope, left unmaintained for too long. For me this was the way in which we control feature rollout.

Back when we first launched we didn't have accounts that allowed multiple users, paid plans or different user roles, nor did we have a theming engine with optional features like error pages - launching a new feature was simply a case of pushing the new feature into production.

However as time went on, we wanted to expose new features to small groups of customers, sort of an extended test, before releasing them into the wild. We also needed to account for all the other new factors such as what tariff customers are on, what role they have within the account, and if their theme supports a given feature.

This creates a complex and messy chain.... messy code keeps me awake at night.

Today I made my first attempt to consolidate this process, so I can now easily check if a feature is enabled on an account from a single location, and it'll go through the motions for me.

There's no visible change in the product of course, so nobody will ever know... but I'll know, and that's enough to make me happy.