User-Centric Software Design

This is a long due blog post. I wrote it before the series of blog posts on Usable Software Design (first, second and third) but due to a strange series of events (including totally forgetting that I wrote it) is published after them. In a sense, the ideas from this blog post are superseded by the series on Usable Software Design. In many other senses, it contains a ton of background information useful to people who want to get a better grasp of Usable Software Design.

My recent blog post, “The craftsman I would like to be” generated interesting reactions both from people I know and from complete strangers. I’m glad to see that the software craftsmanship communities have reached the point where we can discuss such matters of high importance for the movement and for members such as myself.

I have to admit that I expected a bit of controversy when writing this post. After all, it’s still unclear in my mind and I’m proposing certain things that I know are impossible. That’s the point of an ideal, after all.

The Controversy

What I didn’t expect was the amount of controversy met by my views on software design. Here’s the story.

I proposed the topic called “What is good software design?” at the fishbowl session at SoCraTes UK, and I was lucky to have it picked by the majority of the participants. The discussion was very interesting and unexpected. Instead of talking about the things you would consider about software design (SOLID principles, design patterns, differences between the OO and functional paradigms etc), the discussion drifted towards the humanistic point of view on design.

“When is the last time you saw a software design that was not only useful, but amused you?”* was the (I assume) intentionally provocative statement that sparked the discussion. Continue reading “User-Centric Software Design”