Thursday, December 1st, 2005

QuirksBlog: JavaScript and “Serious” Programmers

Category: Programming

Peter-Paul Koch asks: Who will create the AJAX apps?

In his view, client-side programmers aren’t qualified:

I think that client side programmers can use a bit of education in application design and software development. Typically, our scripts are rather small, both in extent of user interaction and in number of lines, and they don’t constitute a serious design challenge.

… But nor are server-side programmers qualified:

(S)erver side programmers are unsuited to create Ajax applications, too. Sometimes I get the feeling that they don’t want to learn JavaScript, with the possible exception of the ones that visit this and other standards aware sites … server side programmers should learn modern web development techniques and theory if they want to write Ajax applications.

He argues knowledge sharing between developers is the way forth, but he’s not too optimistic about that:

I cannot avoid the impression that many “serious” programmers look down on JavaScript, and don’t want to learn it because it’s too simple. Instead, they tell an intern to go download a library … the overall pattern seems to tend towards arrogance rather than cooperation. That has to change.

Is the server-client dichotomy a fair characterisation? In many places, developers have to work across the spectrum, although it’s true they often have a bias one way or the other. Will Ajax lead to a new breed of generalists, capable of doing a good-enough job at both ends?

Editor’s Note:

I don’t know what world this guy is living in. We are all generalists to some extent.

I have had people say “My last project was Java”. But, when you look into it, it used: Java, SQL, HTML, CSS, JavaScript, shell scripting, etc etc. We use domain languages all over the place. We know a bit of Regex here, a touch of rules engines there.

We have been building applications that have some kind of interface for years, and Ajax isn’t anything special or new. It is just another tool in the chest that allows us to do certain things in our browser based interfaces.

It is my view that this guy doesn’t know what he is talking about. We are constantly out there trying to get people to take JavaScript more seriously in their projects, and his diatribe doesn’t help. When I see projects that unit test every method on the server side, but do no testing of their JavaScript, it makes me cringe. If you believe in unit testing, you should believe in unit testing your JavaScript code just as much as your server side code.

— Dion

Posted by Michael Mahemoff at 12:41 am
16 Comments

+++--
3.4 rating from 7 votes

16 Comments »

Comments feed

oy.. the ego!

Comment by a-dog — November 30, 2005

Wow. I just got insulted. Big time. So I know my ways around JavaScript and cross-browser-goodness. I know PHP and Ruby (and Rails). I know HTTP status codes, databases (no master here) and general security practices. (Not claiming that’s all there is to it, but I believe I’m capable.)

But I’m not a serious programmer? Really? Seriously?

Okay, if you are a server side person, it can be hard to get to know all the ins and outs of cross browser development. But JavaScript is a language, and not too hard to learn at that. If you are a client side person, it can be hard to learn about HTTP and security and databases. But Ruby is a language, and not too hard to learn at that.

So what’s the point? That serious programmers don’t adapt well enough? That seems to be a contradiction. Either you learn it, or you don’t. And if you’re serious, you’ll learn.

As for your question, yes, I think it will. You need a JavaScript wizard on the team, who also understands the server side. Makes communication a lot easier.

Comment by Mark Wubben — November 30, 2005

Serious programmers don’t like to use/learn JavaScript because it’s a poorly designed language and has an even worse implementation. By implementation, I mean the union of all bugs and the intersection of features amongst the platforms you care about — which is probably some version(s) of SpiderMonkey, JScript, and JavaScriptCore (Firefox, IE, Safari).

It’s simply not very fun to use. Using JavaScript requires a very “means to an end” attitude, serious debugging skills, endless patience, asynchronous programming experience (or luck, I guess) and creativity. Libraries are a partial solution to this issue because you’re leveraging those skills from other developers, but in doing so you’re making a size/speed trade-off. Adding in foreign code also brings along license issues, and can make bugs harder to track down because they might not be yours and you may not understand the implementation of the library.

The grass is much greener if you’re using something like Python or Ruby… or even PHP, because at least you only have one implementation to care about.

Comment by Bob Ippolito — November 30, 2005

http://alex.dojotoolkit.org/?p=522

Comment by Alex Russell — November 30, 2005

Maybe this is a problem in large companies, but in small companies like the one I work for, our programmers handle all aspects of programming – server- and client-side.

On a similar note, I was considering recently how much I’m really enjoying JavaScript recently, since this AJAX lark became popular, and how much like a “real” programmer it made me feel. As an example of that – I bought a book a few weeks ago on QT programming in C++, for a separate project to my work, and was surprised at how much of the code that just “made sense”, thanks to my experience in both AJAX, and DOM.

Personally, I do think that an AJAX programmer is an entirely new breed of programmer, and no purely client-side or purely server-side programmer is going to be able to handle it.

So, in part, I think PPK was correct. I kinda pity the large houses now…

Comment by Kae Verens — December 1, 2005

What’s a “serious programmer”? No, but really.

If you mean someone that takes a serious approach to their programming, they won’t “look down” on a language, platform or technology just because they don’t like it.

Of course if you’re writing serious in quotes, you probably don’t really mean serious, but supposedly serious. Maybe you mean “professional”… or more precisely, the kind of professional who’s stuck on a certain aspect or kind of programming and can’t seem to see any further. If that’s what you mean I would agree with that. I’ve seen many (really many) programmers doing something for years and incapable of even thinking of doing anything else, learning a different language, using a different platform. Yes, but IMHO that’s not a “serious programmer”.

Comment by Gonzalo — December 1, 2005

Bob Ippolito, all those problems exist in any language you can name. At least in my world I have to deal with inconsistencies between different C/C++ compilators and libraries on different unices as well as different – incompatible – versions of PHP. A common consensus has always been that it takes a few years to be fluent in a programming language. Yet most people seem to think that they can master javascript in a fortnight. That’s just plain stupid. And to libraries – I wouldn’t want to create a desktop application from scratch in any language without the aid of a library. I guess the same is true for web applications. There’s no magic there either however much you believe in it.

Comment by Danne — December 1, 2005

I think there are some important issues that haven’t been adressed here. One should take in consideration that, even though web technology has been around for some years, it’s still evolving. And the fact that this evolution is beeing influenced by numerous companies and organizations, convey in many different ways of implementation.

The foundations of Java has been laid by Sun, Microsoft set the standards for their own language and development environments (the examples are many). Also to promote their products, titles are created and a developer is labeled as MVP (Most valuable Profesional) or some sort “serious” programmer or something else funny.

In web technology, a problem can be solved in so many “right” ways. And the software houses promote the ones that are within the guidelines to their products.

A strong point that should be in mind in this discussion; web technology is about “programming” several nodes/end points/computers to accomplish a series of tasks.
In oppose to pure single language solutions, which often is about programming single nodes (unless the developer is appending web technology as Dion points out). Which is by far easier than the programming over the network.

The evolution of web technology is threatning the “serious” programmer skills, because they are getting outdated and less usable in coherence of network.

I understand that I am generalizing but I think my point is valid in the context.

Comment by Hakan Bilgin — December 1, 2005

Indeed, I’d consider myself a “serious programmer” on the server-side; I spend most of my time coding in C#, Java or some flavour of SQL, but my background is as a front-end developer, so my CSS, JavaScript and accessible Web design skills are all pretty damn good too, thanks.

Both I and a colleague of mine (whose skills are closer to the front end, but broadly similar) are quite capable of writing Ajax application, thanks.

I have to agree with your analysis, Michael. I think Peter-Paul Koch is being somewhat myopic and failing to see that one can be a bloody good server-side coder *at the same time* as being pretty damn good on the client-side, thanks. :o)

Comment by Owen Blacker — December 1, 2005

It looks to me like Peter-Paul has run into the problem described by Dave Thomas in his presentation “Herding Racehorses, Racing Sheep.” In short: The majority of professionals, including programmers, achieve the level of “Advanced Beginner,” and never progress any further in thier skills. For programmers this means learning jst enough JavaScript, C#, etc. to get the job done, but not really taking the time to learn newer, better approaches. These folks are also far more likely to choose a language based on zealotry (current knowledge), rather than using the best tool for the job (requiring learning.) They’re more likely to learn server-side techniques, but not client-side, procedural programming, but not ojbect-oriented, databases, but not the normal forms.

Now, we’re all reading this blog out of pure interest, suggesting that we have a higer-than-average degree of interest in our craft, and we become insulted when Peter-Paul suggests that there are people who should go and learn how JavaScript really works, because we have already done that. Consider for a moment, however, that he’s not directing his comments to us, but to the majority (yes, majority) of programmers who have no real interest in programming as a craft.

Comment by James Tikalsky — December 1, 2005

I guess I’m ignorant, but I didn’t know there were ‘server side’ and ‘client side’ programmers. If I understand things right, I do both. I am a ColdFusion developer, so I handle all the DB interaction and page processing, etc. I am also the guy that builds the front end, including all the JS. Am I a strange duck? Are most people used to doing just one part of a web app?

Comment by Jacob Munson — December 1, 2005

Wow. It seems to me that not many people have spent much time actually reading his article. Not to mention this article is a follow-up to two other articles, “The New Amateurs” and “The New Amateurs – Part 2”. He actually makes some great points if you take the time to read and consider his argument.

His main point, that “server-side” programmers don’t take JS seriously is totally valid. It’s not universal, but it is still valid. The secondary point to his posts is that we (client-side and server-side programmers) need to come together and communicate more. Whether you realize it or not, there is a HUGE division between the two types of programmers.

Personally, I not only think he has a valid point, but that his point can be expanded. I can’t tell you how many times I’ve been derided by Ruby programmers for being a “PHP programmer” or how many times I’ve heard PHP purists put down ColdFusion programmers for not being “serious” programmers. The truth is, your toolset does not necessarily reflect your professionalism. I know A LOT of extremely intelligent and professional ColdFusion programmers.

I’m speaking generally here, knowing that there are exceptions, but the fact remains that there are too many divides amongst modern programmers based solely on the tools of the trade. It is a ridiculous bias.

Comment by Ryan Hagan — December 1, 2005

> I don’t know what world this guy is living in.
The real world, from my experience.

> We are all generalists to some extent.

> I have had people say “My last project was Java”. But, when you look into it, it used: Java, SQL, HTML, CSS, JavaScript, shell scripting, etc etc. We use domain languages all over the place. We know a bit of Regex here, a touch of rules engines there.

Ok, now ask yourself how many guys who used “Java, SQL, HTML, CSS, Javascript” in their last project tried to get more than a superficial knowledge of JS.

On average, a damn few, when he states that server-side programmers don’t care about JS and don’t want to learn it, it’s the truth in about 95% of the projects.

Having to do it doesn’t mean that you’re doing it well, or that you’re trying to do it well. If you are, more power to youn but most people clearly aren’t and view JS as a gimmick and a sub-par toy language.

And to Bob Ippolito:
JS is, in fact, not a bad designed language at all. JS 1.5 lacks quite a lot of high-level features such as strings and array manipulations (which Firefox provides from JS1.6) but it’s an overall clean and clear language, and most of the implementations are good.

Please don’t mix “Javascript” and “W3C DOM’s Javascript Bindings”.
Most of the cross-browsers issues are on the DOM which is an extension of JS itself, NOT on the core language.

Comment by Masklinn — December 1, 2005

Danne,

Yes, of course, all languages have warts. JavaScript has more than any other I’ve ever used. I’ve used a lot of langauges. This isn’t a naive opinion.

Masklinn,

What planet do you live on and what are you comparing JavaScript to? JavaScript is the worst prototype based language I’ve ever used. Languages like Lua and Io are way better at being what JavaScript is supposed to be. Not to mention the popular class based languages with more productive syntax and built-ins like Python or Ruby.

Comment by Bob Ippolito — December 1, 2005

PPK’s article comes across to me like a builder complaining that architects are disdainful of laying bricks and installing plumbing, while admitting that builders would be bad at creating a shopping mall by themselves.

However, ‘builders’ versus ‘architects’ would be a reasonable way to look at construction. In software, things aren’t that clearly delineated.

It seems to me that PPK has formulated a false dichotomy of ‘client-side’ versus ‘server-side’ programmers, based on his own admitted ignorance of how to design non-trivial software systems (which he suggests is the domain of ‘server-side’ programmers).

I certainly consider myself a ‘serious’ programmer, and I do have issues with JavaScript’s design and implementations, but in the client it’s all we have, so I deal with it and get stuff done.

‘Serious’ programmers can and do take a system-wide view of what they’re working on, and can design and implement things appropriately.
I know several, and I don’t know one that thinks in the client-/server-side way that PPK mentions.

For one recent project, I wrote the Oracle stored procedures, the JDBC abstraction layers, the Java servlets, the JSP web pages, the JavaScript Ajax/UI libraries, the XML specifications, and all the shell/perl/m4 code/documentation generation tools. If it turns out that being able to do all this is unusual, maybe I should be putting my rates up. :-)

Comment by Frank Wales — December 1, 2005

I’d have to say it’s a call to all those burnt out video games programmers who are used to all the strange quirks of working on asyncronous projects.

Nothing like getting the best programmers in the world to make the web a good place for a change.

Real-time embedded programs unite!

Comment by Tom Schenck — December 4, 2005

Leave a comment

You must be logged in to post a comment.