How Learning SQL Taught Me to Think Systematically

Akiff Premjee
November 18, 2020

I didn’t know anything about data and systems when I started at Dropbox. I knew that a tech company had to keep track of a lot of data and that storing it in servers and retrieving it with code was a thing, but I didn’t truly know how all of that worked.

I had just pivoted my life trajectory from being a pre-med student to working in Sales and User Operations at one of the tech giants in San Francisco. I was interested in data partly because of its allure and mystery but partly because it seemed more intellectual, analytical, and streamlined than figuring out a sales cycle for Dropbox for Business.

I ended up teaching myself SQL on the side and picking up side projects for different teams at Dropbox who needed someone to analyze data and crunch numbers but didn’t have the resources and staffing. It added to my workload but I enjoyed it and it helped me cultivate a skill I was determined to learn: SQL. We’ll get into SQL in detail later but doing these side projects ultimately led me to switching to an analytics team full time at Dropbox and then getting a second analytics job at healthcare startup in NYC. All because I was interested in data side projects and picked up SQL through online resources. Not bad right?

This all sounds great and wonderful but there is more to the story than me just learning SQL and pivoting to the data side of tech. Learning SQL taught me how to think differently. I became more of a “systems thinker” and was able to both structure my thoughts and processes and communicate those ideas with others in an efficient way. It has helped me in various parts of my life outside of just working in data and tech. Having a systems mindset is key for developing your own ideas, understanding and learning new things, and being able to effectively communicate and work with others. It’s amazing to me how much can be solved if we look at problem and systematically try to solve it.

So here’s my pitch to you for why you should learn SQL. I want to cover what SQL is and why it is more accessible to the layperson than programming languages like Python, how learning SQL can turn you into a systems based thinker, areas of your life where learning SQL can help you both directly and indirectly, and a curated list of resources for you to get started learning SQL. Let’s dive in.

What is SQL

SQL stands for Structured Query Language and is a way to query databases for information that you are interested in. That's a lot of words so let's break it down.

A database is a table with rows and columns. Each column is a category of some kind and each row is an entry in the table with data about those specific categories. It looks like this:

You can imagine that companies have huge databases with lots of columns and rows and they use SQL to write queries to answer questions about all the data they have. For example, I could write a query to answer the question "How many under the age of 60 live in Washington DC?" and that query would return "1" as the answer because as we can see from the table, Michelle is the only person under 60 who lives in Washington DC. Being able to use SQL to answer questions like this helps you analyze your data and draw insights.

I won't go more in depth than this because there are a ton of resources online about the basics of SQL but the big idea here is that SQL is a language that allows you to quickly answer questions about the data that you have stored.

Using SQL to Think Systematically

SQL seems great and all but why should you learn it and how will it make you a better thinker? Great question! Because of the way that it is set up SQL inherently forces you to think in a structured manner. What do I mean by this?

Well when you have a question and want to answer it using SQL, you have to first think about what data you have available to you and how you can utilize that data to answer your question. In essence, you have to create a plan for answering your question before you can answer it. You may have to think through what different data fields are available or think about using multiple different tables that store different types of data. There may be an element of time in your question if you want to see trends over a specific time frame. All of these things come together and first force you to have a framework in your head before you can write your query.

This seems simple in theory but in practice you really have to have an understanding of what you are working with before you get your answer. There is no BSing your way to an answer because if you don't think through the steps of reaching your answer then you just won't be able to get it. In some ways it's either all or nothing which makes you systematically think about how to answer a specific question.

Applying learnings from SQL to your life

If you already know about programming then you're probably thinking that this is just how all programming works. You have a question, think through a framework to answer that question, and test your ideas until you come to an answer. This is definitely true but I think that SQL is much more accessible to most people because it is much simpler to think about. It's just data in tables and you're trying to manipulate the categories of those tables to come to an answer. It's more analysis than creation but still gives you the ability to think systematically.

Moreover, I've found that learning SQL has made me a systems thinker in multiple other areas of my life. Medicine is the big one for me since I'm in medical school right now, but funnily enough, coming up with a differential diagnosis for what disease a patient may have is very similar to working through a SQL problem. You have different data available to you (lab values, previous health history, medications, etc.) and you take that data and think through a framework that helps you put all of it together to answer a question like "Why did this patient have a sudden drop in their sodium levels?"

For those of you not in medicine, project management is an area in which being a systematic thinker is a huge advantage. A project is essentially a problem made up of a lot of smaller tasks and problems. If your project is to market a new product then you'll have to answer questions like "what distribution channels are available?", "what conversion rate can we expect from different channels?", or "what is the cost to acquire a customer from specific channels?"

Each of these is a mini question that fits into your larger goal and breaking down even these questions into individual components is a helpful way to think through each problem and work towards achieving the larger goal.

The last example I'll give you is probably the most universal one: communication with others. It is amazing to me how communication is so vital to each of our lives but so many of us are not good at simply because we don't break things down into individual components and think about things systematically. If you are trying to explain something to someone, it makes sense to have a framework in your mind that walks them through whatever you are trying to explain rather than just word vomit that is difficult to follow. Many times we understand what we are trying to say but we don't take that extra moment to create a mental framework and structure that will help others understand what we are trying to explain. By just changing your approach to communication and thinking of it from the principles that a language like SQL teaches you, you can be so much more effective at being a good communicator in whatever domain you operate in.

How to learn SQL

Well that's my pitch for learning SQL. I think it's just as vital, if not more vital, than learning skills like Microsoft Excel. It will put you in a position to analyze your own data and not have to rely on others who are more technical if that's an industry that you work in. Even if you don't work in tech, SQL has the benefit of transforming you into a systems thinker and its teachings can be applied to multiple domains of your life.

If you're thinking of getting started in SQL, here are some of my favorite resources: