White Space in my Software
And camel case in my title. Sort of.
Anyway, did I mention how much I loved this book ? Well, it lead me to think about the analogy between software design and graphical design. Granted, the analogies may work better with architecture or civil engineering but I just read a book on graphical design. The different thoughts that reading this book inspired me won’t fit in a single post, so I will transform this in a series. Obviously, as with most analogies, it is only a trigger for reflections, not a perfect parallel of activities.
My reflections stem from four remarks central to that book:
- empty space has a form given by the shapes it contains,
- the design is meant to efficiently lead the reader to meaning (actually to meaning relevant to the reader himself),
- the design is the result of successive refinements that aim at eliminating noise (or useless information),
- the text layout must be adapted to the human brain’s capabilities.
After this lengthy intoduction, this first post will entirely focus on the empty space, hence the title.
Thinking about the empty space means making a conscious decision of what to include and exclude in the design rather than throwing every possible idea in the design. I believe it applies at each stage of the software design process. It applies when selecting the features (hence the feel of quality of many of Apple’s softwares). It applies to the definition of classes (when you define a clear and simple interface). It applies to the user interfaces. The only place where it happens almost naturally is the code itself (who adds useless statements honestly ?). All the other places require conscious and sometimes painful choices.
Ever noticed how early versions of a framework are simple and a breeze to use but then, as years pass and user base extends, they get bloated and a pain ? Ever noticed the same of softwares (office anyone) ? All that to say that I believe that simplicity and clarity are great design qualities in software and that a good way to approach it is to keep thinking about the empty space you are filling with each new feature, new button and new method.
I also believe that both agile methodologies and TDD help keep the design simple and readable. Agile methodologies by putting in plain view each additional feature, allowing to remove the unecessary ones before they are integrated in the design. TDD (or BDD) because it appeals to the lazyness of the developper to make simplicity a top priority.
Unfortunately, in software as in life, white space tends to get filled if you are not careful and constantly prune. Which could bring a useful gardening analogy… another day maybe.
Next post: Pointers in my Software.
October 18th, 2007 at 4:49 am
[...] White Space in my Software [...]
October 19th, 2007 at 4:43 pm
This is very interesting to me also.
My challenge is that I tend to overflow my (web/excel) page with content.
On the plus side, I do use the white space, page structure, and small amounts subtle coloring to guide the eye to the most critical information.
If there is a way to add small images to this response, I would love to expand using some visual examples…
October 23rd, 2007 at 5:00 am
[...] Agile « White Space in my Software [...]