« FIPA Specifications voted to Standard Status | Main | interface inheritance »

Simple gifts (part 2)

ClydeHatter.com: Simple gifts (part 2)

Simplicity is an elusive concept. Perhaps it depends on which end of the telescope you are looking through. Simplicity from the point of view of an end-user is usually purchased at the expense of complexity elsewhere in the system. So, if I purchase an application which allows me to create my website by dragging and dropping a collection of pretty icons, then you can be sure that the simplicity which is offered to me as an end-user is purchased at the cost of some serious complexity hidden deep in the bowels of the application. If I want to tweak the application in question in order to modify or extend its functionality, then it's going to be much harder than if I've coded the site myself in raw HTML. Every layer of abstraction which simplifies the task of the end-user, adds an extra level of complexity (or maybe opacity is a better word) to the maintenance of the application's back-end.

Perhaps getting a handle on simplicity is hard because we don't have a strong definition of what complexity is (even complexity theorists don't agree on what complexity is), so we can't even define simplicity in terms of what it isn't. Fwiw, two things provoke the word complexity in me:

- excess interactions between parts
- excess number of abstractions being revealed at any one time

ie, something whose behaviour remains unpredictable (outputs don't make sense from inputs) while revealing too much (irrelevent, noisy) information is complex. We need to be able to build models of things outside ourseleves and there's only so much platespinning we can do in our heads before we start getting confused.

No doubt this will wind up like the Spanish Inquisition sketch in Monty Python - 'There are two things that make for complexity, unpredictability and noise... and dissonance. Wait, there are three things make for complexity, unpredictability, noise, dissonance and...'

Yet a lot of what is understood as simplicity in computing is about moving the complexity around or sweeping it under the rug. I imagine the problem with many APIs is that they're the published equivalent of a workaround - they make systems more complex by doing a poor job of hiding parts that should have been either clarified or simply left alone.

I imagine there's a law of conservation of complexity for computing.

December 16, 2002 09:33 AM


Trackback Pings

TrackBack URL for this entry: