Why everyone that works in a digital business should learn some SQL
Because it makes you a creator, not a consumer
When I started Makeshift with Paul and Stef in January I had no idea what skills Paul had. I'd worked with Stef for some time prior, so was well aware of his amazing abilities as a creative developer.
But with Paul, I only knew he was an experienced investor and had worked on some interesting startups. I decided to start a company with him because of his money. But, it turned out that Paul had some mad skills in an area of digital product development that I had never come into contact with before - data analysis, and in particular, SQL report writing.
For those of you that don’t know, SQL stands for Structured Query Language. SQL is a bit like other programming languages in that you have to learn the ‘code’ to make use of it much like other popular languages you may of heard of such as Ruby, C, Python etc.
But, unlike these ‘procedural languages’ that instruct the computer to perform certain routines in order to arrive at outputs and often create data, SQL is a ‘query language’, which means it is (almost) totally focused on retrieving data.
Day to day, SQL is used to retrieve data from different tables in databases, and then combine it together to create reports. It has a pretty simple syntax, and, in my experience almost anyone can start using SQL to create reports within a few minutes.
This then returns a table that looks like this (don't worry, this is dummy data):
That’s it. You can do lots of operations on the data, and combine things together to create complex reports. And you can use the reports to drive other stuff - for example exporting the data as a feed to create charts and so on.
Hopefully you can already sense the power. That list is very valuable. It’s my most valuable users! Maybe I should email them or something. Anyway.
Being able to retrieve and manipulate any data held in your database has, literally, an infinite number of applications for every person working in a digital business.
It took me a while to realise the power of knowing SQL. I guess it was because I’m so used to asking developers to give me answers to questions I have, or to relying on the user interfaces provided by the big web analytics providers. And that was always good enough.
Below: Google Analytics. No, I have no idea what to do with this information either.
But, as is always the case, you don't know what you don’t know - and what I didn’t realise was how hamstrung and limited my understanding of how the apps I was working on worked, and what people were doing with them.
Once you can write SQL there are literally no questions you cannot ask of your data. And with total power comes total possibility. A useful, although not quite correct, analogy might be the transition from using a hosted website provider that gives you lots of options to learning to write HTML / CSS to build your own sites.
Once you can write SQL there are literally no questions you cannot ask of your data.
Once you hit the base seam of presentation code you can make anything - you aren’t limited by the decisions made by the designer of the system you are using. And its the same with query languages.
As a result I’ve become totally converted to the idea that everyone working on web products should learn some SQL. I'm not alone.
Everyone can do their job better when they have data to help them make decisions, and being able to retrieve the data yourself (by writing SQL reports) shortens the feedback loop by an epic factor—minutes, not days/weeks. This is big.
All businesses are digital businesses now—so everyone is in the data business
Historically data analysis has been a siloed part of a business, often called the Business Intelligence team. These guys respond to management requests for information, pulling down databases onto local machines, writing queries and creating epic Excel charts and decks, which then go back to management to help with decision making.
These functions will still exist in big businesses, (they like calling themselves data scientists these days), but, as every business starts producing and consuming more and more digital data, the querying and analysis of quantitative data starts to become a basic skill required by everyone.
Above: A complex SQL report that drives one of our product dashboards
I think of it as an emerging new literacy—much like basic literacy is vital to performing almost any job well, in the future (and today!) data literacy is a basic skill we all need.
I’m serious about this being a low level skill we all need. Every single person's job in a digitally focused business is made better when they and their colleagues are data literate—engineering, of course, but also marketing, design, customer service, management… all the decision making performed in these roles can be improved with access to data. The problem is, everyone needs different data. Which means they need to be empowered to get that data themselves.
Give a man a report, and you answer his questions today. Teach a man to query...
This is why I strongly advocate SQL as the language to learn to do this. It’s been around for 25 years, is very well documented and there are millions of SQL analysts in the world. Much like programming, every line of SQL you write is an investment in yourself.
This does mean some changes. You can’t write SQL against unstructured data, and with the rise of NoSQL databases and proprietary data stores like Google Analytics this is challenging. But this is an architectural question, which I'll save for another post.
Wait! What about Google Analytics!?
Sigh. This always comes up whenever I talk about this stuff with people. First, a quick 101 on how these services work.
Google Analytics, Mixpanel and all these other presentation layer analytics services are not database analytics services. They are event tracking services, that fire events based on user behaviour on your site. These events go into a database that they control, and then they have a user interface they have created that allows you to view that data in different ways—as funnels, charts, tables etc.
These services are great, and we should all use them, normally for one task that they are good at (although they generally try and add more and more stuff, which is another story). But to rely on them exclusively for answering questions about your users behaviour is to infantilise yourself.
When you use Google Analytics to answer questions you restrict yourself to only asking questions that the designers of the user interface have thought you might want to ask. Normally these services have thought of a few important questions that everyone does want to ask. But that's it.
When you use SQL to ask questions of a database that you control you can ask any question you want. It's that simple, and that’s why at Makeshift we send all our event data via segment.io on the way to Google, Mixpanel, Intercom etc, so we can pull it down into our own structured database on the way, and therefore ask any questions we want via Wrangler.
In summary: Learn SQL now.
My final thought. You don’t need to be a query master to make use of SQL to the highest level. You just need to be aware of how structured data works and be able to write some simple data extraction queries so you can self serve reports as and when you need them.
Above: Sophisticated SQL reports for one of our apps at Makeshift
But, once you are aware of how SQL works, you can get specialists to help you once you are out of your depth. Especially if you use Wrangler, where you can invite people to safely collaborate on your data with only an email address.
But, if you don’t even know the basics you are stuck in baby mode, relying on other people to tell you what you need and what you are allowed to know. Which sucks.
Has this convinced you to learn SQL? Then you should come on our course at General Assembly. Its just £100, and will be one of the best investments you make in yourself this year.
Finally, if you found this useful, stick your email in the box below and you’ll get more posts like this straight to your inbox.