At Simply Business, the Data & Analytics team has designed and built an internal application for monitoring live data experiments to help us track and share insights on our products and customer experience. Learn more about how we achieved this and why self-serve analytics tools can help teams to iterate more quickly while learning new skills.
Simply Business is a data-driven technology company, which means we are constantly experimenting in order to improve our products and customer experience. As we grow as a company, both in the UK and the US, the number of experiments that are live at any time is also growing. We’ve already taken steps to improve the communication between product teams to keep on top of the number of experiments and to share learnings by creating a cross-team forum called The Lab. You can hear our Head of Insight (UK) speak more about this in our video link: Building The Lab.
Within the Data & Analytics team, our insight analysts each support multiple product teams and therefore can be juggling many live experiments at once. As we continue to scale, this may become unsustainable, hence the need for a tool that allows the monitoring of experiments by business owners. The need for greater visibility over live experiments also fits with the Data & Analytics team's mantra - to empower the business by providing self-serve analytics tools. We already use Looker and OLAP data cubes for this.
When considering our requirements, the Data & Analytics team at Simply Business decided to build something internally rather than purchasing an off-the-shelf solution. This gives us a few advantages:
Every good application needs a name, so we’ve named ours “Dexter”, inspired by a certain boy-genius cartoon character who has a secret laboratory in his bedroom. It even has its own internal logo.
Dexter is built using the Flask web framework (written in Python) - this was a fairly obvious choice for us because the analysts are already using Python for data analysis on a regular basis. Therefore, the use of Flask would allow this group to own, maintain and improve Dexter as they require, as well as re-use the functions we’ve already written. Additionally, other members of the data team have already created internal applications using Flask so we have a wealth of knowledge and support available.
When approaching the task, we first had a session to discuss the features we needed (or wanted) Dexter to have. These were framed as user stories and our backlog was created and sorted into categories:
Following the design of the prototype, our MVP needed two essential functions to be met to start providing value:
We used WTForms to construct a simple form that an analyst could use to input the key details of a test, including owner, start and end dates, primary metric name and, possibly most importantly, a SQL query that would retrieve the results from our database. WTForms also includes useful functions such as form validation, which we used in our solution. To create a nice looking front-end for the form (and the rest of the app), we used Bootstrap.
In our design, once the form is completed and the user clicks submit, the SQL query is run against the database to check that it returns coherent results. If it passes this test (and a few others), the test is stored in a table in our data warehouse Snowflake, with all the input details submitted via the form. The homepage then displays all the experiments that exist in the Snowflake table.
The basis of the homepage is the table of experiments, which has a user friendly interface thanks to the DataTables jQuery plug-in. This amazing tool was really simple to implement and brings a wealth of built-in features such as search and sorting. Since we wanted our users to get the most value out of Dexter, it was really important to make it as easy to use as possible. There are loads of plug-ins similar to DataTables out there; this article gives a useful summary of some of them.
To enable the users to view the results of their experiments, the table includes a Results button for each experiment, which uses a jQuery click function to open a modal to display these. Behind the scenes, here’s what happens:
As with our other internal applications, the code is version-controlled in GitHub. Also, to make development and testing easier for any contributor, it can be run locally using Docker without any other dependency. For live production deployment we use Jenkins.
The main users of the app thus far are Simply Business insight analysts and product managers. We’re able to monitor usage by using Looker and will be collecting regular feedback from users in order to make sure that Dexter is providing the most value it can.
In this article, we've outlined the workings of the bare bones of our data experiment monitoring application - Dexter. In reality, our app uses many more features than those described above (including a rickroll button). The Data & Analytics team has big plans for Dexter - it’s the foundation piece that will allow us to improve our future testing and analytics services and capability at Simply Business.
Want to know more about what it's like to work in tech at Simply Business? Read about our approach to tech, then check out our current vacancies.Find out more
6th Floor99 Gresham StreetLondonEC2V 7NG
Sol House29 St Katherine's StreetNorthamptonNN1 2QZ
© Copyright 2020 Simply Business. All Rights Reserved. Simply Business is a trading name of Xbridge Limited which is authorised and regulated by the Financial Conduct Authority (Financial Services Registration No: 313348). Xbridge Limited (No: 3967717) has its registered office at 6th Floor, 99 Gresham Street, London, EC2V 7NG.