A thought from Rachel Smith

19th May 2014

2013: The year of JavaScript

This week, I managed to wipe out my previous installation of Ghost along with all of my content. This post, I had saved as a draft elsewhere which is just as well as it was easily the most popular post on my site.

One thing I often see developers talking about online is their JavaScript 'Aha' moment, that is when the language really started making sense in their head.

I would describe what I have had in the last 12 months as less of an 'aha moment' and more of a series of interconnected realisations culminating in what I can only describe as an explosion of information in my brain.

This time last year I thought I had a pretty good grasp of JavaScript. I really didn't. What I could do was use jQuery to manipulate the DOM fairly well. I was selecting like a boss but I had no true understanding of the library itself or how it worked.

I always 'knew' that 'everything is an object' in JavaScript because that is what I'd read all over the internet, but I didn't really understand what that meant and how it could be used to my advantage.

Today things are very different for me. I understand and use OOP JavaScript on a daily basis. I understand how inheritance and prototypes work. I recognise the importance of modularisation. I understand the significance of the global object/namespace and the dangers associated with it. I've thrown jQuery to the wind. I've worked on hand-coded application frameworks. I've helped build fully fledged web applications. I can now take any JavaScript library, read it, and actually understand what is going on under the hood. I use server-side JavaScript. I know how to use Chrome devtools to its real potential. I could go on, really.

I'm not listing all this stuff just to blow smoke up my own arse. I guess what I'm trying to communicate is that in a year I went from someone who really knew jack-shit about JavaScript to someone who has a reasonably in-depth understanding of the language. In the 10 years since I started my higher education I have never learnt so much or improved my skills so greatly in such a short time period. As a direct result of this up-skilling, I've recently been offered a position that is so good 2-years-past Rachel could not have dreamed it happening, in her wildest dreams.

##How I fast-tracked my career and changed my life for the better in 365 days

I am a great believer in the theory that things don't just happen to people. Most of the time, what happens to you is a direct or indirect result of your own actions. You are the creator of your own destiny or whatever wanky way you want to put it. I knew I wanted a career in JavaScript specifically, but I had to learn a few lessons along the way in order to achieve it.

Choose your poison, and then stick to it

You probably are aware of the phrase 'Jack of many trades, master of none'? This all too often applies to junior and mid-level developers and I was no exception. My university degree had covered front end and back end technologies and my first full time professional role as a developer for an advertising agency had me working on Flash, HTML, CSS, Javascript, PHP and MySQL. I was confident enough in all of these areas but had huge holes in my knowledge of each.

Eventually I figured out my real passion was for writing JavaScript. When I quit my job in favour for Contract work in the UK I decided I would only take on JS-centric roles as much as possible.

Real learning takes time and effort

This is the hardest lesson to swallow. How often do we repeat the phrase "I would love to do X, if only I had the time"? I had to make the time. In London I was working a regular 40 hour week (sometimes more) on client work. So I would come home from work, make dinner, then spend another few hours on the computer doing my study. I would build things on my weekends. Most of the time I spent coding I would otherwise have spent watching TV or playing Candy Crush. When I replaced these mindless activites with productive ones I felt like I was getting so much more out of my week.

Replace "it can't be done" with "maybe I can do it".

My friends who work in Digital Producer roles have often said that the most frustrating thing a developer can do is constantly turn down client requests because they are "too difficult" or "can't be done". I had been guilty of this behaviour myself. I had to change my attitude. When a manager or producer came and asked me to do something I had no idea how to do instead of saying "no" I would say "I will try" and then commence Googling like a mad woman on how to attack the problem. On almost all of these occasions I would figure it out, the manager/client would be stoked with the result, and I had just learned something new. Everybody won.

Actively seek to learn from others...

While contracting in the UK I was priveledged enough to work with many different developers. Some were much stronger than me in certain areas and others not as strong, all were extremely beneficial to my learning experience. Good code examples mean nothing to us unless we understand why they are good. Although it was painful at the time, picking through other people's terrible JavaScript realy helped me deepen my understanding of the language. Developers can be an opinionated bunch, and sometimes its easy to disregard other's opinions on what constitutes good code when they don't match yours. I had to drop the natural defensiveness and take on every criticism as a learning experience.

Humility is by far one of the most important ingredients of true learning.

After one of my contracts expired, my former employer actually sent me a list written by the lead developer with a no-holds-barred list of criticisms about the code I had written. My initial thought was, "well who the fck nominated you the Lord Commander of code?!" and then "I only did x y z because of a b c excuses". Then, I remembered I should be treating this as an opportunity, I really thought about everything he had to say, and I know my future work will improve a result. *Humility is by far one of the most important ingredients of true learning.

... but challenge everything you're told.

As we grow as developers we form opinions on how best to code based on what we read online, or what our colleagues tell us. I worked with guys who used a lot of libraries so as not to 're-invent' the wheel and other guys who insisted on writing everything from scratch. There were guys obsessed with performance and guys who placed application architecture at the top of their priorities. I listened to their justifications about the way they developed, and then would go away and do my own research. Rather than take on others' suggestions at face value I would form my own opinions, and I'm a better developers as a result.

Stay connected, and be a nice person!

I can quite confidently say the I would not be the developer I am now if it weren't for Twitter. Unlike my other social networks that I use purely to keep up with friends, Twitter is an integral part of me staying 'on the pulse' in my field. Through Twitter I have can have open discourse with so many people I admire in this industry and that sort of resource is invaluable.

Whether connecting with people online or in real life. It has been super beneficial for me to make an extra to be a nice and friendly person. Call it karma or whatever, but whenever I have made that bit of extra effort to reach out and compliment other people on their good work, or respond to people who have engaged with me, I feel like I have received even more positivity in return. Every positive connection provides an opportunity, whether we immediately see it or not.

And so concludes a semi long-winded summation of the most important things I learned in 2013. Even though it has been such a successful year for me I am in no way done with learning JavaScript, as I have so very far to go. Bring on the next year of learning.

Previous thought: No comments for now