One of the most common questions asked by code newbies: "What programming language should I learn?"
I dare say: Most of the time, they get ahead of themselves. At least for me, I did. I realised that there's a more important question to ask before that.
"What are my goals?"
Because without knowing your objectives—why you want to learn coding—it's easy to get pulled mindlessly into the latest shiny new programming language or framework. And you end up jumping around from language to framework, picking up bits and pieces of each thing, never good enough to build something, just knowing enough to know you don't know enough.
That's why I always recommend having a think about your why before even starting on learning coding. Here's some important questions to think about, and my answers then (many of which, are still applicable!):
What do I want to do with coding? Be a professional developer? Work in a tech company? Or know enough to make products on my own as an indie maker?
I just want to make products on my own, products that will function as intended and won’t break. I’m not interested in becoming a professional developer nor working for a big tech company. So more indie maker, less pro developer. More generalist with low depth across the full stack, less specialist and master of one language.
What kind of products do I want to make, for whom? The next Facebook (yuck)? SaaS? Games? Products for social impact? Or just fun side projects?
I’d love to make SaaS products (in the form of web apps, Telegram bots for instance) that are useful for professionals in the social impact space. No interest in being the next billion-dollar unicorn startup. A lifestyle business is more accurate description (though I hate that term). But not everything has to be monetised - I’d love to make random stuff just for FUN too.
Which languages lend itself to the type of products I want to make?
The advice I got when I just started is to start learning some plain vanilla HTML, CSS, JS, PHP, MySQL as I’ll need to know a bit of it even if I use other frameworks in the future. I went on to learn those first, and planned to pick up what I need as I go. For making web apps and other products quickly as an entrepreneur/indie maker, Ruby on Rails seems to be the right one to go for as it’s a mature language with lots of libraries to speed up development, and easier to add and maintain. Performance sounded like it might be less powerful than other newer tech stack, but I’m not building for a billion users.
How do I like to learn? Structured and more academic? Or unstructured, ‘play-based’ learning by doing via project? Or a mix?
I prefer unstructured learning, and learning by doing using a project. Part of the reason I had many false starts is because online courses tend to be too structured and academic. I always asked myself what’s the point of learning all that? Learning stuff without context doesn’t work well for me. But ground zero is scary for me personally because I don’t know where to start, so I’ll probably take some low commitment beginner online course for some basics first before jumping into the deep end. Will divide probably 90:10 of my time between unstructured versus structured.
How do I intend to go about learning it? Online courses? Actual physical classes? Or just googling what I need?
I researched for basic web developer online courses on Udemy and Codeacedemy. I ended up doing two of them. Then I got bored and switched over to project mode, and Googled my way through, or use community forums, ask friends, etc.
Who can I ask for help when I hit a roadblock? Are there supportive communities to help beginners like me?
This is an important factor. Other than general forums like Github and Stack Overflow, I think I’ll need help in whatever specific languages/frameworks I pick up later. I heard Ruby on Rails have a great, supportive community, so I’m leaning towards that. Some of the online courses also have communities I can seek help from. Or just ask friends.
Are the tools needed for this language/framework free, open-source and/or relatively cheap?
Low barrier to entry is important as I’m still figuring out what I need to learn as I go along and wouldn’t want to invest too much in new tools that I don’t need later. The basic tools for beginners to get started are mostly free. But there’s too many tools out there, so will have to keep this in view as I go along.
What other questions do you think code newbies should ask themselves before starting to learn how to code?
Follow my daily writings on Lifelog, where I write about learning to code, goals, productivity, indie hacking and tech for good.