Leveling up your JavaScript

The problem

In the last blog post (here), I talked about how the front end world can be chaotic for new developers. New libraries, frameworks are churned out at an unsustainable rate. This blog post builds on that, and talks about resources, techniques for self-education.

Importance of self-education

Self-teaching is one of the most important skills a software developer can have. Teach yourself self-education If you want to the best software developer you can be. Self-education isn’t a skill taught in schools and must be developed by the person.

books

Luckily, we live in a day & age where a lifetime’s worth of programming knowledge is available at our fingertips. This easy access to valuable resources makes self-education more feasible than ever before. However, this wide array of choices comes with its own challenge. One must choose wisely, and find the best resources.

This post is not sponsored by any of the mentioned companies. I’m just sharing my personal experience in hopes that others might find it useful.

My story

I’ll start by sharing my own personal journey and the resources/techniques that worked for me. Don’t get me wrong, I don’t proclaim to know it all. I still have a long way to go, and will be a student for the entirety of my life.

The beginning

After graduating from college, I was fortunate enough to quickly land a dream programming job. After getting my feet wet at my job as a .NET developer, I decided to dedicate a significant part of my spare time towards teaching myself front end development. I purchased a few books, and started reading them religiously. At first, the experience was rather fulfilling. I grasped the basics quickly and was up and running. I was in dreamland!

The struggle

All good things must to an end. My dreamland quickly turned to agony. I hit a roadblock! The advanced JavaScript concepts seemed a bit out of reach and the basics weren’t challenging enough.

The books weren’t helping because I was getting caught up in the nomenclature, definitions & paradigms when reading textbooks. Those things are important but not nearly as important as understanding the code. You can read a programming book from cover to cover but it won’t benefit you much if you aren’t putting the your new-found knowledge to immediate use.

frustration-600x450_1-100521350-orig

Epiphany

After struggling with books, I was spinning my wheels trying to move my skill set to the next level. During my pursuit for the “perfect” resource, I stumbled across Frontend Masters. They were offering $100 off so I decided to take a serious look at their content. I’ll admit, even with the discount, I felt their subscription was too pricy. After a lot of deliberation & skepticism, I decided to take the plunge. 24 hours later, I was dancing in my room because I had finally managed to conquer closures & also grasped many other advanced concepts that had eluded me until then. That moment gave me a newfound confidence in my abilities as a software developer.

I wouldn’t recommend Frontend Masters to beginners. I’ll talk about some beginner friendly resources later on in this post.

So what is it that worked?

Frontend Master’s format is similar to a traditional class room in a way. The instructor provides an in-depth explanation of concepts and then follows it up with coding challenges. After giving you some time to struggle through the challenge on your own, they share and explain the solution. All the code is available on GitHub, which comes in extremely handy.

This format is way more engaging than reading books and since then I have found many similar high quality resources on Pluralsight, YouTube & Egghead.

Advice to other developers

My advice to other developers who are either getting started or feel stuck would be to take a step back & decide whether the resources you’re using are right for you. Every person is different. Finding which method of learning gets through to you the fastest will go a long way into turning you into the pro you’re destined to be.

Keys to success

  1. Focus on understanding concepts: Whether you’re a beginner or a seasoned pro, approaching a new technology with the “I must learn this in x days” will not go down well. Take your time to develop a solid understanding of key concepts.

  2. Set goals: Set a goal for yourself so you aren’t programming aimlessly. The goal could be an app that you want to build. Then break this goal down into small chunks. Focus on these small chunks and work your way to your end goal.

  3. Code everyday: Programming is no different from exercising. Unless you do it regularly, you won’t see much gains. I recommend that you set aside at least half an hour daily to write code.

Firstly, you’ll get a constant feeling of progress. Overtime your brain will associate this positive feeling of progress with coding. This daily routine can also save you valuable time. It’s very easy to forget what you were working on or where you left off. This context switch is a productivity killer & can be avoided by following a regular schedule.

  1. Read code: Reading other people’s code can also help you level up. You get to see different techniques, coding styles in action. If you don’t understand something, don’t be afraid to ask questions.

  2. Surround yourself with the right people: It’s very important to have friends who share the same passion as you. I advice that you sign up for meetup and join local groups. This will help you in more than one way. Your network will grow & you’ll also be able to find mentors that can answer questions, when needed.

developers-team

However, that’s not the only way to hang out with smarter developers. You can tap into the power of social networking and accomplish a similar effect. Every time you stumble across an interesting article, tutorial or podcast, start following the creator of that resource on Twitter. Soon, your timeline will be overflowing with knowledge.

  1. Play & Build: Remember when you were a kid? You learned so much about the world around you while playing & having fun. Take the same approach to coding. Don’t be afraid to play around and break things. Every failure is a stepping stone, and adds to your knowledge.

  2. Tools don’t really matter: A lot of people get hung up on tools and end up wasting a lot of time. Should I be coding on Vim or brackets or sublime or atom? It doesn’t matter, especially if you’re a beginner. Just focus on coding & establishing a solid understanding of the programming paradigms.

Avoid

Helping aspiring developers is a big business now. Just like any other industry, some people are trying to exploit our naïvety and make some easy money.

1-QI3o91juXhRQa6UUr7IukA

A simple rule that I follow is that any course that claims to teach you a language in “x” number of days should be avoided. I wish programming was that easy. These courses are just trying monetize gullibility & are setting people up for disappointment. Software development takes years of practice. Don’t enter the field with the wrong expectations, you’ll be disappointed.

Other useful resources

  1. If you’re an absolute beginner, I highly recommend Freecodecamp. They take you through the entire journey of an absolute beginner to being job ready. However, they don’t promise quick success & don’t hold your hand as much. I haven’t used Freecodecamp a lot but have heard great things about them.

  2. MDN will be your best friend throughout your career.

  3. You don’t know JS is a brilliant book series by Kyle Simpson. I recommend every JavaScript developer to read it. It’s free! But if you find it useful, drop of the moolah to support the author. Earlier on, I mentioned that books don’t cut it for me, this series has been an exception.

  4. The Odin Project is a great resource if you to learn Ruby on Rails & Javascript.

  5. Javascript Jabber – A weekly podcast about JavaScript, front-end development, community, careers, and frameworks.

  6. Javascript Air – A live broadcast podcast all about Javascript.

What are some resources that have worked for you?