This article is pitched at people who would like to learn how to code but know nothing about computers. That was my level of proficiency when I started to learn so I know what it's like.
Most software developers learn to code very early as kids or teens. When you ask them how they learned, you tend to hear things like "I just messed around" or "I don't know really, I just started building stuff". Not that useful to someone with limited time.
I suppose you could say that this article is about what you should know before you start to learn to code, so you're in the best position to learn.
If you take nothing else away from this article, this is it: learn the “command line” on your computer. Don’t worry if you don’t know what that is! (I get to it later).
Many people fail at learning to code by starting with simulated code environments on the Internet, like they have at codecademy.
Those course teach you about loops, variables etc - then you try to setup an environment to actually do something on your own computer and you can’t. It feels like a massive backward step. I've been there.
Think about things you do on your computer that are repetitive and boring. There’s probably a little script you can build to make your life easier.
You want to use tools that maximise your chances of success and minimise things that reduce your probability of success. That way, if it’s not for you, it’s all good. The real tragedy would be if you stop doing a thing you’re well suited to because you approached it the wrong way.
Flashcards are very useful. If you remember things better, it’ll prevent you from having to go back to check things again and again, which will make you feel dumb, discourage you and hold up substantive progress.
This tutorial helped me get up and running with the functionality relevant to making flash cards for code without too much fuss.
I used to use Anki for 10 mins in the morning, every morning.
Coders use specialised text editing tools to draft code. Probably the best one right now (which also happens to be free) is VSCode. You can download it here.
It will look complicated. Don’t worry about that. Code looks indistinguishable from magic until you learn a bit about it.
The most important thing is to figure out how to manipulate your computer programmatically with the “command line”. It’s the gateway to do anything with code. If you become a coder you’ll live on the command line.
This is the course I used: Learn the CLI the Hard Way. It gives you a good grounding to noodle around.
It’s crucial to understand the basics here - if you don’t, you’ll find it impossible to set up a programming environment.
I personally wasted a lot of time by not understanding the command line properly when I started to learn code. Don’t make the same mistake – it could cost you weeks.
When you get comfortable, start to move slowly through the book “Take Control of the Mac Command Line with Terminal”. This teaches you about how a computer works. It’s less command focused, and describes important (and elegant) concepts more comprehensively.
Most apps have both of these elements, so by learning JS you can build an entire product on the web by knowing only one language.
AFTER you’ve done at least the easiest command line course, take a look at learning the basics of JS.
You won’t be able to build anything meaningful unless you understand how to control your versions of code. The course I used to recommend no longer exists, but this one by Michael Hartl looks very good.
Make sure you feel comfortable on the command line before doing this course, though!
A lot of courses will push you in the direction of HTML really early. I think they do this because it's pretty easy to learn and you can see fast results in the browser. There are some upsides to that approach, but I think it makes sense to learn about HTML after you've got a basic grounding in computer / programming concepts. Everything is easier after that.
If you've gotten through the above and you'd like more advice, feel free to ping me through this website's contact form! We're always happy to help people taking on this challenge.