Our Tech Stack: Feature Toggling

Welcome to CareerJSM’s blog series: Our Tech Stack. The purpose of Our Tech Stack is to explain a little about our tech, software we are using, and how we are building our product. We hope that this series is informative for both our customers, as well as potential members of our team, so that you can learn more about our company and product.

Here is the first instalment by Brian Bancroft, a developer at CareerJSM who recently led the implementation of feature switching at CareerJSM.

You can read about our Customer Operations Tech Stack here. 

Feature Toggling

CareerJSM provides our software to companies that support their clients in the process of their job hunts and career change execution. However, we have a number of different clients with sometimes slightly different requirements with regards to how they interact with job seekers.

Some companies may want some of the features which CareerJSM provides such as job search management or our resume builder, but seek to exclude other features à-la-carte, such as our Learning Centre. As this demand for customized packages changes, it forces us to either adapt or face hard decisions about how we deploy our suite of software. Thankfully, our agile team allowed us to adapt and adopt Feature Toggling as a way to change how we offer our products to different customers. What is Feature Toggling?

One common definition of feature toggles is ‘the ability to modify system behaviour without changing code.’ Simply put, this means our team can turn features “On” or “Off” for specific users, groups or the entirety of our user base.  For example, one of our customers doesn’t want to give their job seekers access to our Learning Center. Thanks to Feature Toggling we can turn that feature off in their job seeker portal, without having to turn it off for our other customers.

This allows our front-end engineers to maintain the same application across all companies in contrast with maintaining a separate codebase between different customers. Taking this approach minimizes the amount of potential bugs and shortens the time between the discovery of a bug as well as it’s solution, it allows end-users to experience new features at a similar time regardless of their career-transition coaches, and it shortens our product development time for new and improved features.

The Technical Benefits of Feature Toggling

By ensuring that we build one product for all customers, which we can customize on a per-client basis, it means that the process of building and updating is streamlined into a single task, instead of several similar projects. If we fall short of expectations in our product, it means there are more eyes on this single product, and that there is one single fix rather than a series of fixes for a similar problems across multiple products. Using feature toggling allows us to focus greater on a single aim, providing our front-end engineers with unity of effort.

This unity of effort not only allows us to build robust code, but it also allows us to speed up how we ship features. Instead of a lengthy deployment process for new functionality, our engineers can gradually work on a new feature, test it themselves in the wild, and when CareerJSM decides this feature is ready to go, we can ‘throw the switch’. Having this switch means that we can potentially allow customers and their end-users to participate in beta releases where they can experiment with new features to help towards their career transition.