Learning to code: why? how? where?

Posted by kdow on Feb 16, 2016 9:32:47 AM


The ‘learn to code’ movement is in overdrive. There are groups for kids, teens, students & adults to learn everything from basic HTML to advanced Node.js & everything in-between — often for free. Most of this stuff stems from a desire for people to feel like they’re on top of the modern world; which involves a lot of coding. But they’re aimed at people who don’t want, or need, to do a full Computer Science course.

A simple example would be someone in marketing who wants to learn some simple HTML & CSS tricks so that they can do some basic, but useful, editing of landing pages on their companies’ website. Another might be a teenager who’s not sure if Computer Science is what s/he wants to do in college, so they’re doing a little summer course to figure it all out. Or someone who feels they have a cool business idea & wants to prototype an app out to demonstrate their earth shattering ideas!

Why?

Consider an anecdote: it’s highly likely that everyone reading this has been to school. In school, they had a math class. At least once, the math teacher was asked “why do we even need to learn this? I’ll never use this outside of school.” A good teacher will reply, “correct. You’ll never really need to do differentiation outside of a school scenario.” However, consider people going on morning runs or lifting weights in the gym. A lot of people reading this do one or both of those things. These people aren’t training to be Olympic athletes. Two or three mornings per week I wake up and go for a 2km jog around the park outside of my house. I’m certainly never going to go for gold at a competiton. I do it to ensure that I’m strong, relatively fit and am using muscles that don’t get used in my day-to-day job. That’s why you do math. It makes your brain stronger like running makes your legs stronger & your body fitter.

And that anecdote creeps into the learn to code movement in my mind. A reason to learn to code isn’t to build a product, earn a neat salary as a dev or any other superficial logic. It’s to build the same muscle that math did in school. To make you smarter. To give you a sense of logical reasoning that carries into the real world. And, importantly, to give you a sense of comfort in this modern world, where software & hardware are ubiquitous in almost all industries and jobs. Fundamentally learning to code gives your mind the right set of tools to promote genuinely useful, logical and often abstract thinking mechanics.

Another reason learning how code works is to learn how your computer works. Nearly every household in the western world is adorned with a laptop or desktop, which is effectively an expensive terminal for a web browser or a fancy games console. Learning how it works properly can help you extract the best uses of the machine to help turn it into a really useful & powerful set of tools.

Moreover, learning to code gives you a neat set of tools to learn in & of itself. Learning is a vital skill to have, and forcing yourself to learn anything is huge. Code has a very routine way of teaching itself to people. Like I mentioned already, it’s pretty logical. As a result of this, you’ll have the right skills to learn whatever, whenever. Also, as a means of learning to learn, coding up a website or programming a system to be the bedrock of a new app is fun. It’s very self-gratifying to have little bits ‘n bytes come to life on your computer, and have them do stuff. When it all comes together and something works it fires a synapse in your brain to keep going!

How?

I’ll mention useful resources below, but how you learn to code can be kind of difficult to talk about. This is because it involves a big moment for most non-coders. That moment is the ripping the bandaid off moment. You have to start. And as people, we’re very adept at coming up with a litany of reasons why we shouldn’t start. There’s no easy way to say this but just do it. The fact that you’re reading this post, and that you’ve gotten this far down is testament that you probably want to start learning.

One easy way to delay the process of learning is by getting hung up on lots of stupid details. Programming isn’t about a language per se, it’s about data structures, design patterns, schemas and syntax. Sure, some languages have features others don’t. But if you’re just beginning, none of that matters. So don’t get hung up on the language. You’ll read things like ‘this app was built in node.js,’ and you’ll think to yourself, “wow, I love that app — node.js must be for me!” And you’d probably be wrong. Just go with something nice, easy and that works for you. You’re not actually learning a programming language. You’re learning the rules of programming. For a lot of folks javascript is a good jumping off point because it just works without much setup. For people who want to dig into the weeds of server-side stuff and running command-line prompts, Python is a nice way to go. Either way, it doesn’t matter as most code-teaching websites have an inline editor to type into.

A practical point of note about learning here is to aim for something. The best way to learn to code is to build something. Get a project together and build a thing; whether it’s an app, a wireframe, a website, or whatever. Just build a thing. Similarly the best way to learn German is to watch German movies, football and visit the country to talk to people in their native tongue, learning a programming language is best learned by doing.

Te other practical element of your journey to learning programming is time. People get hung up on the time taken. In my mind, doing a session over lunch at work or taking an hour every day before or after work is fine. If you do more, great. But making an epic commitment to do 3 hours per day will make you bored. If you’re doing a huge commitment to do many hours per week at this, you’re moving away from hobby territory into workload territory; and you may as well just do a night course. My point here is don’t pressure yourself.

And that leads nicely into the where you code.

Where?

On your computer, dummy!

As I mentioned, if you want to plough a huge time commitment into this and learn to be a big salary earner just do a night course. The investment is likely worth it for you. However, if you’re a hobbyist who wants to learn so you can have some nice new skills or even, as an entrepreneur, prototype an idea before presenting it to 8bytes, then the following links are for you!

  • Code Academy: This is a fantastic, and free, resource to learn how to code. It’s likely my main go-to for most new code learners. Even seasoned pro’s go here to pick up tricks.
  • Google Python: Google has a pretty great tradition of encouraging people to learn how to code, and here’s a good one as an intro to Python.
  • Khan: The Khan Academy has various courses online and is renowned as one of the pioneers in online education. This is specific to their computer science track. And it covers everything you’d expect, often in more detail than other similar resources.
  • Treehouse: This isn’t free but is genuinely awesome, especially if you learn as a small group in a team setting. I’ve used Treehouse to teach non-engineer colleagues how to code in the past and it’s always gone down a treat.
  • Udacity intro to CS: Again, a little academic but it’s all project based, lead by videos. Even if you don’t start here, bookmark this link and come back to it when you’re ready.
  • Code school: As I mentioned above, one really basic way to actually pick up code skills is to learn by doing, which is what Code School is all about.
  • Girls Who Code: Great resource to provide the skills we’ve been talking about alongside the nurturing environment specifically aimed at women.
  • Learn Python the Hard Way: Every time I need to brush up, I do the problems in here. It’s great, and is also a book you can get!
  • Open Courseware: Originally designed to put MIT materials online for free, OCW is a great resource to learn to code. And, like most of these links, it’s effectively a way to get great materials on coding for free.
  • Coursera: Similar to the above, with some courses being free & others having a fee associated. This is more academic, like OCW, but worthwhile for your second round.

There are thousands more resources out there, but the above should be sufficient. If you want to add more, just reach out to me and I can add additional links here.

[embed]https://8bytes-1.wistia.com/medias/su2dto61jg[/embed]