Stages in Life of a Web Developer

After experiencing this interesting development in my own life, I keep seeing others go through the same 3 stages:

Stage 1: TOTAL HAET!

Stage 2: Careful, reserved acceptance…

Stage 3: TOTAL LOVE!

People in Stage 1, almost unanimously think that Javascript is “totally ghay”. They use phrases such as “a silly toy language” and generally consider it to be just a step above Visual Basic. Let me explain this for those readers who don’t hang out with programmers all day and they don’t get to learn our lovely stereotypes, and for Visual Basic folks who are probably not aware of this. In the world of software engineering, being a VB guy is a bit like wearing a mullet. In other words, it implies lack of style and sophistication and underlines the fact that you are just not keeping up with current trends. Not that there are no talented VB programmers – there are exception to every rule after all, and all stereotypes are mostly false except when they are true. ;)

Stage 1 people look at Javascript hackers, and scoff at them confident of their own superiority. They view client side scripting as a thankless, tedious job for masochists. After all, coding in Javascript is a a chore, right? You set something up and test it in Firefox, only to find out it doesn’t work in IE. Then you fix it for IE6 but it doesn’t work in IE7. Then you find out it doesn’t work in Opera. Finally you covered most of your bases and someone tells you that you need to support IE5 as well. Then IE8 comes along, and breaks your code once more. So your code branches into a tangled forest of exceptions, workarounds, hacks and mostly undocumented syntax acrobatics. This must be what programmer’s hell is like.

Most people who go through this once or twice in their career, wash their hands from client side development and declare themselves as server side dudes. Some of us however, end up working more and more with the infernal language, and eventually we end up researching ways to make the language it less painful and more powerful. And then something happens.

We discover one of the many Javascript frameworks such as JQuery, Prototype, YUI and etc. All of a sudden you have this tool – this API which gives you a comprehensive list of cross-browser functions, objects and widgets to play around. Someone already went through the browser compatibility hell and built a layer on top of it. You talk to the framework, and the framework deals with the browser bullshit that made your life so difficult initially. All of a sudden you realize that, hey – Javascript ain’t that bad actually. The language is flexible, dynamic and very expressive. It doesn’t get in your way, it doesn’t require you to write boilerplate essays, and it allows you to be as brief and cryptic or as verbose as you like. Wow…

Welcome to Stage 2. At this point many people still have their reservations. They are sure that sooner or later they will to fall back onto their old Javascript tricks and deal with the browser hell. They are convinced that there will always be exceptions and outlying cases that will make the framework a liability. They thing that at some point they are bound to run into a problem which is only compounded by the framework and will have to work around it, and around browser bullshit to fix it. So they remain cautious and vigilant. They promise themselves that they will never get roped into doing client side stuff again. They will be strictly server side from now on. They view Javascript as necessary, but manageable evil and purposefully make their trips to client-side land brief and limited in scope.

But then as they work on their JS related projects they grow to like the language. The realization that this language can do almost everything that Ruby and Python are being praised for if not more while maintaining a conservative and familiar syntax slowly starts sinking in. You can do crazy dynamic Ruby/Python like stuff without actually running yet another interpreter of VM. Javascript runs in your browser, and can run on the JVM with Rhino. If you wanted to, you could even use it on the server side with full access to Java API and leveraging the full potential of JSP without the burned of verbose, statically typed Java syntax.

A whole new world opens before you. Javascript is popular. Everyone knows a little bit of it. Everyone has a collection of hacks posted somewhere. There are volumes upon volumes written about the language. There are dozens of frameworks, millions of libraries and code snippets waiting for you to exploit them. Whatever problem you are having, there is probably an easily googlable solution for it. If the solution seems complex there is probably a framework out there which reduces it to a single function call. And if you happen to be working with Rhino you can always just call one of the countless Java API methods instead.

You just entered Stage 3. Stage 3 folks can be recognized by the smug smile glued to their face when they code in Javascript. They know that you know that they know something that you don’t. They have this inner glow, and supernatural powers – they can solve a complex issue in 3-4 lines of code. They take this silly toy language and build incredibly awesome, rich client side applications. Stage 1 person may think that Javascript is pretty much only good for sending asynchronous request to the server and making things fade in and out on the screen. Stage 4 people create impressive stuff ranging from Rhino on Rails, to a 14KB Super Mario Clone or DHTML Lemmings.

Personally I think Javascript has a bright future. It’s just that a lot of people are still stuck at Stage 1 and the stigma of toy language keeps them there indefinitely. Stage 2 is transitory and brief, and almost always results in a transition to Stage 3.

Which stage are you? Are you hating Javascript, begrudgingly accepting it or loving it? Have you experienced a similar transition, or were you one of the few people who instantly fell in love with the language? Do you think you will ever transition beyond your current stage?

13 Responses to Stages in Life of a Web Developer

I love it. I think JS can really be used to enhance the user experience and it’s frustrating that so many developers don’t see its value. I went through the whole transition too. Years ago, I didn’t see much value in it. Sure, it could do some cool things and even some useful things, but the effort that it took to get JS working across browsers often wasn’t worth it. Now jQuery (and similar frameworks/libraries) make things so easy. I think the next stage will be actually taking advantage of the language and really using JS, but I don’t know if I’ll get there… I don’t have as much time to play around as I’d like!

@Jim – Well, yes. That was sort of intended tone that I wanted to represent there – the tone of uninformed ignorance. That’s why I wrote “totally ghay” in italics… Perhaps I should have used quotation marks instead… Or both.

Also, I blame spellchecker for the anonymous thing. And my poor spelling, but mostly the spellchecker.

i am on stage 1
and i dont think i will grow out of this stage before there are extreme performance-improvements in javascript interpretation… ;-)
There aren’t just the obvious and practical explainable reasons which keep me from using javascript.. i.. just.. dislike the syntax.
Just the other side of disliking C++ and prefering Delphi.
I think Languages like Java or C++ are one extrem (i dont want to use) and things like PHP or Javascript the other.. i just want to stick to languages in between the extremes which serve a bit for every purpose like Pascal or Python.

[quote post=”2629″]i dont think i will grow out of this stage before there are extreme performance-improvements in javascript interpretation…[/quote]

They are actually on their way. Mozilla’s tracemonkey engine will offer drastic performance increases. It will eventually become part of Firefox so it is not just some proof of concept thing. It is actually a hot research area these days.

Oh, and if you use Rhino and compile your js scripts they get executed by JVM and get all the benefits of Java’s powerful JIT compilation.

As for languages, my first steps were in BASIC, then I dabbled in C++ for 1 semester. My 4 years of undergraduate studies, and 2 years of grad school were all filled with Java. In the meantime I learned Perl as part of my adventures with Linux, and got into PHP and Javascript for work. These days I’m still trying to become semi-proficient in Python (I just don’t code in it enough) and keep trying to get into Ruby. Oh and I dabble in Lisp every now and then.

Your email address will not be published. Required fields are marked *

Comment

Notify me of followup comments via e-mail

Name *

Email *

Website

Currently you have JavaScript disabled. In order to post comments, please make sure JavaScript and Cookies are enabled, and reload the page.Click here for instructions on how to enable JavaScript in your browser.