Two seemingly unrelated things popped up over the last few days. One of these things was an article along the lines of a discussion I had not too long ago with friend Yermo about. Simplicity in software design. From Reducing Complexity: The Next Software Imperative:
...And that should be the goal of all developers to make an app so elegant, so well designed; you forget you're using it --or even the device on which it's installed. The reason people gravitate toward apps at work is because mobile devices often offer the most elegant solutions to long-standing problems. Instead of fighting with clunky enterprise software, users find software that does what they need it to do and nothing more --and more importantly that just works...
For those of you who don't remember what the Mozilla browser used to look like, as an example, one need only take a look at the community Seamonkey project, something I use every day because it does many things I want to do exceedingly well. It downloads my emails for me, something that it seems a generation has completely forgotten about unless they're locked into Microsoft
Outlock Outlook. It has a built in HTML editor. It has an IRC component. It has an address book.
I'm not the norm. The Firefox project does one thing very well. It's just a web browser. Seamonkey and Firefox have the same engine underneath. Which one is more popular? I don't think I need to look for statistics to show you that Firefox is more popular than Seamonkey.
More popular examples would be apps for mobile phones. They do one thing and they do it well (unless it's something recent from Facebook, or so I hear). Simplicity.
Yet simplicity almost always masks complexity; it's a matter of who deals with it.
In a world of small or non-existent budgets and lots of well intentioned people, software developers inclusive, this can be a sticking point even when trying to do something pro bono.
As Jon Lebkowsky (of Polycot Associates) posted in a status update yesterday:
Never fails - you offer to build a website pro bono and the recipient of your love is irritated that you can't create a $20K miracle for nothin'. Hopefully I've learned my lesson, finally.
As someone who has found himself in similar shoes, I've noted this a lot. The '$20K miracle' here is the problem anyone dealing with any software development has run into, be it for a small business, a large business, a non-profit or a family member - or someone who heard from someone else that you do websites. Recently I have seen it twice - the first with developing an API for an web host company to wrap other disparate APIs. The second was fixing an old Drupal install to do something that has a module for it in Drupal 7.
I could go on. I imagine many software developers could, particularly those of us in contract/freelance mode.
The point is that client expectations are high but they fail to realize that a simple logo and textbox on a website - simplicity in and of itself - masks a lot of working code in the background. Who am I talking about? Google. The simplicity of the Google page is probably the best example of masking a lot of complex algorithms that provide people with, more often than not (we hope) what they are looking for on the Internet.
The tree, as simple as it may look, has complexity hidden below the surface in its roots.
With mobile development applications, it's the operating system and hardware. With Microsoft's .Net platform, it's an API that does a lot of the ground work and makes software developers into software librarians - a trend that the open source community has followed.
Move over Dewey Decimal System.
Simple for the user often translates into complex for the developer, depending on the requirements of whoever the software is being written for. TANSTAAFL. The more simple the outward appearance, the more likely the internals are complex - and increasingly, this seems less intuitive for people.
Complexity costs money. Making complexity look simple costs more. There is cost and there is value. A simple outward facing site like Google masks a complexity that costs a lot but clearly has a value greater than the cost.
The focus should be on value and simplicity or making complex processes appear simple - and keeping any complexity within budget. If that budget is 0, don't expect a lot of complexity.
Remember - users want simplicity or, better, they don't want complexity. Making your website or software project appear simple is the rub.
Image at top left by Martin LaBar (going on hiatus), made available under this Creative Commons License.
Note: As an experiment, I've turned off links to social networks and only allow registered users to comment here. This is an exercise in simplicity; discussions will happen on social networking sites. I've noted the trend; people don't comment as much on sites unless they're spambots. After reviewing statistics after a month, I'll revisit this.