My FeedDiscussionsHeadless CMS
New
Sign in
Log inSign up
Learn more about Hashnode Headless CMSHashnode Headless CMS
Collaborate seamlessly with Hashnode Headless CMS for Enterprise.
Upgrade ✨Learn more

How To Learn Programming: Misconceptions and Solutions

Ryan Lynch's photo
Ryan Lynch
·Jun 27, 2016

For two years now I've been teaching people to code in a classroom, and later at an online bootcamp. I've had many students; and while they all succeed to some extent, some really get it and others struggle. Struggle is inherent to the learning process, but people tend to make it harder on themselves by buying into false ideas. I think there are two main misconceptions about learning to become a programmer, and two keys to succeeding at it. So I'll address those and welcome some comments.

The first misconception that I see all the time is the idea that you become a programmer by learning the technical aspects of coding. People think that if they read a million books and blog posts that they'll absorb that knowledge and that will carry them through. You should learn these things, but to do only that is like saying you'll become a carpenter by studying hammers and nails, without actually hammering a nail. It doesn't work. Languages, data structures, algorithms; these are the tools that a programmer uses to solve problems. It's not the tools that you learn; it's problem solving, and the tools only make sense in that context.

The second misconception is that there's a threshold of knowledge that you have to reach before you can do anything of value. People think "If I only knew more I could sit down and create something." This works in a synergistic way with the first misconception, and people end up reading books and blog posts trying to reach that threshold. The value inherent in a program is that it solves a problem. It doesn't matter if the problem has been solved a million times over by others, the fact that you solved it as well adds it to a library of problems and solutions you keep in your head. There's definitely a fear at play here, a fear that difficulty is failure; when in fact it is the biggest sign of success.

So how do you combat these misconceptions and actually learn to code? There are really only two simple steps; and that's writing code, and reading code. I'm a self taught developer, and I started day one of my first dev job knowing absolutely nothing about software development. The reason I got to where I am today is very simple: I had the opportunity to solve real problems. My very first problem was adding a click handler to a button on a website, and I remember it very well because for me it was a difficult problem. In solving that problem though, I learned how to solve future similar problems. That's the real knowledge to be gained about programming; it's something you do, and by doing you learn.

You should also read code others have written. In writing code you learn how you solve problems, but in reading other people's code you learn new techniques. You'll see some problems you may not have encountered before, as well as new ways to solve known problems. The first codebases I really dove into were for the Highcharts charting library, and the Backbone MVC framework. I learned so much in the process about how these tools were written, and it improved my own code tremendously. So find some code and read it. It's not as easy as reading a book, but I guarantee you'll gain something in the process.

So in conclusion, learning to program is studying problems and finding solutions. It's not studying technical aspects in an abstract vacuum that exists between the pages of a book. The misconceptions I highlighted above are harmful in that they prevent you from doing the things that will actually help you learn; and that's solving problems, reading code, and most of all writing code. So read, write, and struggle; because getting through that difficulty is the best thing you can do to learn.