Recently, I have thought a lot about that a considerable amount of (successful) software applications and Internet sites are nothing more than simple “db editors” (db as in database). Or more correctly a combination of database editing and data presentation.
Let’s look at some of the most common things we do today for example:
– Facebook, LinkedIn and other social network sites. The data presentation part often consists of one or a few pages/views where the user spends most of its time. What’s presented in these views is basically some static information or the latest entries from a couple of db tables. Basic information about the user (current number of friends/contacts, current and previous employment, etc.), recent activities from you and your friends (the “wall”), requests to join certain groups, chat and mail-like messages, etc. The editing part is equally simple; updating of static data, replying to chat and mail messages and requests, addition of new friends/contacts, group affiliations, etc.
– Email. Dead simple presentation of messages, either all of them or filtered by some criterias. Editing involves tagging messages, writing new messages, moving them between folders, etc.
– Blogs. The presentation part dumps all your posts and comments to messages. Editing adds new posts and comments.
– Web shopping. The product catalogue of the online store is stored in a database and the presentation part consists of various views of the catalogue, sorted by poularity, product categories, etc. Usually the catalogue is made searchable. Orders from customers or stored in the database.
– Media streaming. Music and video on the Internet are basically search engines with a slick presentation part. Sure, the actually streaming technology is not really database based but rather quite high tech but I’m actually bold enough to claim that the streaming technology is not the most important part of such applications. It’s actually the data.
– Web sites. Web sites in general and especially newspapers and magazines are very much “db editors”, or rather Content Management Systems (CMSs) as they are called in that world. Weather sites, online stock broker and portfolio management sites, photo albums, etc. are also nothing more than spiced up db editors.
Look at some of your own favourite applications and sites and you will probably see a similar pattern.
Obvious anti examples might include games (although many of them, especially online variants, are backed by some heavy duty databases), photo editing, word processing, etc.
So, where am I heading with all this? Well, basically it is an observation that it should be possible to standardise and streamline a lot of applications/sites by unifying on one technology and making it real good (I know, it’s a favourite subject of mine). Also I think that a lot of hand crafted code in applications could be replaced with standarised db code.
In the online world, it’s much more common to build applications and sites an a db backend, but it still feels like a lot of code is written and re-written again and again for every new site that pops up. Surely, the “db code” of a new site cannot be what makes it unique?
Just imagine how many applications/sites that could be built with some db queries and some simple presentation logic. The editing part could also be standardised to a great degree by adding “automatic” validation of data based on types, etc.
Lazy is (should be) a virtue among software developers, yet there are so many of us that just love to produce thousands (sometimes millions!) of lines of rather trivial code for searching, sorting and selecting data, instead of focusing on making the really hard parts really good.