What do you need to learn programming?

— 6 min

Did you know that programming has become the highest-paid profession in the world? I’m sure you already knew this, but it’s always good to be reminded, especially if you still haven’t decided to take the step and learn what programming is.

For many years, we’ve been led to believe (ahem Hollywood ahem) that programming is only for brainiacs with no social life and heads full of random numbers that make “magical” things happen. But no! Nothing could be further from the truth. Programming is basically like learning a new language and knowing how to place words one after another so they form coherent sentences.

Without going any further, I’ll bet whatever you want that you know at least a couple of words in a language other than Spanish. I’m sure you know what Hello or House means!

Look, I’ll give you an example so you get the idea:

alert("Text message");

Could you infer what the expression above does? Of course you could, I expected no less. It shows an alert with the content “Text message”. Very good, now I’ll show you a slightly more complex example:

var message = "Text message";
alert(message);

It’s true, there is something here you might not understand if you’ve never had contact with programming, but I’m sure you can still understand the behavior of the expression above without many hints.

Exactly! First, a message containing “Text message” is created, and then an alert containing that message is displayed.

Alright, after this super short introduction to programming, I’m going to tell you which languages, tools, resources, and guides I recommend the most to learn programming from scratch.

Languages

A programming language (in very short terms) is a set of instructions, in this case with syntax close to natural human language to make it easier to use, that allows a person to perform actions and tasks on a computer.

Among all existing languages, the most widely used and, therefore, the ones with the most documentation are:

  • JavaScript : The programming language of the web by excellence. It is used in all projects that require logic executed on the end user’s terminal, whether that’s a web browser on a laptop or a cross-platform app on an Android phone. The possibilities are endless, and JavaScript is the ideal starting point if you want to learn programming.
  • Python : I started programming with Python! Yes, you’ve probably heard about Python many times, and I assure you that wasn’t for nothing. This is the breakout language of the 21st century and, for now, the one most likely to take Java’s place as the most used language in the market. It is also a very good option for learning programming fundamentals.
  • Java : Loved by many and hated by many others… Java is a solid language that can run on any device thanks to JIT compilation, and it can be used for countless purposes. Even so, many of us see it as a bit more archaic than young Python. But hey, it is still one of the most used and most in-demand languages in the whole industry, no doubt about that.

To clear up possible doubts, I do not include HTML or CSS because they are not programming languages. HTML is a markup language and CSS is a style sheet format. Let’s end this war once and for all 😌.

Tools

There are certain tools I consider essential to speed up the programming learning process. They won’t make you know how to program overnight, but they will help make the journey less tiring.

This selection of tools is:

  • Visual Studio Code : The famous VSCode is the preferred text editor for most programmers. It was created by Microsoft and its source code is Open Source. You can install countless community-built extensions through its own marketplace.
  • MDN Web Docs : The go-to web documentation. It is written and maintained by Mozilla and is the first place to look for information about HTML, CSS, and/or JavaScript. It also includes documentation for protocols like HTTP.
  • GitHub : As you get deeper into programming, version control becomes more and more important. GitHub is a Microsoft platform that uses the git version control system. This is where code is uploaded to collaborate, make changes, undo changes, etc.
  • Stack Overflow : The largest programming community on the internet. This site is used to copy and paste code. Just kidding! On Stack Overflow you can post software development questions. Those questions are answered by other community members, and it is the place to go when you need help.

Resources

I consider resources to be documents or pieces of documentation that someone can check occasionally and that help clear up doubts or understand something. This includes articles, books, documentaries, blogs, etc.

My personal selection of resources is:

  • Clean Code - Robert C. Martin : The book that changed the way I see code. Clean Code helps you understand why certain practices are so important when developing software, and why others are harmful for the project, other developers, and even yourself. Keeping code clean, readable, maintainable, and collaborative is essential.
  • Full Stack Open : On this site you’ll find one of the most complete full stack web development courses I have seen to date. Simply 10/10.
  • DEV.to : The programmers’ blog. This site publishes all kinds of content, from community members’ concerns to tutorials about the most extravagant technologies out there. I recommend checking it out, you won’t regret it.

Guides

Programming guides are a double-edged sword, because your goals rarely match the author’s goals 100%. Even so, certain guides can give you more than you think, especially when you are starting out. This point is the most subjective of all and depends entirely on my personal opinion. Still, I didn’t want to miss mentioning certain tech content creators who have been very important to my learning over the last few years.

The following list is not ordered, and therefore I don’t think the first ones are better than the last ones or vice versa:

That’s all for now. In this post I shared everything I find useful for you to start in the world of programming and make the journey more enjoyable. In any case, stay tuned for my next post, because I’ll tell you what I think a developer should have in their work setup to enjoy even more of what we do every day.