2008-07-23

It’s all about interface, baby

What’s a program, really?

A bunch of programming language statements? - Certainly not.

Some screens for user to type in their data and have it processed? - That’s warmer.

A paper prospect with a couple of sentences blaming current government and a long passage on how it all could be done better? - Get out of here, you nose-thrusting politician!

Ok, so what is it, now? – A crutch. Well, just like every technical object you have on the desk. Some time ago when word processing and e-mail still wasn’t invented, people needed to clip papers. And they did it pretty nicely, wasting on it about five minutes. You see, in 1800, five minutes were a blah. Five mins here, five mins there, people in 1800 had plenty of time. Not that they had more than 24 hours in a day, it has something to do with the feeling of time flow. Now, as year marks on calendar came closer to 1860s, time shrank. The first five mins you help your boss write a note, the second five mins you speak to somebody that desperately needs attention, and you have no time to do paper-clipping! So well, smart people invented a stapler (which, of course, wasn’t called so in 1860s and was larger and didn’t have any preinstalled RAM). The stapler is a “crutch”, a prosthetic device that helps people who have a kind of “time disability” to do a simple thing like paper-clipping quickly.

Nowadays, all businesses have their websites. Certainly, a website could be just a number of HTML pages hyperlinked together, and having it this way has some advantages like decreased time for page generation (there’s simply no page generation), no need for complicated power-consuming webserver software, etc. But businesses wanted their customers to buy things on websites, which led to invention of cart concept, which meant to serve different pages to different customers, and good businessmen just couldn’t place 5000 people making HTML pages on the fly, so good programmers invented web programming languages and wrote content management software implementing the aforementioned cart concept and much more. Now, top-management bosses don’t know HTML and couldn’t care less about learning it. But they like fancy markup like bold and italics and underline (those without aesthetic sense even use blink | disable it now). Smart creators of CMS thingies are aware of this situation and include web-based rich text editors (again, a crutch!) in their products. After playing around with brand-new yesterday-bought system, businessmen realize that they really have neither time nor skills for writing and they need a content manager. Imagine you are a guru in HTML doing on-demand content management for a couple of firms. You hate those RTE because they generate w3c-incompatible HTML and mess the things up, so you turn them off. But nobody told you about a secretary whose knowledge of HTML consists of a statement that it’s a "web programming language". While you perform relatively complex operations like building tables, this poor girl posts company news on the first page, and those news include the markup the boss likes, and she can’t make it without an RTE disabled by you. From a programmer’s point of view, this situation has an obvious solution: let user have a checkbox in his settings that says “Enable rich text editor”, which defaults to be set to true and could be unchecked by arrogant HTML-wise content managers. This tiny feature requires creating a checkbox in user settings HTML code, adding a place for this setting in some kind of user settings storage you use, and wrapping code for transforming a textarea to RTE with an If checking whether user prefers it to be RTE or not.
In five minutes, your program, your CMS, a crutch created by your team for businessmen and secretaries and even content managers is easier to use by more than one man at a time.
Not so fast! - you say. With all those tiny features we’ll soon have a user settings page which is four screens long and has checkboxes organized in three columns, it just won’t be easier to use. Now, it’s your choice how to design your software. The way of checkboxes is not that bad, dive into Word (Writer) options and you’ll see it’s populated by little squares with ticks. And don’t think you can get away having only 20% checkboxes the Word has. So, creating software is all about creating an interface which acts like a crutch that is easy to use and fits people needs.