29 September 2010

The Building Blocks of Software Pleasure

I found Aarron Walter's software pleasure pyramid in Esther Derby's post Are We Aiming Too Low? Aarron's sketch is compelling for its simplicity, and for what it says about past and future agile software development.
Software Pleasure Pyramid
David Hussman pointed out that ancient Egyptians practiced evolutionary design with improvements with each iteration.
"The first pyramids were merely burial mounds. The next version was the step pyramid (Djoser's tomb) and the next version the "bent" pyramid (a design in rock that they had to refactor during construction. These were all the forerunners to the Giza structures. It was a progression of small, simple structures which evolved based on the learning (and failures) from the last iteration."
~David Hussman
Most of the developers I program with day-to-day concentrate on functional & reliable. And, on balance, we're proficient, if not rock stars. Many of us have benefited from wisdom from the Agile & XP communities. Most of us use, in one way or another, some or all of the following:
  • granular tasking, 
  • emergent design,
  • programmer's idioms like One method, One purpose
  • test-driven development, and 
  • continuous integration.
The better craftsmen I have worked with, young coders like Eric Brandes, consider usability as part of the craft and it shows in their work.

I yearn for the pleasurable in software; software that's a pleasure to use.

Listening to Alan Cooper, the progress to the pleasure plateau is going to require a new level of professional craftsmanship that runs the gamut from simply functional and reliable to sublime user experience.
We are the experts, we are the grownups, and the users are the 5-year old kids. No you don't give them ice cream & candy but...realize they're hungry...so you get the broccoli and liver.
~Alan Cooper
We've learned from evolutionary science that successful organisms often take advantage of the desires of other species. Apples, in the European-centric frontier of North America, appealed to the human desire for sweetness (and for intoxication in the form of hard cider), so humans cultivated the apple for the properties they desired. Or was it the apple cultivating humans?
Part of achieving the level of pleasurable in our software is to understand human behavior and desires.
How do we get to the pleasure plateau in software?

Like the emergent design that unfolded with the incremental construction of ancient pyramids, the Agile software community continues to learn and grow. Future viability of the community rests on integrating interaction design and adopting some important principles of the Lean Startup community like
Integrating product hypothesis testing into iterative development to create a tighter feedback loop between paying customers and a money-generating (pleasure) applications.
The pyramid is an instructive metaphor because software pleasure rests on the stability of the underlying building blocks of functionality, reliability, and usability.