Andy Wardley with Yo-Yo
Picture by Julian Cash

Form and Function

I like to think of myself as a software architect. That's really just another fancy term for software engineer or even computer programmer (and I've never really been one to take much notice of fancy job titles anyway). However it is a convenient label, a meme if you like, that helps me to think in a more positive way when I go about writing a piece of software.

Although computing is more commonly regarded of as a scientific or engineering discipline, I prefer to think of it as more of a creative pursuit. Good software must be designed like any other ergonomic product with a balance of form and function. Above all it should function correctly, but it should also work efficiently, be easy to use, and aesthetically pleasing. In that sense it is rather like designing a kite. Make it look nice, but above all, make sure it flies.

So for me, the ultimate goal of any design is to achieve elegant simplicity. This is summed up nicely in one of my favourite essays on the psychology of software engineering and creative thinking in general, The Programmer's Stone.

Great thinkers are mappers. They rarely proceed by erecting edifices of great conceptual complexity. Rather they show us how to see the world in a simpler way.
-- Alan G Carter and Colston Sanger