Software engineering as a profession has been very kind to me. I was lucky enough to discover programming in my early twenties and realise that I:

  1. Enjoyed it, and
  2. Could get paid rather well for it

It’s becoming more and more accepted in the mainstream that software development offers a comfortable, well-paid and stable career path. Developers are generally well treated and get to go home at a reasonable hour. They are also practically unfireable (due to the sheer expense of hiring a replacement).

Once upon a time “coders” were treated as subhuman trolls and relegated to the dungeon while the sales team took all the glory (and the money).

This traditional dynamic has been reversed at successful tech companies. Now I see overworked and stressed out sales people looking wistfully over at the (relaxed and happy) software developers and asking me how they can learn to do what I do.

Over the years I’ve mentored a handful of people that have broken into this industry, and observed a vast majority that fail.

This has puzzled me because writing code is not particularly difficult. Outside of academia (and absurd Google interviews) 90%+ of business software is a boring, simple wrapper around a database.

Practically anybody with above average intelligence could learn to do it. So why are there still so few developers relative to market demand? (we know this to be true because it is evidenced by high and continuously increasing developer salaries. Capitalism is an unyielding mistress)

I have a couple of theories why people struggle to make the leap into coding.

Firstly, most people are wired into a cycle of constant distraction. Their work cycle looks something like this:

  1. Check emails
  2. Pick up phone and scroll through the latest Instagram posts
  3. Get halfway through responding to a customer email
  4. Check a notification on Slack
  5. Receive a call from a client
  6. Turn to Stacy on their left and chat about the recent Love Island episode
  7. etc…

This probably has a minimal impact on most admin or sales jobs, since half of the actual work is about being interrupted all the time anyway.

But it’s absolutely catastrophic in software development.

You don’t need to be a genius to code, but one thing you absolutely do need is the ability to stare at a computer screen for hours on end without getting distracted.

Here’s a test you can try right now. Go watch this video. Try to watch the first 15 minutes without:

  • Picking up your phone
  • Switching tabs
  • Doing anything else at all that isn’t simply sitting and watching the video

If you can manage this, then congratulations, you have a future as a software developer.

Most people cannot manage even this. If you’re one of them, you’re going to need to work on your ability to FOCUS first before you ever even think about learning to code.

Secondly, most online resources teaching coding are frankly embarrassingly bad. There are a few good individual courses, but I searched in vain to find anything approximating a single, comprehensive, structured course that takes you through the journey of learning everything you need to land a well-paying job as a web developer.

Most of the courses that do exist focus on understanding concepts with minimal repetition, which not actually how anyone learns to code.

This point is worth re-iterating because so many people get it wrong. Most people think that learning to code looks like this:

Understand the concepts -> Use them to write code -> Solve the problem

This is precisely backwards! Nobody I know who can code learned this way.

It’s no wonder so many people struggle. They try a few courses, feel bad because they don’t “get” the concepts and give up early.

The ones that got over the hump weren’t any more talented, they simply (knowingly or accidentally) applied the proper learning process:

  1. Blindly type out code examples without understanding everything they are typing
  2. Drill fundamentals
  3. Do this a lot

The actual learning path looks more like this:

Write the code -> Sleep on it -> Write more code -> Let understanding surface organically later on

So when learning you want to find working examples and attempt to solve them yourself. If you can’t, look at the solution and type it out yourself.

Even better is a follow along to build a full, working application. Even if you don’t understand 90% of what you are typing, it doesn’t matter. By doing this you will develop muscle memory and an idea of the aesthetic of how code needs to look - this is how learning happens.

I’m currently working on a project that will bring a structured approach to this way of learning and provide a path for people who want to switch careers to web development. More on that to come.