I took a few points from this conversation that I thought it was worth sharing here (links will be organized at the end). Although these tips are for general learning the links will be all focused on front-end development, sorry everyone else.
A personal list on how to start learning to program
- Be honest with what you know already;
- list what you want to learn, and pick a couple of items from that list;
- use better search terms;
- don’t expect to learn by only listening/reading. You should question everything;
- and practice, don’t copy/paste (all the time).
What do you know already?
I’ve started asking him this and although he had done some researches he’s a complete beginner, and he was also something that the internet does to us often, lost…
Once you learn what you already know, it’s easier to filter the content that you need to read, and the best thing to do is to be honest with yourself, don’t get cocky and ignore the basics if you don’t know it.
What are your intentions? (Yes, I’m jealous of my favorite language)
So I asked him what he wanted to learn and the answer couldn’t be more vast. He wanted to know and do EVERYTHING (DB, front end, back end, UX/UI) and all of his information was mixed, he was trying to do a DB operation without knowing how to catch/write the data he wanted in first place.
I can tell by my 7 years of experience, forget that.
You don’t need to understand everything from the start, and you’ll see that if you focus on understanding the logic of how something works it will get easier to learn how you can use it and how to make everything work together.
So… What should I learn then?
He asked me this and I couldn’t be more honest, choose what you think it will fit your skills, simple as that, don’t rush to read thousands of different things before learning how at least one works and what is used for. Browsers have a lot of API’s that you can use. Try not to use ready code for everything, if it’s a small lib, just read the source code and implement it yourself. Try to see how that lib used the language in first place, why it used an array and not an object in that case?
And how do I learn that? Where can I read those specifications and learn which way is better than other?
There’s two things that you can do to achieve this.
First, improve your search terms. You’ll get better results if you add some or all of this keywords to your search terms:
- Best practices
- The language related to what you’re looking for
Also, if you come across a term that you don’t understand, don’t be shy ;) and look up for it.
- What’s String interpolation?
- What’s iteration?
You don’t even have to focus on how to write/code at first, similar to learning your mother language, you first learn how to talk and only later you’ll learn how to write what you were thinking and saying.
Secondly, use the internet on your favor. There’s a lot of facebook groups, slack communities, join them and ask if someone could explain what you couldn’t understand, remember to ask nicely, tell what you already searched for, a good question will get you a great answer. Don’t expect that someone will clear your mind with one word, it’s more likely that you’ll leave with more doubts than before, but that’s ok, in fact that’s what should happen. With a little bit of time (and patience) you’ll start to ask harder questions and hopefully connect all the information you get, but you should never stop asking.
What about courses?
It really depends on what you’re trying to learn, look for free online tutorials (remember to use those keywords) and just pay attention to what the course is proposing to teach, if it has recommendations, always add your level of understanding
css animations intermediary, If I'm struggling to understand something new, I'd normally add the keywords "for dummies" like
css grid layout for dummies (yes, this was a recent search)
One thing that you should try even harder is that if you’re going to write, write it… avoid copy/paste, write it down, on paper if you prefer, but write it. This will help you to absorb what you are learning. Also be aware of StackOverflow, it is a great place when you don’t manage to solve a problem, but read more than the first accepted answer, read the whole discussion (when there’s one) and check if there’s a better explanation anywhere else.
Well, I hope this post helps someone who's starting on programming, it’s a competitive market, and everyone should improve their skills all the time, every day something new is released or updated.
And here are the links that I’ve mentioned.
- http://diveintohtml5.info/table-of-contents.html (although outdated in its writing, it’s still a relevant link about HTML5)
- https://github.com/diegocard/awesome-html5 (a curated list of awesome HTML5 resources)
- https://css-tricks.com/ (great articles about CSS implementations)
- https://github.com/awesome-css-group/awesome-css (a curated list of awesome CSS resources)
- http://superherojs.com/ (some links about js basics)
- https://eslint.org/docs/rules/ (The best source to learn js best practices, every rule has examples for good and bad practices)
- https://caniuse.com/ (best friend when you want to know browser support for something)
- https://stackoverflow.com (a community where you can find solutions for almost every problem that you’ll face, a.k.a. developers BFF)
Feel free to comment and give your tips too ;)
[Bonus tip] If you want to know more about anything related to the language/framework you’re interested in, check if there’s a
awesome-what-you're-looking-for repository on Github, there's a lot of repos with this prefix, and normally they have huge lists with excellent links.