What programming languages should you learn?30th Oct 2019
There are LOTS of languages. Picking one (or two, or three! 😱) can be scary and overwhelming at first. In this article, I want to share three things:
- What to consider when picking languages
- What NOT to worry about when you pick languages
- Recommendations for languages to learn
For this article, I assume you want to be a web developer. If you don’t want to be a web developer, then these considerations and recommendations do not apply to you.
Two categories of web development
Web development can be divided into two large categories:
I wrote about the difference between Frontend and Backend in detail in “Frontend vs Backend”.
The basic gist is:
- Frontend is about stuff a user can see (and touch).
- Backend is about stuff a user cannot see (or touch).
It doesn’t matter whether you want to specialize in Frontend or Backend (or both). You need to know these two languages:
- HTML is used to structure a website.
- CSS makes it look nice®.
You don’t have to be an expert in either one. You just need to know the basics before you decide whether to work on your Frontend or Backend skills.
You also need to learn a little bit of server stuff (more on this in the Server section later).
Learning Frontend Development
If you want to specialize in Frontend, you need to become good at these three languages:
Here’s what I measure by good.
- For HTML:
- You know how to create a structure for the site
- You know when to use which tag (and why)
- For CSS:
- You know how to create responsive websites
- You can get things to look exactly as you want it to
- You know how to add interactions. For example, if a user clicks a button, you can get a menu to show up.
- You know how to use APIs
- You know how to create keyboard shortcuts
- You know how to make accessible components
Of course, there’s much more to each language than what I mentioned above. You can spend years honing your skills and becoming amazing at each language. But I know you’re not looking so far ahead yet 😉.
When it comes to these three languages:
- HTML is easy for most people
- CSS starts off easy, but it becomes hard later
Learning backend development
Backend can be split into three parts:
- Backend languages
There are many backend languages. You can choose from:
These languages do the same thing. They let you serve up a website from a server (more on servers later). You don’t need to learn everything. Pick one.
Learn one language.
Don’t learn any other backend languages until you’re proficient enough to build stuff without googling (much).
What language you choose depends on what you want to build.
- If you want to build Wordpress websites, you need to learn PHP.
- If you want to build an app, you can go with any language.
If you want to build an app, I recommend choosing one of these:
When you pick a backend language, you also want to pick a framework to go with it. It’s hard to build a backend without a framework. Plus, tutorials and books usually teach you how to use a framework (and not build things from scratch).
I suggest you use these frameworks if you don’t know what to choose:
Databases let you save things.
For example. Let’s say you logged into Twitter. How does Twitter know you’re you? The answer is they saved your login information and your preferences in a database.
When it comes to databases, there are two main types:
- SQL Databases
- No-SQL Databases
Note: SQL can be spoken as “sequel”. When people say “sequel”, they mean SQL. Same thing.
Again, both types of databases work. You don’t want to learn both types when you’re starting out. Pick one and go. Doesn’t matter which you pick. Don’t worry about pros and cons (you’re won’t know enough to evaluate the differences at this stage).
If you pick SQL databases, you can choose from three:
If you pick No-SQL databases, popular choices include:
Again, pick one and go. Don’t get paralyzed. I chose MongoDB because people were talking about MongoDB when I started learning. (See, pick and go!).
You can (and will) learn about their differences as you get more advanced. No hurry to learn the differences. Build something first.
Servers are where you host your website. They can go from simple to super-duper complicated.
For servers, you can choose from these platforms:
Both Now and Netlify let you host static frontend websites easily. (And they’re free!). If you only need frontend stuff, then go for Now.sh or Netlify.
Heroku is a good choice if you want to build an app, but you’re not ready to dive into server configurations.
Digital Ocean is a good choice to configure your own server. (The link above gives you $50 credit).
Configuring a server
Servers are hosted on Linux machines (not Windows, not Mac). This means you need to learn to use Linux when you configure a server.
Before learning Linux, you need to be comfortable with the command line. (Here’s a good place to start).
You also need to pick a language. Here, you can choose from:
Again, pick one and go. I used Apache initially when I first built websites (because it was configured for me). Later, I moved on to Nginx when I configured my server. Today, this blog (and almost everything I build) runs on a Digital Ocean server.
Here’s a quick summary.
Web development can be split into two categories: Frontend and Backend.
It doesn’t matter whether you want to be a frontend developer or backend developer (or full-stack, if that’s what you want). You need to know the basics of HTML and CSS.
If you want to become a backend developer, you need to:
- Choose one backend language
- Choose one database language
Start by building a website on Now.sh or Netlify. Then, move to Heroku. Finally, configure your own server with Digital Ocean.
When you configure your server, you need to:
- Learn to use Linux
- Choose between Apache or Nginx
There’s a lot of stuff going on here. Take your time to learn. Don’t rush. Enjoy the learning process :)