I'm writing this article to uncover some myths, truths, beliefs, and doubts. Being a newbie in a new domain is difficult. When starting coding it's not obvious what path you should take. There is a huge amount of technologies and even more articles (mis)directing you. So what path you should take when starting out?
If you want to get to the learning plan immediately, jump to the how to start section.
- new to programming;
- you don't know what is the initial point to start;
- you don't know whether it's worth learning coding in general;
- or you have other related questions;
You may read my general programming FAQ.
The most important part of the article. To learn any programming language(or technology) you need to master the very basic theory. Then immediately go code something. Repeat with more complex theory. Only practice(to solidify theory) will get you far in studying something.
In case you don't know what programming language to choose, please read this section.
- Python is also a great choice for beginners because it's simple too.
- want a simple language;
- want to get hired fast. A lot of job positions for JS developers out there; - want to be a full-stack person. You can program for browsers(front-end). Servers(backend, Node.js). Mobiles(React Native and so). Desktops(Electron.js). Microcontrollers. You may do all that in other programming languages, of course. But JS has a large community. More details in the below point;
- want to have ready-made solutions. You don't need to code some algorithms by yourself in most cases. You don't need to do complex things only to draw a rectangle on a website. There are many packages, frameworks, and community support for you.
So you're prepared to learn something exciting! The first thing you need: a theory on how those things work. Only basic things such as syntax and programming fundamentals. Like what? Understand why do we need programming it at all. What things are possible, what aren't
Step 0. A place where to write and execute code. To see the result of your code. Go to Codepen and create a pen. Or choose another code editor. This is where you'll be writing programs while studying.
This is a great resource.
Get familiar with how to write code:
- how to create a variable;
- how to make a function;
- how to call a function;
- how to read function arguments, handle them, and return something useful;
Congrats on this milestone! You now can write basic code. Note that it isn't so straightforward to write it though in the beginning. It's okay you can't follow tutorials. Try to write basic things. Get used to the style and then go further.
Don't go to the next step until you code the practice tasks in the tutorials you followed. It's important! Don't skip the tasks!
Step 2. Learn about data structures and when to use them. There are primitive structures such as numbers, strings, booleans. And there are more complex types such as arrays, objects. You should:
- understand when to use arrays and objects;
- know the difference between the two;
- write a lot of code using various data structures;
Most of the time if you don't understand something, it's because you skipped a section. Or, didn't read it carefully. Or, the information isn't simple enough. Try following a different source. See a video tutorial. Still, finding it difficult? Write me.
- front-ends(interactive visual representation). It's websites with logic. You need HTML, CSS to create visual blocks and JS to say a browser what to do. For example, when you press a button, JS handles the press and does something useful. Sends your data to a server to save in a database;
- back-ends(server-side code: Node.JS). This is where you can handle the data a website sends you. Store it in a database, or send it somewhere else. Or, transform it and save it;
- mobile apps. With React Native framework you can do such, isn't that cool?
- desktop apps;
Step 4. When you decide what path you want to take, learn the specifics of that environment.
For browsers(front-end path) you need to learn DOM. I.e. how to interact with visual elements on a website page. Think what projects you'd want to create - a personal website, an online store. Or something else. And create it! Make only a super simple and tiny version. Find a theory you will need when you encounter unknowns. E.g. how to find all buttons on a page and handle clicks on every one of them.
- create a basic HTTP server;
- handle the HTTP requests. E.g. when calling `GET /api/hello` to return "Hi!";Then practice. Pick up the Express library. It simplifies creating code on a server. Make some HTTP routes, do some transformations of data you receive.
And, of course, create an interesting project! A server for an online store website? A Discord bot?
For mobile and desktop apps, the strategy is the same. Learn specifics about the frameworks(React Native for mobiles or Electron for desktops). Create pet projects.
Focus on one area. Solidify your knowledge in one niche, then go further after understanding the basics.