The Hardest Thing About Learning How To Code
If memory serves, I've been learning how to code, the correct way, since the beginning of February - this year. That means that I've been at it for almost four full months. And when I say, "at it," I mean
at it. Starting about two months ago, I began slowing down the pace of my video watching and began writing posts, on this website, that cover just about everything I'm learning. Sure, there's some guilt involved with not drowning myself in as much knowledge as I did at the start of this endeavor, but my retention rate has skyrocketed. When I used to take quizzes at the end of each lesson, I would score, on average, about 80% correct. Now, I score 100%. If I get something wrong, it's because I didn't read the question thoroughly. Either that, or the instructor didn't ask it correctly. I've grown accustomed to taking things quite literally and when a challenge is off by even a smidge, I get confused.
Now that I've got four months under my belt, I'd like to discuss a few things. Primarily, what the most difficult area about learning how to code is. Because there
is one and believe it or not, it has nothing to do with actual code. That's fairly simple.
Back when I was in college -
oh boy - in 1998, one of my IT professors warned my class of information overload. He said things like, "You're going to get too many emails in your email box." and "There will be various sources of the same information at every turn." Guess what - he was right. There is a ton of information and it's getting pretty tough to wade through it all.
Okay, let me tell you what I'm talking about and after I do that, I'll give you some examples to hammer my point home.
The hardest thing about learning how to code is sifting through all the stuff you really don't need to know right now and focusing, primarily on the basics.
I'll use an analogy to explain: I've been practicing Brazilian Jiu-Jitsu for about seven years. I'm a high purple belt and, trust me when I say this, I've seen all types of folks walk through the doors of the various schools I've trained. Of course, most of these people walked through as white belts, but a few blue and purples were thrown in the mix. Of those white belts, I would say a good 80% have tried to kill me during the open mat portion of class (generally at the end of techniques and drills). Why did they try to kill me? Well, I would blame the internet for that. It appears that many of these fine folks had been on Youtube and had somewhat trained themselves in our art. While rolling (sparring), they would jump on me, try to lay on me, attempt to roll over me and eventually try to submit me. I've been able to see this coming from a mile away for a while now, and since I'm a nice and gentle guy who tries my hardest to keep an inviting atmosphere, I go easy on the killer and simply try to hold them off. There have been those times though, where someone would get a little too rough and I'd have to put them in their place. Not bad or anything, but in their place they'd be.
What's the moral of this story? Well, when someone doesn't know squat about something, why in the heck are they going for the gold? Do they really think they are going to "tap out" a guy who's been doing something for over seven years? Train a bit, and then tap my skinny ass out.
When the journey of learning how to code begins, many of us wander over to Twitter with the intentions of making some friends and getting involved with what I like to call, "the industry." It seems like a logical thing to do, right? I mean, if one wants to learn how to do something, why not hang out with people who already know how to do that thing?
I did just that. A few weeks ago, I joined Twitter and set up a page. I began seeing things I was interested in, namely people and companies, and clicked their respective "follow" buttons. It didn't take long for my stream to populate with all sorts of interesting tweets, such as:
"Hackers attack the IRS 145M times a year! Yes, there will be a cyber security unit in our new high school course."
"Start building on Google Cloud Platform with $300 in credit."
"Synthesising Drum Sounds with the Web Audio API."
"Brands, content managers, and developers need to put more thought into when to use modals."
"WP REST API v2.0 Beta 2 is out with more than forty changes since Beta 1."
These are the five most recent tweets on my Twitter page. Remember, I've been at this for four months. Do you think I know what any of the above is referring to? No, I don't. And if I did, that means that I've seriously lost focus and have strayed to the dark side of coding - meaning, I've veered away from the basics and went after the cool stuff way too soon.
I blame capitalism for all this. No, seriously. There's motivation for people to create new tools and to compete with one another. That's why there are a zillion tools to help writing CSS and about ten times that to help write HTML. When I began all this, I had no idea that I didn't only need to learn JavaScript, but I also needed to learn jQuery and CoffeeScript. But wait, as long as we're talking about making JavaScript easier, why not head over and wrap our heads around GorillaScript and Uberscript? I mean heck, we've got time. Capitalism rewards innovation, but sometimes all innovation does is confuse the heck out of people who have no idea what to do next.
If I remember correctly, one of my primary motivations for digging back into code was to learn a bit more about CSS. I wanted to get up to snuff on all this "responsive web design." I had a few sites that needed help and I knew CSS was what would help them. I learned a few things, fixed my sites and continued on. Then, one day, as I was about half way through Treehouse's Sass course, I asked myself what in the world I was doing. Did I completely and utterly know everything there was to know about CSS?
No. Could I write it so fluently that I was at the point of needing assistive software to help cut my production time? Did I even have a production time?
No, no, no... If not, what the hell was I doing taking a course on Sass? Needless to say, I'm now back to learning CSS.
The same is true for JavaScript. Did I know JavaScript so well that I needed to quicken my pace? Did I need to learn jQuery and AJAX? Seriously? AJAX? What was I doing taking an AJAX course? Perhaps in a few years - when I'm all JavaScripted out.
Do you see where I'm going with this? Sure, there's really a bunch of cool tools out there that were created by extraordinarily talented people, but if I took the time out of my day to attempt to find out what even a portion of these tools attempted to accomplish, I'd be out of time. I'd have nothing left to learn how to create a form in HTML5. I wouldn't know what a descendant selector in CSS is, but perhaps I'd know how to install Sass on a Windows PC. I wouldn't know how to traverse the DOM with JavaScript, but I'd possibly know how to fork a repo on GitHub.
Ugg.
I know I haven't been at it long, but I think I've been at it long enough. Long enough to offer a short piece of wisdom to someone who has a budding morsel of interest in web development. If I had to give one piece of advice, it would be to steer clear of the hype and to learn HTML, CSS, PHP and JavaScript, in that order. At least if they did that, they can begin working in WordPress. And if that was what they wanted to do, they'd most likely be able to totally skip the JavaScript part because in all my work in WordPress since years and years ago, I still haven't used JavaScript.