Backend vs Frontend Learning Curves
Noted differences between learning frontend and backend technologies.
I'm a backend software developer by education and trade. Sure, I dabble in full-stack and have cobbled together a few frontend projects in a hobbyist sort of way, but the main chunk of my knowledge and experience lies in (but is not limited to) Java and C technologies.
One of my nerdier hobbies is data visualisation. If you've read my blog post on this rather obsessive side of my personality, you'll have realised that I get a kick out of visualising large data-sets. Especially if it's data about myself. Quiet, it's my hobby. I'm allowed to be egotistical. Through this, I've dabbled with some JavaScript graphing libraries such as d3.js and word got out at work that I have some frontend knowledge. I was contacted by greenfield proof-of-concept project, and, well, I'm now UI lead focusing on data visualisation. Funny how things work out. I was, and honestly still am very excited about this opportunity and have a fairly large amount of responsibility. I also love learning new and/or innovative technologies to add to my tool belt. Part of my responsibility in this position is having influence over what specific technologies to use in various situations.
The chosen frontend framework for development is MeteorJS. At times, the question has been asked if Meteor really is best suited for what we need it for. This prompted a lot of research into alternatives and the amount of alternatives is overwhelmingly great. Of the top 10 frontend technologies collected from the StackOverflow 2016 developer survey, four of them alone are different flavours of JavaScript.
The problem
The development of the web as we know it now has only recently taken off in the last 10 years, whereas backend technologies such as Java have been maturing over a longer 20+ year span. I get backend job listing emails weekly and with the exception of a few, they almost exclusively ask for experience in Java or similar. This is without a filter. I have not specified that these are the types of jobs that I'm interested in. Of course there are other parts to their stacks, but the job would mean hitting the ground running without the steep learning curve of learning the codebase AND new languages. I'm generalising, and I'm aware that's not always the case; merely an observation and from my own experience. New backend technologies aren't released as regularly and don't come with the same momentum as frontend. New frontend technologies are mainly offshoots of existing languages such as JavaScript that have allowed developers to experiment in a language that is almost guaranteed to be compatible with most modern browsers. This creates a problem. Frontend technologies are still finding their feet and the community is yet to settle on a favourite.
Looking at job listings for frontend positions however definitely gives you a feeling of having Imposter Syndrome. With frontend development moving as fast as it is, companies tech stacks are constantly chanaging. With my backend knowledge, I could zone in on my favourite company and the chances of them using something I already know such as Java is fairly high. Going for a frontend position however I wouldn't be able to be as picky unless I wanted to take a gamble in frameworks or languages that I have no experience in. I have a somewhat firm grasp of a handful of frontend technologies but felt completely out of my depth when confronted with some listings. To name some of the JavaScript technologies alone, companies asked for strong experience in mixtures of the following:
- Backbone
- Handlebars
- Require
- Knockout
- Ember
- React
- Node.js
- Angular
I know you could argue that these are built on the some underlying language, and JavaScript is JavaScript is JavaScript. But they all have their nuances. Their differences. Different purposes and it's difficult to know what to 'specialise' in when next year a lot of these will be old news. Cast aside for something more modern and sexy (if I could describe it with such a word). The community almost definitely won't settle on a favourite for years to come.
In this world nothing can be said to be certain, except death, taxes, and more JavaScript frameworks.
Reflections
The best you can hope for is to keep up with trends and have an overall idea about what's going on. Learn about ideas and best practises that might catch on and carry throughout multiple technologies and don't expect to have experience in everything (or anything in my case) that your next frontend job asks of you.