Learning Javascript at 30 years old.

Rikin
11 min readMay 31, 2016

--

It took me over a decade of false starts and failed attempts to finally learn how to program. I wanted to take a moment for myself to reflect and make sense of it all but to also share the resources and approach that helped me bring an idea to life and hopefully help anyone else out there too.

If you want to jump ahead, my extremely novice skills have been enough to launch ps101.com.

First: Finding Javascript

Knowing where to begin felt like walking blindly in a high school praying to stumble into the right room with a teacher teaching the right grade, the right class, at that right skill level. The first challenge was choosing my language and boy did I make many mistakes here. I made attempts learning PHP, Ruby, Objective-C, Javascript, and even SQL and MongoDB (I can almost hear the chuckles of seasoned programmers already). The hardest part of choosing a language is that you don’t really know the skills you’ll end up with after all your effort — it’s like looking at a course syllabus written in a foreign unknown language where every phrase and description is confusing as ****.

It was while learning MongoDB that I realized, even if at surface level only, things were starting to make sense. The way Mongo was written was clean and when I looked at the JSON documents (where all the data was stored) I thought, ‘Well isn’t that simple!’. Mongo wasn’t a good starting point for a new programmer like myself but it pointed me in the direction of Javascript and from there things really took off.

One of the main advantages of Javascript is that you don’t and won’t need any special tools to begin — heck you won’t even need special tools as you get more seasoned either. Most programmers forget the initial agony of setting up the ‘development environment’ when you’re overwhelmed by all these new and unfamiliar terms. Javascript simply needs a computer, a text-editor, and the terminal (command-line-interface) that is already built into your computer’s operating system.

One Step Further

So Javascript it was and Javascript it has been for the past year. But while easy to start learning, the real power of Javascript is that it can be used to build an application from soup to nuts which for me resulted in learning the MEAN stack.

I’ve mentioned the word ‘stack’ twice now and I feel I should clarify this term if not for anyone but my former self. When building an application there are multiple layers and elements like the database, the server, the application layer where all thinking is done, and the front-end elements that your users will actually see and interact with that all need to work together. There are actually many more possible layers and things can get complicated but it’s these layers that when combined are called the stack.

Anyway, back to being MEAN. The MEAN stack is made up of different technologies that are all built off of Javascript and therefore knowing Javascript is all you need to begin. However, the MEAN stack in my opinion should be called the NEAM stack because it makes much more sense to first learn its elements NodeJS, then Express, and then AngularJS with sprinkles of MongoDB here and there. It may sound obvious that order matters when learning to program but this seems like a forgotten practice by most experts.

A Note on HTML & CSS

Talking about order, I should have mentioned that in my early 20s I became quite proficient at HTML & CSS or what many developers refer to as front-end languages. For those of you scratching your head at even those two terms don’t worry because it’s quite simple. Websites are predominantly made using HTML & CSS but when I say *made* I mean that the content (different sections, the words & images within each section, links, input fields, drop-downs, etc) is HTML and the styling (widths, heights, fonts, colors, spacing, gaps etc) is CSS. And yes, even this gets confusing because developers talk about HTML5 and CSS3 — you’ll find they love talking about what version of a product or language they’re able to use and you’ll learn that for the most part ignoring these version numbers is best when getting started.

The difference between knowing HTML & CSS and real programming is that there is very little you can do to actually *make* a website that takes inputs, processes commands, and does something with those commands like grabbing data from other sources or saving new data for you to use later. Going deeper than front-end languages was imperative if I were to bring my idea to life but having a background in these two languages was fundamental and I recommend them as the starting point for anyone looking to truly create something functional.

Here’s a beautiful and helpful book by Jon Duckett to get started learning HTML & CSS.

Tools & Resources That Helped Me

I had previously tried but failed to learn Javascript once before. The difference in my two attempts was that while I was learning the same language the end purpose and application of the language was completely different.

My first attempt focused on using Javascript to manipulate objects on a web page with movement, animation, and interactions. This also led me down the path of jQuery which, overly simplified, is a library of code that packages complex animations and interactions written in Javascript into one command so that enabling them is as simple as referencing the name of that command. Many consider jQuery to be the next step after learning Javascript but I call bullshit. While doing fancy effects in your browser was made simpler with jQuery I wasn’t moving any closer to bringing my idea to life.

My second attempt proved much more fruitful because I started with the fundamentals of Javascript way before they were even applied to the web browser.

I came across a website with admittedly the dumbest name I’ve ever heard, www.javascriptissexy.com, with an article, How To Learn Javascript Properly, that changed everything for me.

Although the name is dumb their teaching method certainly is not. Javascriptissexy.com doesn’t actually teach Javascript at all but instead outlines how to use multiple and mixed resources at the same time to properly learn Javascript. It seamlessly mixes exercises in Codecademy with the principles and theories needed to truly understand the language from the book ‘Beginning Javascript’. For example, you read chapters 3, 4, and 6 in the book and do related exercises 4, 5, and 7 from Codecademy. Mixed medium learning helped me apply what I was learning while also revealing the big picture of where I was headed.

Sidenote: I also read Jon Duckett’s book on Javascript & jQuery which was somewhat helpful — although I again recommend stopping before the jQuery section if your end goal is building primarily functional and not fancy websites.

Going through all the lessons and chapters outlined by Javascriptissexy.com took me about 10 hours a week for 3.5 months although they say it can take less than 8 weeks. Dedicating time has been a challenge throughout my programming journey especially since I, similar to you I presume, have pesky commitments like a job, relationship, and family. Regardless, I was determined to focus on the outcome and not compare myself with anyone or anything else so long as I felt I was moving forward.

I finished the course and attempted some of the exercises shown at the end but found that I still needed to go deeper before I could go further.

Then I found Anthony Alicea. I’ve never met Anthony, although I refer to him as Tony and wrote him a kind note once, but he was a big part of my life in 2015. Anthony posts video courses on Udemy.com and more specifically teaches courses on Javascript, NodeJS, and AngularJS. You can take his courses for as little as $15 — $20 if you wait for one of Udemy’s flash sales which happen very often (fix your damn prices already Udemy).

Javascript, Understanding The Weird Parts was Anthony’s online course that helped me connect the distant dots between why we need to do certain things in certain ways with Javascript in order for it to actually make an impact on the computer itself.

I’m not sure how other people feel but, previous to Anthony’s course, learning programming felt as though I was helplessly placing faith in someone dragging me up a never ending staircase, not telling me where I was going, but promising that the view atop would make it all worth while. Understanding The Weird Parts showed me the rooftop, the puffy clouds, the sun in the bright blue sky, and most importantly it patiently taught me how to climb up the steps by myself.

Understanding how and why Javascript works was what I needed when beginning NodeJS which dives right into a working knowledge of functions and new terms such as dependencies, asynchronous callbacks, and lots more. Luckily, I had the right teacher to learn NodeJS — Tony!

Again, Tony came to the rescue with his NodeJS video to debunk this scary term called MVC — model, view, controller — and taught me how to build the framework and structure for my application and why it’s done in this three part way. Express is taught within NodeJS so you simply need to take this one course to begin understanding the E in NEAM.

Yep, I didn’t finish many of the Udemy courses I signed up for. You don’t need to learn everything, you just need to learn enough to begin creating.

I did find that Tony’s NodeJS course wasn’t very helpful when it was time to work with my MongoDB database but this simple YouTube video filled in the gaps about creating a RESTful API — which is a fancy way of saying creating commands that can then be used throughout your application to write new data, get existing data, update old data, or delete bad data from your database.

I took a brief course on JSON to get caught up to speed — nuff’ said.

And guess who came to the rescue when I needed to learn Angular which helps your front-end (HTML & CSS) interact with your database in real-time? Yep, it was Tony again!

Finally, most of us want users to sign up and sign in to continue where they left off. This signup functionality is called authentication and this fine fellow on YouTube helped me do that with his video.

Throughout this time I also became good at Googling error messages and bugs that came up along the way to find conversations on Stack Overflow or articles and other videos that solved very specific problems.

I won’t go into more detail about the NEAM stack because I think for most of you reading this you either know how to code and don’t care or are learning how to code and just need to get started already — I hope these links help for you. Plus, there are people much smarter than me that can help you take it from here.

All of this took about 6–8 months after starting my journey

What might be more helpful to know is that all of this took about 6–8 months after starting my journey with the Javascriptissexy.com course. I’m sure it goes faster for most and slower for a few of you but that’s how long it took me before I could even begin working on my idea. After a certain point your programming journey transitions from theory and exercises to application and trouble shooting.

Getting Over Sucking

The developer’s journey is torturous and filled with feelings of incompetency and general sucking at life. I still suck after a year. I will always suck. Just when I don’t suck at one thing, I want to do something else that needs a skill I don’t have and will inevitably suck at. When I finally feel comfortable version 9.0 of whatever I was using gets released and I am now 4.37 versions away and who knows how long away from sucking less.

I suck so much compared to everyone else. I got over it. I got used to it. I even began enjoying it once I learned that I am not alone in this feeling and understanding that constant sucking is a sign of progress.

We overestimate what we can achieve in the short-term but underestimate what we can achieve in the long-term.

My favorite saying is that we overestimate what we can achieve in the short-term but underestimate what we can achieve in the long-term. Although the saying was originally meant for finance and investment, it applies to programming as much as anything in else in life.

Surrounded By Geniuses

I don’t know how much the following point has tangibly helped me but I thought it worth mentioning that I’ve been surrounded by talented programmers my entire life. My father has been a programmer since the late 70s and early 80s and I’ve been surrounded by books about programming in C, C#, Delphi, Oracle, .Net, Java, HTML/CSS, Javascript, PHP, and so many more languages since I was a child. When his friends stopped by they would argue over code and the latest greatest languages. It was geeky and unappealing which actually kept me away from code initially but led to a high level exposure to technology.

I’ve also had the pleasure of working with brilliant programmers in my career as a marketer. I’ve seen what people can build, I’ve sold what they can build, and I’ve helped maintain organization through the process of building those things that I am most certainly a product of my exposure to them.

I do have one gripe though. I found that most experienced developers you meet in real life are not helpful at all. Everyone is so proud of their own past accomplishments and so focused on their next accomplishment that they often don’t have the time to help you solve that bug that has stumped you for two evenings straight. I don’t blame them because there are so many languages and approaches to programming that yours might be different than theirs — not to mention that they’re already in high demand.

However, every single programmer I met was encouraging and supportive of the journey I embarked upon, reminiscing on their own painful journey, and more than happy to point me in the right general direction whenever I shared my hurdle of the week.

The End Goal

This is strange but I don’t want to be a full-time developer and I’m not looking for a lucrative career change. If I didn’t have to code to achieve the same desired outcome I’d be extremely happy but the reality is that in order to bring my ideas to life I needed to learn how to code.

I learned Javascript because I wanted to build what is now live at www.ps101.com. It’s a simple idea to help students and teachers by organizing links to educational content freely available on the internet by grade, subject, course, topic, and more in alignment with a common curriculum. Coincidently, my own process of learning a new skill through a mix of videos, articles, and content gathered from across the web gave service to the very idea I was bringing to life at the same time.

I’m not sure what’s next for me as a programmer or ps101 as a project. I feel like there’s endless room for growth within Javascript and I’m always finding new features to build that keep me challenged. For now, that’s really all I want to keep doing. Please take a look and let me know what you think.

Share this Approach

If you liked this article or think someone else trying to learn how to code may benefit from it please click the little heart below and share it too.

--

--

Rikin

SVP Marketing @thimble. Dad, husband, guitarist, and Manchester United fan. @rikin311 on Twitter.