I'm slowly working through Apprenticeship Patterns. Kind of a dry book, but it does have a few interesting concepts. One I particularly enjoyed was the "Craft over Art" pattern. The chapter opens with a quote from Richard Stallman: "I would describe programming as a craft, which is a kind of art, but not a fine art. Craft means making useful objects with perhaps decorative touches. Fine art means making things purely for their beauty."
It goes on with "As a craftsman you are primarily building something that serves the needs of others, not indulging in artistic expression. After all, there's no such thing as a starving craftsman. As our friend Laurent Bossavit put it: 'For a craftsman to starve is a failure; he's supposed to earn a living at his craft.'... If your desire to do beautiful work forces you out of professional software development and away from building useful things for real people, then you have left the craft."
"Part of the process of maturation encompassed by this pattern is developing the ability to sacrifice beauty in favor of utility if and when it becomes necessary."
I found this to be an incredibly accurate and valuable discussion. One of the most difficult balancing acts in programming is that between building what your customer needs, and building what you wish they needed, or even just what you want to build. Sometimes its hard to tell the difference between the two. Other times, you know the difference, but it pisses you off!
There is another balancing act that comes up a lot: that between the quality you WANT to build and the quality your user wants. This goes both ways, but generally we tend to want to build at a higher quality than our users think they want. "When using this pattern you will have to balance your customer's desire for the immediate resolution of their problem with the internal standards that make you a craftsman." This is especially important for people influenced by the craftsmanship movement. Sometimes craftsmanship comes across as a pursuit for perfection over a pursuit for utility.
For me, this Craft over Art pattern was a good reminder to stay focused on delivering high quality utility for my users.
now, what is craft for one, may look like art to others
ReplyDelete