One of the most popular questions that I get asked is “How do I learn to program? Where do I start?”. This actually takes one of many forms:
- What resource should I use to learn how to program?
- How did you learn X?
- Which language should I learn first?
- Is it worth learning Y?
The best answer I have is not an answer to any of those questions at all:
Find a problem to solve, then solve it using the most appropriate tool(s).
How did I learn Node? I figured out a problem I wanted to solve (how can I easily and efficiently write an engine to power a website?), and then solved it.
How did I learn Objective-C? I figured out a problem I wanted to solve (how can I make an app to enable me to quickly send text messages?), and then solved it.
That’s the first step. If you don’t have a concrete problem to solve, you’ll never have the patience nor tenacity to learn enough to solve it.