The best way to learn programming: JavaScript Edition
Tags: programming, javascript, typescript, beginners
Published: 2021-09-02 19:21:49

Have you ever felt stuck in your studies? Let's talk about it

If you're reading this you've probably been in this situation, or maybe you're feeling like this right now. Be aware that this is pretty common among many developers, but luckily we have the solution right here.

## The problem

You're probably a junior or just started programming, as you drown in information trying to figure things out completely on your own. You probably have done a few courses but can't see the progress yet, you feel stuck. It doesn't matter what you're studying at this point, you need to change the way you're doing it.

## The solution

The answer is quite simple, and while unexperienced developers can't see it yet (maybe because this isn't common in other some areas), we can put you in the right way. There are two magic words: **practice** and **community**. You need to get out of course hell as fast as you can, you NEED to put things in practice, you NEED to create your own projects. By no means I'm telling you that courses are not good, they can help you a lot specially if you're a beginner, the real problem is doing only courses and nothing else, not applying what you've learned. If you only do courses you don't really get into real life problems and you don't discuss with other developers about it. The open-source community is the best thing we have in tech, so you need to start learning in public instead of just doing everything on your own.

## But how can I do it?

There are plenty of project ideas you can copy for studies online, it doesn't matter if no one is going to use it, just start. You don't need to develop the next Facebook or a complex AI as your first projects, you can do almost anything you want to apply your knowledge. I'll leave some project ideas and some useful links at the end of this article. As for the community, there are plenty public and "almost-public" communities, such as twitter, discord, github, slack, forums, etc. You can always find someone willing to help in these communities. By posting your problem you generate a discussion over it and everything is going to be documented there, so if anyone has the same problem as you they can easily search it.

## Project ideas

Now for the fun part, project ideas. I'll separate it for frontend and backend cause I really think you shouldn't go for fullstack until you've picked up at least the basics of one side.

### Frontend

- Copying layouts can really improve your css skils, there are many good layouts in [this link](https://www.figma.com/file/7l1Ar0sPDERTOqMYBqElAp/Landing-Page---Startup-App?node-id=960%3A1013).
- For the HTML/JS part, you need to be fetching data and building interfaces (no matter how simple they are), there is a list of Public APIs in [this link](https://github.com/public-apis/public-apis).
- You can use [Netlify](https://www.netlify.com), [Vercel](https://vercel.com) or [Heroku](https://www.heroku.com) to deploy your frontend for free (and even set up some CI/CD)
- [TypeScript playground](http://www.typescriptlang.org/play?#code/) if you're learning it.
- [Flexbox Froggy](https://flexboxfroggy.com) if you're learning flexbox.
- [Frontend Roadmap](https://roadmap.sh/frontend).

### Backend

- First you need to know how to build an in-memory CRUD application (Create, Read, Update and Delete methods), I suggest Express.js if you're starting.
- Then you can use this same CRUD application but refactor it using a SQL or NoSQL database. You can use the [SQL Playground](https://www.db-fiddle.com) or [NoSQL Playground](https://mongoplayground.net) to practice. You can do it raw or with an ORM.
- Then you can add users and authentication with JWT or OAuth. From here you can be adding new features to this application or create another one from scratch, you already know the way.
- You can use Heroku or AWS (free tier) to deploy your backend for free. You can also set up CI/CD.
- [Backend Roadmap](https://roadmap.sh/backend).

## Conclusion

Everyone is able to learn programming, it doesn't matter if you had no contact with coding up to this point. If you dedicate yourself and participate in the communities, I'm sure you'll have fun and success.