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:

```js
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:

```js
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](https://developer.mozilla.org/es/docs/Web/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](https://www.python.org)
  : 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](https://docs.oracle.com/en/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](https://code.visualstudio.com)
  : 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](https://developer.mozilla.org/en-US)
  : 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](https://github.com)
  : 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](https://stackoverflow.com)
  : 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](https://amzn.to/3qHRnfS)
  : 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](https://fullstackopen.com/en)
  : 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](https://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:

- [Midudev and his JavaScript and React knowledge](https://www.youtube.com/c/midudev/videos)
- [pildorasinformaticas and their Python course](https://www.youtube.com/c/pildorasinformaticas/videos)
- [Dot CSV and his way of making the hard easy](https://www.youtube.com/c/DotCSV/videos)
- [HolaMundo and his vast experience in this field](https://www.youtube.com/c/HolaMundoDev/videos)
- [BettaTech and their more architectural view of programming](https://www.youtube.com/c/BettaTech/videos)
- [Fireship and his condensed explanations](https://www.youtube.com/c/Fireship/videos)
- [CodingGarden and his love for JavaScript and web development](https://www.youtube.com/c/CodingGarden/videos)
- [FilledStacks and their ease when explaining Flutter](https://www.youtube.com/c/FilledStacks/videos)

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.