Naive Programmers (or "Why Programmers are Like Children")

There are some programmers out there that are naive, or even ignorant to the world around them. These programmers do not think of the full spectrum of the impact of the things they create, nor do they think of the users that actually use them. The simply come across as negative, and complaining. They only think of how things would be better if...

... all browsers were compliant ... they would just do X this way ... they would take X off their site it would work better

These types of comments infuriate me to no end. Whether the client knows of the ramifications or not, they obviously have a reason for doing things the way they do. Creating an application based on a client's current process is the best way to make a client happy. Changing their internal procedures is rarely the way to go, unless the client already recognizes that change is needed.

In The Bolero of trolls Mark discusses this phenomenon in relation to Fixing HTML, a rant about what is wrong with HTML and why it needs to be fixed.

The truth is I doubt there would be many web people out there that would deny that HTML could be better, I for one sure do. But the fact is that we're not working in a bubble, and this is not a utopia. We're working with other constraints, such as backwards compatibility, and billions or trillions of existing content out there.

It's very naive to think that we can just go out and change something like that without thinking of the ramifications throughout the system. Maybe Douglas Crockford had thought of that, and he simply didn't want to deal with that part in his writings. That's perfectly fine, but maybe it is a point that needs to be discussed more in depth.

Programmers with this viewpoint do come across, as Mark Pilgrim said, as very naive and 5-year old like. They simply don't understand that there are more things to take into account than the simple "rightness" of how something should be done.

What we as programmers need to do when creating systems is to think of the user's experience first, and implementation second. You're not going to make clients happy otherwise.