November 27, 2017 · Getting Started Beginners

Advice to New Programmers, pt2

Read part 1.

Type everything out

Eventually you'll get to the point where you'll know all the cool keyboard shortcuts, and this will make you a more productive and happy programmer. For now though, you actually need to type everything out. Don't just copy and paste code into your text editor. There is a muscle memory component to programming, not unlike learning to play the guitar. And typing everything out will help you get this muscle memory under your fingers.

Typing everything out is also useful because it engages your brain in more than one way. An axiom of basic learning theory is that you will learn better if you wrestle with a concept in many different ways. For instance, you won't retain much if all you do is read a book. It's much better if you read a book and take notes along the way. And bonus points if you can do that, plus talk to a friend about it afterward. Typing out code is just one way of applying this axiom, but don't just stop there. Every time you learn something new, challenge yourself to absorb the concept in various different ways. Is there a video on youtube you can watch? A particularly useful infographic waiting to be found? Experiment with what works best for you, and your ROI per unit of study time will increase exponentially.

Don't worry about memorizing things

People seem to have this conception of "rock-star" programmers who can code faster than you or I can type. I want to kill this stereotype. First of all, veterans of this industry look up things all the time. Second, the bottleneck of your productivity is not going to be the speed by which you can type code. The bottleneck is going to be the quality and clarity of your thinking. If there's only one thing you take away from this post, let it be this:

Programming is not about typing code into your text editor. It's about problems and solutions, understanding and thinking.

Anyway, the whole point of the internet is that we don't have to memorize mundane things anymore. What's really important is that you feel comfortable reading documentation, and know what to google when you run into a problem. Focus on these skills and forget about memorization.

Read Other People's Code

You should practice reading code at least as much as you practice writing it. Why, you ask? Well, you need to have an enormous amount of quality input before you can produce quality output. Think about this: how many books will a novelist have read, before they produce their first Great Novel? Another question: do you think the novelist could have written that Great Novel, if all they did was write all the time and never read any books ever in their lifetime? Not a chance. The question even borders on the nonsensical, which seems to suggest that writing depends on reading by definition.

Okay, you're convinced now of the importance of reading other people's code. But how do you put this into practice? When you're just starting out, I suggest taking baby steps. You don't have to jump into reading production codebases on github all at once. One easy thing you can do is to learn from other people's solutions to the problems you're already doing. For instance, if you're going through freeCodeCamp, did you know that many people post their solutions to the algorithm problems on github? Of course, it goes without saying that you should try problems on your own before looking at other people's solutions. But this is really an awesome way to get started reading other people's code, because your brain will already be primed from doing the problem yourself.