The gap

When I started to learn HTML/CSS and Javascript, I quickly realized that there was a huge gap. This is the immense space between the terminology that experienced programmers use and the everyday language that the rest of the world understands. 

Transient

It is really amazing and utterly frustrating when you start reading through a tutorial only to realize that you have no idea what the hell they are talking about! The software development world is a creature in and of itself that has a terminology more complex than the medical industry. Even most beginner tutorials are crowded with phrases and concepts that are introduced as though everyone should know what they mean. Well, we don't!!

'The gap' makes it very difficult for newbies to figure out how to get their foot in the door and start building apps. Every single Javascript course is the same:

  1. Hello World program
  2. Basic functions
  3. A bunch of math stuff
  4. More math stuff
  5. A lot more math stuff

The irony is that every course starts by telling you that Javascript is what brings the web to life...and then you do some math. Boring. Here is where most people stop. I want to learn how to create a dropdown box and a zoom-in effect. Math can wait.

Of course, there are plenty of software development guys who will be angered by my seemingly anti-math stance. In fact, I think that math is a very important tool and, in the future, I would like to earn a PhD in math. However, I think it is also the ultimate motivation killer when you are learning web development.

Thus, it really takes a lot of research to find a good combination of materials for learning web development. What makes it harder is the fact that the best materials are often not those that are hot at the moment. Hence, Codecademy (website) is constantly recommended by everyone that I talk to about learning web development. Yet, I have yet to meet anyone who has built a credible application based off of what they learned at Codecademy. If someone has, then Codecademy would be smart to advertise it. (I'm not quite sure how something simple like that has been lost on their marketing department.) In the end, Codecademy is not that compelling because it is following the same methodology as other courses. They are perfectly built to overcome the gap in terminology and introduce little-by-little new concepts and cool features but, because they don't have a larger strategy or a unified course flow to go from beginner to advanced, they weren't able to keep my attention. It takes too long to learn in Codecademy. I can learn it way faster with other material and speed is king.

I don't want this to be a rampage against Codecademy because I think that they are on the right path and they will be able to do some great stuff once they realize that they can break out of the box. Fundamentally, the terminology gap is one of the greatest challenges that I have faced as I started working on web development.

There is only one solid solution: consistent exposure to the terminology. Little-by-little you start figuring out what it all means. In the end, the terminology is not as important as the actual code that you are typing out. As long as you can produce what you want in a web browser window, the terminology is not important. It takes 1000's of times seeing a new vocabulary word to be able to really ingrain it in your memory and make it instantly accessible. In addition, working through examples even if you don't understand what the term means will give your memory a context which will help it better remember the word after seeing it 100's of times. 

Examples are key, not the terminology. Being able to define an array, method or function, is great but having typed out 100 different examples of these things in action and see the effects on the screen will have a far greater impact on your ability to create awesome web apps.