Last week, a prospective student approached me with a really profound question about learning to code. The question made me completely reevaluate my thoughts on how people can best learn.

Here’s what he said:

“Ken, my biggest fear is that I’m spending a ton of time learning to code in the incorrect way. In your opinion, what is the most common wrong way that people try to learn? I don’t want to make that mistake.”

He caught me off guard.

I spend a ton of time thinking about all of the different “right ways” to learn to code. From my point of view, there is no common “right way.” The right way is the way that works best for you, given your learning style and your goals.

But on the flip-side, is there a common “wrong way” to learn to code?

That’s really tough to answer.

I thought about it for an awkward amount of time, but then the answer finally occurred to me. So I tried to explain it in the best way possible for about 5 minutes.

Here’s what the student said after I finished talking:

“Ken, at first, that sounded like the most egregious cop-out answer I could have ever imagined. But then it hit me- that really is the only wrong way to learn to code. Thank you for that surprisingly valuable advice.”

So, what did I say to the student?

I talked about the 7 common “right ways” that people to learn to code, then I extracted the wrong way out of that.

Here’s a more detailed version of what I said:

Way #1: You can work with a mentor in a 1-on-1 setting

It can be really effective to work 1-on-1 with an industry expert. Say you’re working with a professional software engineer, he/she can answer specific coding questions that you might have and cut to the chase in a way that it directly tailored for you. When you work with someone who’s sole focus is your success, they can answer very specific questions that you have that perhaps nobody has ever thought about before.

On top of that, pair programming with someone more experienced than you is one of the most effective ways to learn to code. You can pick their brain on the fly and leverage their expertise to understand the ins and outs of building complex applications.

Having said that, working directly with someone else takes up a lot of their time. It’s not the best method to use all of the time, as it’s probably better suited for going over more advanced material that you’re unable to get through on your own.

Way #2: You can work through text-based lessons.

In a traditional school, you spent a lot of time learning stuff by reading about it. It makes sense. Reading is a remarkably powerful tool for learning. This is true in learning to code, too.

Text-based lessons are more convenient for the teacher. It’s a lot less time-consuming to build a text-lesson for 100 people than to teach each of those 100 people individually at separate times. It can also be more convenient for the learner, too. When the material is slow, you can skim through and pick out the parts that are most relevant to you.

Reading is also a big part of becoming an actual developer in the real world, too.  Developers document their work on places like GitHub using text-based written documentation. This means that it’s super important to learn how to read topics about programming, understand them, and apply them to your own work.

That said, it can be difficult to work through text-based lessons on super advanced materials. In these cases, you’re probably better off leaning on a mentor or another method.

Way #3: You can learn through spoken word.

Humans have long been able to teach each other concepts through spoken word. This can also be an effective way to learn to code.

Whether you’re learning from watching pre-recorded videos, live Q&A sessions, classroom lectures, the spoken word is a powerful way to learn how to code.

Way #4:  You can learn by collaborating with other people

It can be really powerful to work on a project with team members who are learning at the same time as you.

You’ll often be amazed at the things you can learn from other people who are motivated to help you because you both have the same goals to build the best project possible.

Code collaboration can happen in many different places.You can collaborate in person, over video chats, messaging apps like Slack or even where the code lives, Github.

Way #5: You can experiment with trial and error

One of the most powerful ways to learn a new skill is to simply figure stuff out. By experimenting with a few alternative ways of doing things, you can often figure out the best way to do it.

The awesome thing about coding is, unlike other skills, that there really is no cost of failure. If you’re a painter and you’re trying to figure out the best way a portrait, you can’t really try out a few different colors on the house without suffering some sort of loss. You will have lost raw materials, like the canvas you used and the paint you used to fill the canvas.

When writing code, there’s no drawback to just trying things out and seeing what happens.

Way #6: You can use code reviews.

It can be really helpful to have other developers review the code you’ve written and give you critical feedback on how to improve it.

Sometimes, code reviews might not uncover the bad habits that you’re picking up. But they often will help shine a light on how you can write code in a more optimized way.

Way #7: You can learn by doing

Most people will agree programming involves a lot of learning by doing.

You could read a book about programming cover-to-cover and learn very little.

That’s because there are different types of learning that happen when you’re coding. Part of coding is actually developing the procedural memory, the memory that “is responsible for knowing how to do things.”

To truly master the craft of coding, you need to spend a lot of hours in front of a computer actually writing, executing and analyzing computer programs.

These are the 7 most common right ways to learn to code.

All are different. None are perfect. But all are “correct ways” to learn.

So, let’s return to the original question from the student:

“What is the wrong way to learn to code?”

Here’s the answer:

The wrong way to learn to code is to expect that a single method of learning will be sufficient enough to lead you to where you want to go.

There is knowledge locked inside each of the 7 different avenues of learning. In order to deeply understand the complex skill of coding, you need to apply the knowledge that you can gain from each approach.

Programming is largely a process of learning by doing, but in the process, it’s critical to incorporate each of the other aspects as well:

  • Working 1-on-1 with an expert
  • Text-based lessons
  • Spoken word
  • Collaboration on a team
  • Trial and error
  • Code reviews

If you leverage the power of each of these approaches and combine it with a crazy amount of effort, then you’ll have the power to learn incredibly complicated things from the field of programming.

This blended approach to learning is the most effective way to learn the nuances that are required of learning to code.

The way to fail at learning to code is to rely too much on a singular strategy.

So, want to learn to code the right way and become a developer?

Start learning in 7 different ways.

If you want to learn about the Firehose way of learning to code and becoming a developer, sign up for one of our info sessions. We’ll talk how you can harness the power of different learning styles to transition into web development in 22 or 42 weeks.


AuthorKen Mazaika

Ken Mazaika is the CTO and co-founder at Firehose. Previously, he was a tech lead at (acquired by PayPal) and a member of the PayPal/eBay development team in Boston.

One thought on “The Wrong Way To Learn To Code

  1. Great post, Ken.

    I find that I just cannot stick to one idea or type.

    I know some HTML, I know some css and I know some python.

    But I have no idea what I am doing. I also struggle to get an understanding of how it all ties together.

    Understanding the fundamental questions has been my biggest undoing.

Leave a Reply

Your email address will not be published. Required fields are marked *