A year ago I started learning to code, focusing on front-end development. This was not completely new to me, as I’ve been doing this learning to code thing for a few years now. Most of the time it was something that I did for fun.

Looking back over the years, and especially over 2015 when I decided to focus on front-end development, I’ve noticed some patterns in the way I was learning and doing things. These patterns lead to a series of mistakes that I am now fixing or got fixed in the past.

Please note that although I am using “you” across this article, I’m referring to my own errors. I am not offering advice to anyone, I don’t think I’m in the position to do so. This is a way for me to make a conscious note of the mistakes I made. I also hope that whoever reads this thing will find it useful and avoid these mistakes.

So, without further ado, here are some of the numerous errors I made.

Jumping right into coding with no prior planning

This is probably one of the biggest mistakes one can do when learning to code. This works for a while, when you’re learning the most basic things, like loops and conditionals, but afterwards you’ll need a plan. And this is when you realize that you need to think the problem through and break it down into the most simple steps.

This is how I plan a project now. This approach seems to be working for the moment and it offers a more structured approach to coding.

First, on paper:

  1. I write down the objective of the thing I am coding
  2. I break that objective into steps
  3. Every major step is then broken down into even smaller bits

Then in the editor:

  1. At the beginning of my code, I add comments with the major steps. This way I always have a list to remind me what I should be doing next.
  2. I add comments in my code describing what I am doing so if I’ll get back in a few months to the code I wrote I will understand it easier. This is not the case right now, as I’m working only on very small projects, but I think it’s good practice.

Learning in an unstructured manner

I joined a lot of MOOCs, started reading a few books at the same time, wrote code based on disparate tutorials I found online. I got distracted easily and I started way too many projects that got nowhere.

The structure I needed was provided by three main things: Free Code Camp, the Javascript is Sexy “How to Learn Javascript Properly” guide, and Kyle Simpson’s “You Don’t Know JS” series. The first two gave me the structure I needed, while YDKJS helped me understand the whys of Javascript programming. (I am still reading the series. I just finished the second book, “Scope and Closure”).

Switching languages often, trying to find the perfect language

After two years of randomly switching languages, I now know that there is no perfect programming language.

Over the years I’ve tried — not in this exact order — the following programming languages: C++, Python, Ruby on Rails, Java, Processing, and probably a few other languages that I don’t remember now. I switched and I switched and I switched, until I found Processing.

Processing is amazing as a first language, but if you want to create some interesting things with it, you’ll need to learn more on the algorithmic side of things. It’s also great for you if want to create something in the fields of generative art, data vizualisation or graphic design.

I studied Processing for a year, I think, but then p5.js appeared and it felt that I should focus more on the web. After playing a bit with p5.js, I realized that to better understand this library, I need to understand Javascript first. And Javascript still is my language of choice right now.

I caught myself doing this recently while looking over Rust. I read for a few hours about it then I realized that I should get back to Javascript and focus on that.

Now, if I think it through, I think I am prone to making this mistake when I hit a bump. I remember I wanted to switch to something else when I was trying to understand event listeners in Javascript.

Following a lot of tutorials but not building something completely from scratch

This gives you a false sense of progress. This is the hand-holding phase when you’re typing in stuff from tutorials and books, things created by others. Although you get satisfying results, you’re just following a set of instructions.

Trying to learn libraries and frameworks before learning the main language

Because I wanted immediate results and I wanted to prove to myself that I can build something interesting fast, I started learning things like d3.js, Three.js, Babylon.js, Phaser. Basically I wanted to skip some steps.

The results were interesting, but they were made with tutorials and copy pasting code from one place to another. I was doing things without understanding exactly what I was doing.

And this leads me to the next mistake.

I still make this error. I checked out Angular and React, and played with Meteor — which is amazing, by the way, and I hope to use it someday — because I thought that I need to know them if I want to find a job.

This is probably true for more experienced developers, but I feel that I need to understand vanilla Javascript before jumping into more complex things. There’s more than enough to learn about pure Javascript before moving on to other things.

On a similar note, I always wondered why there are so many tutorials and books recommending beginners to learn jQuery first. I tried this method and it didn’t make any sense, I remember having issues with the syntax. It became clearer only after I had the Javascript basics in place.

Thinking that by using Bootstrap I know how to build websites

Bootstrap is great. I managed to adapt a few themes in a very short time and wow it felt great to build a portfolio site so fast.

I first used Bootstrap for my copywriting portfolio, then for two simple presentation websites. Because Bootstrap is so easy to pick up and use, I considered myself more skilled than I really was.

Trying to be more than one thing at the same time

As much as I would like to do both graphic design and front-end development, I realize that I need to focus on only one of them if I want to learn it properly.

I felt I was diluting my efforts by trying to do so many things at the same time. So front-end it was, and hopefully it will still be in the years to come.

And this concludes my list of errors in learning to code. If you have some of your own, please share!

P.S.: Right now I am looking for a job or internship as a junior front-end developer.

If you’re willing to take in a newbie and you think I could be part of your team, please send me an email here: danielvoicu87@gmail.com. Thanks for stopping by!