Table of Contents
- January 2012 – jQuery
- October 2013 – Knockout.js, Require.js, Durandal, Grunt.js
- November 2014 – Angular, Node, Gulp.js
- January 2016 – React.js, Webpack, Babel
- May 2016 – Back to Angular for me, add in Scala
- April 2017 – Preact, Vue.js, Svelte, Glimmer.js, Progressive Web Apps …
- Conclusion
I’ve only been a full time web developer for the past 5 years. It’s barely enough time to start calling myself a “senior” Software Engineer. In that short period of time the web technology stack has evolved tremendously.
January 2012 – jQuery
In early 2012 I was finishing up my master’s degree and got a job at my friend’s start up called DigiSpoke, hoping to learn some Java. It was a SaaS product with a complex UI, so I ended up working mostly on the Front End instead.
I quickly realized that building our Front End with just jQuery was error-prone. I saw that people were using Backbone and Angular 1 was an up and coming framework. I tried to encourage our team to adopt Angular, but we decided against it, since “it would take too long to rewrite everything”.
As a result, I’ve spent a lot of time debugging buggy jQuery code, which helped me in two ways:
- I got VERY handy which Chrome Developer Tools
- I felt the PAIN of spaghetti code and realized that I never want to deal with a mess like this again (I would)
October 2013 – Knockout.js, Require.js, Durandal, Grunt.js
In October 2013, I accepted a role at Citrix, working on GoToMeeting product line. One of the main reasons I accepted this job (even though I was offered a lower salary) was because of amazing people that interviewed me. They were true JavaScript superstars and I feel blessed to have had the opportunity to work next to them.
We did the things the right way, but we did not use the most popular framework of the day – Angular. GoToMeeting had a lot of Java developers. At some point a decision was made to use Knockout.js, since it was friendly to Back End developers and allowed them to be productive. As the code base grew, Require.js was introduced to help make the code more modular.
At the same time, there was a Front End framework called Durandal.js, based on top of Knockout.js and Require.js which we ended up adopting. It was not a well known framework created by Rob Eisenberg, who later went on to work on Angular 2’s team. After some time he left the Angular 2 team and created a new framework called – Aurelia.js.
Durandal was a good framework and I enjoyed using it, but is suffered from having too many stand alone libraries. Rob had to constantly put in a lot of effort to make sure all components played nicely together.
Another problem with Durandal was that the community was very small. 95% of the time it was fine. The other 5% would result in me having to debug the internals of Require.js, Knockout.js or Durandal itself, because I couldn’t find answers to my questions online.
Last but not least, we ended up hiring a lot of Front End developers who were not happy to work on a “not well known” framework. By early 2014 Angular 1 has become the default choice for a lot of companies. Many of my co-workers were concerned for their careers, since they were not getting exposure to the popular tech.
It’s funny to look back, but around the same time React was starting to pick up steam. It still seemed like a crazy idea, but the pendulum was beginning to swing the other way. I remember how we used to laugh about React, saying things like: “Oh yeah, I really want HTML in my JavaScript”.
In addition to the Front End work, I got to use Node.js and fell in love with the technology. Citrix was mainly a Java shop and I wanted to do Node (and to get paid closer to the industry standard), so I ended up leaving.
November 2014 – Angular, Node, Gulp.js
Around that time a lot of companies were looking for Angular 1 developers. I found myself saying that I did not know Angular, but that I used this other thing called Durandal.
I ended up getting two offers, one from a start up and another from a smaller public company. Both used Angular 1 on the Front End. On the Back End one used PHP and another used Node.
I chose the public company, purely because they used Node. This was a mistake. I wanted to work with Node so much, that I ended up ignoring a lot of red flags. While I liked most of my co-worker, our product never achieved a product/market fit.
In addition, we had a small team of Engineers in the US and a larger team in India. The US Engineers wrote decent code, but the Indian team was mainly focused on getting things done fast. Since we used JavaScript on both the Front End and the Back End, some people got really creative with their code, causing things to break all the time. That experience taught me that JavaScript is not for everyone. Some teams can benefit from a less-forgiving language.
I did have a chance to learn Angular and Node really well. I got to debug a wide range of JavaScript performance issues, both on the Front End and on the Server. If it wasn’t for this company, I would have never written two of better articles:
That being said, I wasn’t very happy there. After a little over a year at the company I began to slowly look for my next job. My timing was pretty good too, since three days after I’ve put in my two-week notice, the company announced that they were laying off 20% of the staff.
January 2016 – React.js, Webpack, Babel
The most interesting fact about my next round of interviews was that I no longer saw a lot of companies hiring Angular 1 developers. In mere 1.5 year since my last job search, Angular 1 became unpopular and most companies (that I interviewed with) have switched or wanted to switch to React.
When asked what technology I would use on a new project, I would agree that React was the most logical choice. Angular 1 was on its way out and had a lot of design flaws. Angular 2 was still had not officially released. Ember lacked the community and I didn’t want to get into another “Durandal” situation. Finally, all of the smaller frameworks, like Vue.js, seemed to lack traction.
React really did rule the world in early 2016.
May 2016 – Back to Angular for me, add in Scala
I had a few offers and I ended up accepting a job at a medical start up called Apixio. We are using Angular 1 on the Front End and Scala/DropWizard on the Back End.
My main reasons for accepting this job were:
- I wanted to work in a meaningful field, like Education or Healthcare
- I wanted to be closer to Data Science
- I wanted to (finally) get some professional experience on JVM
- The job was only 3 miles away from my house 🙂
- After playing around with React and Redux, I was secretly happy to be able to work on Angular 1 for a little longer
The decision of what to do next in terms of JavaScript frameworks is still hanging over our heads. Angular 1 has served us well and it looks like it’s not going away yet, so for now we are sticking with it.
April 2017 – Preact, Vue.js, Svelte, Glimmer.js, Progressive Web Apps …
The race is still on in the JavaScript world. React has become the champion, but a lot of promising frameworks are continuing to lay claim to the title.
Vue.js seems to be capturing a lot of Angular 1 developers. Preact is competing with React by offering smaller size, better performance and more generous open source license. Svelte is shaking things up by avoiding runtime interpretation altogether. Glimmer.js is making Ember light. The list goes on and on.
There are many other new developments. Progressive Web Apps are becoming a big deal. AMP seems to be eating the world. Build tools are continuing to evolve, Grunt, Require.js, Gulp, Webpack, Broccoli, Rollup etc.
JavaScript itself is an ever moving target. Thanks to industry’s newly found love for transpilers, most companies are using cutting edge JavaScript syntax in their production code. Thanks to TC39 committee getting their stuff together, we can now expect a new version of the spec to be released every year.
Conclusion
All of this has happened in just five years. Think about it! How much has medicine, accounting, politics, law, construction, or math changed in that time period?
We live in a crazy and exciting world. I am grateful for an opportunity to earn a living doing what I love. At the same time I hope that we as a community can slow down a bit and focus more on quality over quantity.
In any case, looking back at my past five years, I can clearly see how JavaScript Fatigue became a thing.