When you’ve been programming for so long sometimes it is hard to take a step back and rethink the way you are doing things.  As developers of technologies, languages and platforms we tend to build things incrementally as there is a need. This usually works to some extent but in some regards we end up with a horribly inefficient development experience.

Let’s take the current web development experience on the LAMP stack. One of the first things that strikes me as wrong is the sheer number of languages we have to deal with for any moderately complex project. We have PHP, MySQL, Javascript, HTML and CSS. Are you fucking kidding me? That’s 5 radically different languages while working on the same thing. Worst yet, I’ve seen code that uses all 5 of those languages within a few lines of code. Let’s not forget all the extra work we need to do for cross browser compatibility (always having to write to the least common denominator, or worst yet doing things multiple times for each different browser).

Other times we use one language to output the code to another language for the same data. <?php echo “var myVar=’$myVar’; ?> just so Javascript can use something from PHP. How retarded is that?

What do any of those languages do that would make it impossible or undesirable to do all of that in 1 language? Absolutely nothing! Now, I’m not saying they should all be written in the same style; quite the opposite in fact; but with domain specific languages (DSLs) it is possible to express radically different domains and concepts within a single language. LISP and Ruby both have good implementations for large portions of this but I think it can be taken much further.

Having one language for everything allows us to reduce huge amounts of complexity. Ever have to escape escaped characters? You end up having to type “\\\\” just to get “\”. Having 1 language also makes for better integration between all the parts of the web application. Why do we have to write a validator in Javascript and then do the exact same thing, in an entirely different language (PHP), for the server side when it does exactly the same thing? If we throw Actionscript / Flex into the mix we have even more overhead and complexity.

Then of course we have languages that are pushed to do things they really weren’t designed to do. Ever try to center an element vertically on a page with CSS?

Why is it that 70% of the code we write is plumbing to move data from one place to another instead of logic or algorithms? We have an HTML form that submits the data to PHP, which then needs to read those data and store them into variables, which then need to have PHP dynamically generate SQL that contain those data to be submitted to a database. We have the exact same problem going the other direction.

Does this seem a bit out of whack to anyone?

Let’s use some zero based thinking and transport ourselves 50 years into the past. Let’s say someone tasked us with creating something akin to the current Internet. How would we do it? I highly doubt it would look anything like what we currently have. If we had to build everything from scratch we most likely would end up with something dramatically better.

An analogy we can use is a giant snowball that is rolling downhill. It keeps getting bigger and bigger. Nobody wants to stand in front of it and try to slow it down for fear of getting squashed. It seems hopeless like there is nothing we can do. I don’t think this is the case. In fact, look at the cost if we don’t. I have no doubt if the entire system were redesigned the mid-level programmer could see a 10x increase in productivity. Do we really want to be working at 1/10th of what we could be doing for the rest of our lives?

I have some thoughts on how things can be done different which I hope to expand upon in future essays.

In the meanwhile I hope my words have sparked a curiosity in your mind as to how things can be done differently. I welcome your thoughts and opinions.

Posted Thursday, April 2nd, 2009 at 10:12 pm
Filed Under Category: Uncategorized
You can leave a response, or trackback from your own site.

5

Responses to “Something is rotten with the current state of programming”

Kelly Brown

The article is usefull for me. I’ll be coming back to your blog.

GarykPatton

I have been looking looking around for this kind of information. Will you post some more in future? I’ll be grateful if you will.

CrisBetewsky

It’s a pity that people don’t realize the importance of this information. Thanks for posing it.

CrisBetewsky

You know, I don’t read blogs. But yours is really worth beeing read.

Rich J McPharlin

Hi,
well written article, I think our views on Something is rotten with the current state of programming differ a little however you put foward some good points

Thanks

Leave a Reply

You must be logged in to post a comment.