Humane interface

Martin Fowler has some neat things to say about humane interfaces... the basic idea being that you want interfaces that work the way you do instead of being minimal and complete. Fowler talks a bit about duck typing in Ruby as a sort of continuation of the earlier article.

Interesting. This banged around in my head for a bit until it found the corollary thought: design UI interfaces to be workflow based instead of feature based. As developers I think we naturally componentize and abstract away our systems into sets of features: save, save all, save as, delete, editing options, undo/redo, etc. The user doesn’t break up his or her system that way at all; the user thinks “I need to get X done quickly.” That’s a very different way of thinking.

And to apply that to coding? So that I can say wonderful things like “list.last” instead of “if (list.length > 0) { list.get(list.length – 1) } else { null }”? That’s fantastic.

Not to say that it’s without problems: more methods = more testing, of course… but since you’re using TDD you wrote the tests before you created those seventy-some-odd methods, right? Right.

Comments are closed.