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
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.
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.
- 11 Tips to Improve AngularJS Performance
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
April 2017 – Preact, Vue.js, Svelte, Glimmer.js, Progressive Web Apps …
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.
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.
Are you hiring? My good friend is looking for work.