I want to be a developer! Where do I start?

YOU when you realize It was only a damn comma…” Wes Hicks on Unsplash

Inspired by this excellent post from Caio Silva about productivity, and by the fact that a friend asked me to talk to her son about what I do. He wanted to know where should he start to learn to program, specifically HTML, CSS, and Javascript (don’t worry, I told him that HTML /CSS aren’t programming languages). Also, he was afraid that he had to be a mathematician to be a programmer (no you don’t).

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.

TLDR;

A personal list on how to start learning to program

  1. Be honest with what you know already;
  2. list what you want to learn, and pick a couple of items from that list;
  3. use better search terms;
  4. don’t expect to learn by only listening/reading. You should question everything;
  5. 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

And it’s ok since he was trying to travel a world without a map, with tons of information and a lot of “create your app in 5min” posts. As days go by it gets harder to find good information about how something really works. And I remember that that was the very first question that popped in my mind when I started to learn javascript. So I decided to look through my old favorites, and for my surprise, a lot of great links that I didn’t remember was still working and the info was still relevant and updated. There were links about really basic stuff but with a clear explanation about how it worked (some of them will be placed at the end of the post).

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
  • Specifications

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?

As an example, if you want to know how to combine two strings using javascript, you could do your search like this javascript interpolation best practices or best way to combine two strings using javascript. You'll see that there's more than one way to do something, and try the most to extract and understand the logic from your studies.

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 javascript beginner tutorial or 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.

HTML

CSS

Javascript

General

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.