Archive for December, 2009

Growing Object-Oriented Software - In Ruby!

I’m working through Steve Freeman and Nat Pryce’s Growing Object-Oriented Software, Guided by Tests, translating their Java into Ruby. I’ve put it up as a Github project if you’d like to follow along.

In praise of spiffy GUIs

Apps have business logic that hides behind a GUI. As a command-line person and a former tester who was always thwarted by the GUI when I wanted to test the business logic, I was always suspicious of GUIs. That’s perhaps the reason I once argued with Nathaniel Talbott that GUIs should be crude until a bunch of features were done. My argument was that (for most applications), the business logic is where the value comes from, so you should spend your money there first.

I now suspect I was wrong, for these reasons:

  • When the users and those who pay for the software are delighted by it, everyone benefits. For example, they become much more willing to spend time with the team. Most people won’t be delighted by even the greatest feature that’s hidden behind a cruddy GUI. Delight is an emotion: you can’t just turn it on with intellectual appreciation.

  • The team needs to be enthused by the app too. Visual and kinesthetic aesthetics contribute to that.

  • I thought that good business logic could support whatever GUI was needed. That is, I fell once more into the heresy of ideal forms and phase-ist thinking: our job as technical people was to find some perfect abstractions, and any old GUI could be layered onto that.

    I now believe that the presentation and content are much more intertwingled. It’s silly, really – I’ve been a successful speaker since about 1995, and I certainly knew that was true of presentations. Somehow I didn’t suspect it was true of software.