The Terrible State of Web Development

This rant stems from me getting even more fed up with my current web hosting provider and facing the prospect of migrating my website to a whole new host and getting everything re-set up.

My personal web site is currently built on the Drupal content management system, with which I became very familiar while working as one of the web masters for my university’s Computer Science department. As a result, when thinking about building a site, my immediate inclination is to use Drupal. I’ve used Rails a bit, but I’m not as familiar with Ruby as I am with PHP, and just found that whole process to be tedious.

While Drupal is incredibly flexible when it comes to building almost any sort of website, it’s still like putting perfume on a rotting corpse. The rotting corpse is, of course, the terrible state of web development.

The problem I have with web development is that the required domain knowledge is far too massive. Even when setting up a site with Drupal, consider the things that you’ll probably have to end up knowing at some point:

  • HTML
  • CSS
  • JavaScript
  • PHP
  • some SQL variant (MySQL, SQLite, etc)
  • Apache configuration and administration (.htaccess, etc)
  • how all of these are supposed to work together in the Drupal environment

In other words, to accomplish one task, I have to use at least six different languages. Admittedly some of these languages aren’t very complex, but it’s still a huge swath of stuff that you have to know. That’s just stupid. And if you want to have a mobile version of your site, you’ve just effectively doubled the amount of client-side stuff you have to maintain.

There are some ways to simplify this. For example, the excellent Cappuccino frameworks eliminate two of the languages (the HTML and CSS are all generated by the frameworks, which are written in a dialect of JavaScript). However, Cappuccino is still only half the problem. It only deals with the client-side aspect. You still have to deal with the server-side aspect.

Again, this can be simplified too. If you’re using a content management system that has an active record-like api, then it’s conceivable you could eliminate the need for knowing a database language.

So assuming we do all of this, we can cut the domain in half, leaving us with a client-side language, a server-side language, and server configuration and administration. This is still a heck of a lot to know, just for a single site.

Cappuccino appears to have a couple of active record-style implementations, but I also think Cappuccino is total overkill if you’re wanting to set up a personal website.

So this is my rant: making a website sucks. It’s a miserable experience if you want it to have any sort of dynamic nature or don’t want it to look like crap.