Motivation, Goals and Methodology

A little bit about my motivation and learning methodology.

Motivation and Goals

This is not the regular journey and in the following essay I’ll explain why. My end-goal is to have the knowledge of a full-stack developer. In general, I’m following the freeCodeCamp curriculum. The first milestone should be the front-end development certification. This means learning mostly HTML5, JavaScript, CSS and completing different challenges (websites and algorithms).

Unlike most people that start learning to code, I’m not into a career change (at least not for now) and I was not always fascinated by computers, electronics and so on. I would say that for me, coding is more like a hobby driven by curiosity and a need to challenge my intellectual limits.

This is important to mention upfront because it dictates the tempo of my learning curve. I’m in no rush and I don’t have to sacrifice other important aspects in my life (quality time with my family, my full time job, my health or other interests and hobbies). I don’t invest a lot of time in coding but make a slow and steady progress.

I’ve decided to write a blog documenting my learning for two main reasons. The first one is that I believe it would help me learn better by having to explain what I’m learning and doing in my own terms. The second reason is that I don’t think that there are many resources out there that describe the learning process itself as it happens. Most tutorials are made, of course, by people that already know to code. Yet, I doubt that they know HOW did they learn in the first place. Usually, their thinking goes something like this: “In order to build X you need to learn A,B and C”. Today, after spending hundreds of hours learning programming, I can say with confidence that the path is not linear at all. They just forgot how it was in the beginning.

Methodology

I would say that learning to code has two important aspects: algorithm and syntax. While they are intertwined, with syntax influencing the algorithm choice, I feel that each one has to be learned in a different manner.

I find learning the syntax of JavaScript, HTML or CSS for example very similar with learning real languages (I had the opportunity / need to learn a few). One learns a language best by repetition, learning by hearth and by being exposed to it intensively. This is different than learning Math, where each concept you understand becomes a building block for the next one. One specific aspect of learning code is that you have to remember the exact syntax. While you could tell someone “Me go school” and he would understand you, “telling” a browser <htm> instead of <html> would make it curse you with an error message, or ignore you altogether.

You could replace “algorithm” with “problem solving”. In general, each coding language should solve different problems (HTML for code structure, CSS for design and JavaScript for animations). Of course, you can’t solve problems without using correct syntax. If one knows more syntax, one can solve more problems in better and more efficient ways. The first step in learning to deal with algorithms is to solve as many as possible, but there is a catch: you have to be able to solve them with the syntax you’ve already learned (or just a little bit more difficult). Otherwise, you’ll just get stuck and waste a long time reading about concepts you’re not going to use often enough to remember them later. This is why a good curriculum is important. I find the freeCodeCamp one quite good in this aspect (one note thought: you are still expected to read a lot and find the info by yourself, not rely solely on the freeCodeCamp site).

Also, I try to read many articles about coding – mostly about the languages I’m learning now – and to listen to coding related podcasts (usually when I’m walking the dog). And one more tip, type the code, don’t copy paste it.