Samuel Wood

How to: learn to code

February 8, 2020 • ⚡️ 7 min read

How to: learn to code — Samuel Wood

Learning to code has the potential to change your life dramatically. It’s changed mine.

I’ve worked in non-technical roles for tech startups for the past 5 years but I’ve only recently pivoted into coding as a profession.

It was something I’d always wanted to learn but made excuses for myself like:

  • That boat has sailed now, I can just manage other coders
  • I should have done computer science at uni, it’s too late now
  • There are so many 10yr old wizz kids, its too late for me to catch up

I looked at developers like magicians who had the ability to wave their coding wands and conjure up any idea they could think of. And thought that would never be me.

But if I keep it 100 with myself I was being a loser who wasn’t betting on myself and controlling my own destiny.

I finally took the leap when I applied for a coding Bootcamp called Makers Academy. I got into their program and handed in my notice at work the next day.

Fast forward ~2yrs, I’m working full time as a developer and have massively increased my earnings… all because of that decision.

I say all of this to say: If you want to learn, commit and make your own leap. If you’re going to be half-hearted, don’t start.

leaping was one of the best choices I made.

down to leap?

…let’s continue

FAQs

Am I smart enough to learn?
yes you are. don’t let unfamiliarity put you off. developers often make things sound more complex than they are to feel smart.

Do I need to be good at maths?
no

Will it be hard work?
yes

What programming language should I start with?
it doesn’t matter in the long run. But I would recommend Ruby to begin with.

why ruby?

  • english-like language: code is intuitive and easy to read
  • concise code: you can do a lot with a little
  • good community: a lot of friendly code enthusiasts

Will it require extreme patience?
yes.

Am I too old?
no

The intention of this post is to take you from zero to starting quickly. 
Howevever, there's a lot of information linked. 
Bookmark, revisit and complete at your own pace. 
No rush. The main thing is to start and move on only when you understand.

[watch]: A great overview on learning to code

Unlearning to learn

“Everyone in this country should learn to program a computer, because it teaches you to think.” — Steve Jobs

Most people who start coding are setting themselves up for failure without knowing.

The reason? learning to code is nothing like anything else you’ve learnt before, and we try to approach it like traditional education.

Our education system teaches us to regurgitate information, and we’re rewarded for this with good grades. Coding requires learning how to problem-solve.

I’ve always been okay academically and have followed a similar pattern of learning throughout my life:

classes → note-taking → revision → strategic emphasis on topics likely to come up → exam → brain dump. Boom. sips magnum

Does this learning approach translate to coding? absolutely not.

in fact, remembering the syntax (syntax = grammar) of the coding language you’re learning is the least important thing. Professional programmers are constantly googling every day to jog their memory on syntax (no, really — they even brag about googling skills).

developer google

So how do you approach coding from day 0 with the right strategy?

Well, there are two things you need to have in mind that will help you get good, quick:

1.) Building a mental “coding toolbox”

The first is building a“coding toolbox” of fundamental skills that give you the ability to carry out different operations.

Think of this as the coding equivalent of learning how to: hammer a nail, screw a screw, plaster a wall and build with bricks.

You will use these foundational skills over and over again in different combinations to build any house you can imagine.

And the beauty of it is that these foundational skills will be present in every* language you use, so the skills are transferable.

Examples of these concepts and skills are:

  • Booleans
  • Conditionals
  • Variables
  • Iteration

A mentor of mine Ryan Kulp dived into this topic extremely well. I strongly recommend pausing here and coding along to his post from the ‘things that don’t change’ section onwards.

🔗 Learn to Code by Ryan Kulp

I’ve linked to a few videos later that explain these concepts in more depth.

2. Learning how to problem solve (this will improve your life too)

One thing I wish I knew when I started is that any coding problem can be abstracted out to a list of reusable steps to solve it.

Here are the steps I take to approach every coding problem I come across, no matter the complexity:

1. Analyse and understand the problem clearly in layman’s terms

2. Break down the problem into sub-parts & list out steps towards the desired outcome

3. Start thinking about how to solve the first sub-problem (with pseudocode* if needed)

4. Code first sub-problem, iterate through the subproblems 

*pseudocode


Notice how coding came only after three prior steps?

I started off making the mistake of jumping into solutions without thinking through the problem in its entirety.

This will put you ahead of most beginners.

Recommended reading on problem-solving:

CODE

Now we’ve got the pre-requisites down, we code.

There is an unlimited amount of resources out there for learning to code. That’s cool but the amount of options can be overwhelming. The funny thing is, it doesn’t matter which route you begin with. The most important thing is that you start.

Your first few months coding will be about getting familiar with concepts that are applicable across every coding language.

For this reason, I’m going to lay out a specific set of challenges and tasks for you to complete.

A Syllabus for you to get started (all free)

  1. Set up your computer (get this done asap):
    http://www.preparetocode.io
  2. Watch these coding fundamentals videos
    (take notes on the concepts, not the code)

a. - variables: variables 101
b. - iteration/loops iterations/loops 101
c. - if/else statements: if/else 101
d. - booleans: booleans 101

  1. Bookmark this book for later (first 6 chapters free): https://pine.fm/LearnToProgram/chap_01.html
  2. Learn the basics of terminal (that matrix looking screen):
    Video: https://www.youtube.com/watch?v=5XgBd6rjuDQ
    Save this image: Command line cheat sheet
  3. Ruby Codecademy Course
    Ruby Tutorial: Learn Ruby For Free
  4. Codewars Katas: exercises to flex your new skills
    Train your coding skills

once you complete all of these, hit me up and I can share more

Honourable Mention: Bootcamps

Another option is the coding Bootcamp route. There are several high-quality Bootcamps, but most of them do come with a hefty price tag £££.

With that being said, many Bootcamps occasionally run scholarship programs for peeps from underrepresented backgrounds. Keep an eye out for those. That’s how I managed to get in to one.

To get an idea of what’s available to you in the UK, here is a great comparison site created by

London / UK
Find The Best Coding Bootcamp In London
Find, compare and choose the best coding bootcamp in London

USA
Career Karma - Find The Best Coding Bootcamp For You


let me know how you get on

🤟🏽 Samuel @samuelw