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:
- Sequel Databases
- No-sequel Databases
Note: Sequel can be abbreviated to SQL. When people say SQL, they mean Sequel. 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 :)
Thanks for reading. This article was originally posted on my blog. Sign up for my newsletter if you want more articles to help you become a better frontend developer.
Top comments (6)
Great post! I would add this core advice for beginners:
First, think about what would you'll love to do or want to, then pick a subject (Front, Backend, or Both) and finally a technology stack.
For example, if you picked up back, then it would be easier to be aware of LAMPP or MERN / MEAN / MEVN Stacks and the like.
This post is useful for beginners, But additionally, We should choose a language according to the project type and Preferences!
I think it's a must to know Html and CSS for Front-End developer.
And JavaScript should be picked as The third course for completeness!
As a backend languages, I would recommend learning RubyOnRails or Node.js.
You should pick a language based on needs. If your team only knows .NET, you're going to be using C# (and likely mssql). If you want everything to be a single language, you're picking NodeJS. etc. We (web devs) don't get into cases of performance very often anymore unless you're in Alexa top 500 or something.
RE: Ruby. I don't know where the use/recommendation of this lang/framework come from, but I have never seen a job for it.
Great article =) Between PHP, Ruby and Python I recommend Ruby ππ
A correction, it's not "sequel". It's SQL. An acronym for Structured Query Language.
Great article Zell! Thanks for sharing.