How Experts Learn JavaScript — Part I

Scott Dooley
Skills Matter

--

JavaScript has come a long way from its role in the ’90s as the language for flashing images, magic-wand mouse-pointers and scrolling messages in the status bar of your browser. Substantial ECMA releases from the late ’90s onwards armed JavaScript with the features and performance enhancements required to lead the Web 2.0 revolution.

It’s now the world’s most popular programming language. And today we’re seeing JavaScript pop up in places we’d never have expected back in the ’90s — like on the server with Node, and in native-app development using Cordova. Only a time-traveler could have predicted that.

With such a wide variety of places to run your code and frameworks and libraries to choose from, for learners and experienced developers looking to add new skills, it can be difficult to know where to start.

To get some guidance, I looked to the experts. I spoke to as many JavaScript experts as I could to find out more about how they learned JavaScript and where they look to stay up to date with the evolving tech ecosystem.

In part 1 of the series, I speak to Alex Blom, Matteo Collina and Catherine Meade.

Alex Blom

Alex is the Managing Partner at Isle of Code and lead maintainer of Corber.

How did you learn JavaScript?

I’d been working on Rails and Objective-C projects before picking up JavaScript. For one project, I needed to write a Chrome extension which forced me to pick up JavaScript — the start of the rabbit hole. I’ll admit, I wasn’t a huge fan at the time, but I saw a lot of advantages when creating dynamic pages that side-stepped much of the boilerplate work I was maintaining in Rails views. This was before many of today’s JavaScript frameworks were released.

The first few JavaScript apps were pure jQuery and I had eventually evolved my own little framework for creating components and maintaining state. I would not recommend doing that today, but it was a great exercise in learning the ins & outs of the language and trying to reason about how front-end components should be structured. I’d also spent some time trying to run these jQuery apps in hybrid but hit hard-to-solve performance problems — mostly due to my own inconsistent structure.

Sometime later, a friend pointed me towards a very early release of Ember and I fell in love — the structure was better than I had come up with, and whole sets of concerns e.g. routing were handled for me. I really did see a ‘Rails’ for front-end development. The most exciting part was the application for mobile — with enough structure I saw both a way to replace most of the native mobile work I was doing, ship the same work to iOS and Android, and with the consistent structure and community performance would be easier to resolve — or even better resolved for me.

I still spend my days in JavaScript — mostly with Ember and Vue — with a special interest in making these apps run well on native mobile & mobile web.

How do you keep up with changes in JavaScript?

I wouldn’t say discipline is my strength — if I’m not interested I can make it work but none of the memories will stick. I usually try to find a smaller atomic project where I can apply a new tool or feature to see how it works and use it myself a little.

The surface area of programming will always be increasing and it is impossible to keep up — pick what you find interesting and practical and start/expand from there. Try to work with people who are interested in the parts you really don’t like instead of forcing yourself through it.

Matteo Collina

Matteo is a code pirate and mad scientist. He spends most of his days programming in node.js, but in the past, he worked with Ruby, Java and Objective-C.

How did you learn JavaScript?

My dad put me in front of a Commodore64 when I was just four years old, and he was typing videogames from magazines (old days!) with me on his lap. I do not remember learning to program. I learned JavaScript late, after C, PHP, Java, C#, Python and Ruby. The main reason I learned JavaScript was because I loved the Ruby language and the productivity I had with it.

One of the biggest breakthroughs I had was on the leveldown module (https://github.com/Level/leveldown/pull/70), as I needed to solve a memory/GC issue (more details here). In that case, I learned a lot about C++, V8 (the JS vm that Node.js run), and garbage collectors. It has been one of the stepping stones of the journey that brought me to be a member of the Node.js Technical Steering Committee.

How do you keep up with changes in JS?

I don’t. The changes in JavaScript find me first! I work on the Node.js runtime, and one of our responsibilities is to check and verify that Node.js works properly with new language features. In other terms, as soon as V8 lands them, I can pick them up in Node.js. This is typically ahead of the adoption curve. As an example, I added the support for AsyncIterators to Node.js streams, as soon as they got to Stage 3 at TC39. I’ve also missed some big movements, such as ECMAScript modules, as they are proving challenging to implement in Node.js

Catherine Meade

Catherine builds responsive websites up and down the stack with Sparkbox, focusing recently on a single enterprise level design system.

How did you learn JavaScript?

In 2016 I started as an apprentice at Sparkbox, where I’m now a full-time developer. The Sparkbox apprenticeship program focuses on teaching full-stack development skills. Current apprentices learn almost wholly JavaScript (plus HTML, CSS, SCSS, git, and more — read about it at github.com/sparkbox/apprenticeships), but in my year we learned Ruby/Rails, and all of the other bits that go with that. My first experiences with JavaScript were largely when I would need to do a little frontend JavaScript here or there to get an animation to work.

Many of the engagements I’ve since worked on run on Node. It was a little strange to learn in Rails then jump into Node, but after a little while, you start to see similarities in the different languages. I learned mostly by building things. It helps that the environment at Sparkbox is one of mentorship, and I am always asking questions and pairing with my incredibly talented coworkers. I’ve also spent some time with web curricula, for example, Wes Bos’s ‘ES6 For Everyone’ was particularly helpful when I was getting started (wesbos.com/es6-for-everyone).

The largest client project I’ve done JavaScript work with is the same enterprise-level design system I work with now. That system delivers styles via private npm packages, grouped with a library called Lerna (github.com/lerna/lerna). More and more of our clients have made the choice to move to JavaScript frameworks, and I’ve worked quite a bit recently in an enterprise React project, and we have another large client that uses Angular. React is a ton of fun for someone who loves to keep things organized, like me.

How do you keep up with changes in JS?

I read a lot of articles. My coworkers are an awesome source of information, as they are so plugged in. We have several channels in our Slack team where we share articles on a daily basis, and there is some good stuff in there. We often start public, polite debates about the best ways to solve something, and everyone is willing to answer questions and defend their stances. We make one another better.

I also love to attend conferences. My favorite so far has been JSConf Iceland, which I’ve been to twice, once as an attendee, and once as a speaker. I love listening to people who are genuinely passionate about their craft. If a talk truly sticks with me and I can find a recording, I’ll share it with my team and keep the cycle going. So I’m mostly motivated to learn by the excitement of my peers.

See Alex, Catherine and Matteo at FullStackNYC in May👍 For news and articles from Skills Matter, subscribe to our newsletter here

--

--

Scott Dooley
Skills Matter

Growth marketer 📈. Data-obcessive. Always learning new things. Ethical, privacy-respecting marketing is possible — measuredcollective.com