Python? HTML? Which language should I learn first?
This is a question I hear a lot. My first answer to this is “it doesn’t matter where you begin.” When you learn your first coding language, you will also pick up a range of valuable skills. For example, you will learn how to solve a problem as well as how to look up a new concept. These are all transferable skills that can help you when you move on to another language. Moreover, many languages use the same concepts and terminologies like “variables” and “functions”. It’s not difficult to switch from one language to another.
A better approach, in my view, is to start with an objective. If you know what you are trying to achieve, picking your first language should be easy. It will become a matter of choosing the right tool for the job at hand. You can think of this in terms of WHAT (objective) vs. HOW (which language) questions. In performing this exercise, you would want to start with something a little more specific than, say, “I want to be a software developer.” For example, if your objective is to design a visually compelling website, starting with HTML and CSS makes a lot more sense than SQL or Java. On the other hand, if your goal is to make charts and graphs based on a publicly available database, you will do well to learn SQL and Python.
You might have noticed that in both examples, I cited two languages: HTML & CSS for web design and SQL + Python for data visualisation. This is important. In this objective-led approach, your question is no longer “which language should I learn?” Rather, it is “how do I do X?” In the web design example, even though CSS is technically a separate language, there is very little value in learning CSS in isolation because a typical website is built with both HTML (basic structure) and CSS (visual styling). Equally, even though Python has a range of data visualisation libraries, a basic understanding of SQL is necessary in order to extract data from a database.
Another benefit of this approach is it takes the pressure off from you to learn everything there is to learn about language X before moving to the next. It’s ok to pick up just what you need for the project you happen to be working on. To stay with the web design example, if you want to make a website with a blue background and your dog’s picture in front, you can start by learning how to embed an image file in HTML and adjust the background colour in CSS.
If you apply this approach faithfully and define your objective, you might come to a conclusion that programming is not the best tool for you right now after all! And I think that’s ok. For instance, if you want to make a website and only have 24 hours to release, using a free web builder such as Squarespace or Wix might be a better option. Similarly, if you are a senior-level manager who has been recently assigned to manage a team of data scientists, you are probably not expected to learn how to build complex statistical models by hand using R or Python. In such a situation, what might be more useful is to know how to hire and motivate data analysts and data scientists. Of course, it won’t hurt to know a little bit about the tools they use. But the focus should be on broader understanding of trade-offs between different solutions and how the tech stack contributes to your business rather than creating regression models yourself.