What programming languages should you learn?
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:
- Frontend
- Backend
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).
Must-learn languages
It doesnât matter whether you want to specialize in Frontend or Backend (or both). You need to know these two languages:
- HTML
- CSS
I wrote more about the difference between HTML, CSS, and JavaScript in this article. The basic gist is:
- HTML is used to structure a website.
- CSS makes it look nice(r).
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:
- HTML
- CSS
- JavaScript
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
- For JavaScript:
- 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
- JavaScript is scary for most people
By the way, I wrote a huge course on JavaScript. If you need help, look at the course details. Iâm sure it can help you.
Learning backend development
Backend can be split into three parts:
- Backend languages
- Databases
- Servers
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:
- Node
- Ruby
- Python
Again, doesnât matter which one you pick. Pick one and go. I chose Node because I can use JavaScript both on the frontend and backend. I donât have to switch between languages)
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:
- Express (for Node)
- Ruby on Rails (for Ruby)
- Django (for Python)
Databases
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
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.
Wrapping up
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 frontend developer, you need to become good at HTML, CSS, and JavaScript.
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 :)