Opinions, data, and Gros-Câlin

At ServeBox, we put a lot of emphasis on autonomy and collaboration. We try hard to encourage our teammates to perform exploratory work and to make their own decisions about the projects they're working on. The same applies to our customers: we don't see them as delegators who pay to tell other people what to do. They pay to become a part of a cross-functional team which tries not only to do the things right, but also decides on the right things to do.

That's where Olivier, our Chief Agility Officer kicks in (job titles, eh?!). In my opinion, he's a sort of catalyst. His mission is to increase the ability of the project teams to make decisions, experiment and, ultimately, learn faster. While working with him, one of the most important things I've learned is that we can't make decisions solely based on opinions. As Jim Barksdale (former Netscape CEO) puts it:

If we have data, let's look at data. If all we have are opinions, let's go with mine.

We all have opinions and we use them a lot. There is nothing inherently wrong with that, opinions and ideas are first-class citizens in the creative process of building something new. The issue is that a lot of them are plainly wrong. Thus we need rigorous, fast and cheap ways of proving our ideas have a positive effect on the goals we, as a project team, have set for ourselves. Some of these experiments mean to validate an idea before its implementation, while others aim to confirm the actual value of this implementation.

To validate hypotheses, we have to measure, and to measure, we need data. There are a lot of great tools out there to collect and analyze metrics but, in my experience, quite often getting the data directly from the apps databases is a better solution. That's why I've created Gros-Câlin. It provides a cheap, easy and versatile way of extracting data straight from applications databases. Inspired by Heroku's dataclips, it serializes the results of database queries in JSON and make them available via an HTTP endpoint. We use the data provided by Gros-Câlin for reporting, as a trigger for notifications but also to fuel several information radiators such as dashboards we've created using Dashing.

Basically, its purpose is to turn

SELECT count(id) AS sign_ups, country FROM users WHERE created_at DATE_SUB( NOW(), INTERVAL 24 HOUR) GROUP by country;  

into

JSON

You may declare as many databases and queries as you want and make them available from a central point.

I hope you'll find it useful.