Articles

Why you shouldn’t be a
Javascript Developer

24th November, 2013

Or a PHP Developer, or a NodeJS Developer, or (heck!) an HTML5 Developer for that matter.

Associating your name, and therefore identity, with a single technology is a bad idea in the long run.

In the short term, it might help getting gigs quicker, but if there’s something the world has taught us is that technology evolves quickly. What today is generally considered the best tool for the job, might not even be on the shortlist tomorrow. Even if that technology is being supported by a big corporation (Java and Sun?).

As a side note, I think recruiters are much to blame for this situation with their job ads and head hunting pitches for “HTML5 Engineer”, “jQuery Technologist”, “Lead Javascript Architect” and the alike buzzword job titles. (So let’s just avoid that, shall we Dear Recruiter? Thanks.)

I have done this mistake before.

Over 15 years ago (!), when I started playing around with web technologies, I learned the basics of HTML and CSS. Then interactivity with VBScript and Javascript. Next I picked up design skills by learning the elements and principles of design. Not to long after, I needed to work with databases and email, so learning ASP came in handy.

Fast forward to a few years later and, with a more diversified and endured skill set under my belt, I started working solely as a Flash Developer.

The industry was pushing in that direction. Amazing projects were being done with this technology, which lead to an increase of job offers and I got to a solid degree of expertise (AKA good fun with a shed load of pain) using this technology.

Then along came “Thoughts on Flash” and an empire crumbled down.
Flash faded into the background and the HTML5 blanket rouse as the new king of the web. With this industry switch, thousands of developers had to brush up their skills and job titles to keep in the game, as Flash became almost a curse word.

Fortunately, my knowledge of web standards hadn’t faded away, since I always kept using those on personal projects, but it was a little off comparing to what my peers were already doing, by the time I got back on the horse.

“So what should I be?”

Be technology agnostic. Learn to draw solutions independently of technology. Learn to first find a solution to the problem and only then choose the technology that better fits that solution. You should avoid designing a solution around a specific implementation just because it’s the one you know best.

It’s surely harder, but an agnostic approach will keep you fresh, open and encouraged to increase your knowledge of technologies and skills.

If you’re a seasoned developer you should know this by now, but if you’re just starting to learn the craft, let me be clear: it’s impossible to know (at an expert level) every technology around you.

Although you should acknowledge this human limitation, it should not keep you from experimenting and mastering as many technologies as you can grasp!

You must keep being curious. Don’t just follow the “Hello World” recipes. Come up with a real-world use case for it and build it. If you don’t actually use your newly learned knowledge, your brain will archive it in no time, and a year later you barely remember what you learned, and you’ll have to pick it up again from the start.

And get comfortable with the language before you skip into the wonders of frameworks and libraries. Learn Python before Django, Javascript before jQuery, Ruby before Ruby On Rails and so on. Frameworks usually solve a bunch of problems and give you a clean boilerplate to start with, but you should be able to build a solid foundation for your solution without having to depend on a framework.

When you have experience with various technologies, you also get an amazing creative freedom. It becomes easier to find the path of least resistance. It also restrains you from steering a solution towards the technology you’re most comfortable with. It allows you to offer the best solution for a given problem that your client might be facing.

It’s the knowledge gathered from past experiences that will put you at ease, even when you venture into foreign territory.

As a matter of personal branding, this mindset also means removing the technology part from your current and future job titles. You should prefer instead a more generalist title like “Frontend Developer”, “Backend Developer”, “Mobile App Developer”, “Full Stack Developer”, simply “Coder”, or whatever rocks your boat (just don’t add in “Ninja”, please).

In developer lingo: aim to be “loosely coupled” with any specific technology.


Update on 25/11/2013:
1. Discuss on Hacker News
2. Discuss on Reddit