Thursday, February 17, 2005
Craftsmanship
I am slowly making my way through Joel On Software's complete archive. This is a fairly large archive, and one might wonder why I am putting myself through this. As a matter of fact, I'm not "putting myself through" anything; I'm having a jolly good time doing it because the articles are so insightful and entertaining. Many of the principles that Bruce's Company will be founded on will simply be links to Joel's archive.
Today I read his article on craftsmanship. The gist of it is, craftsmanship is expensive, but worth it. In certain cases. The classic Joelism, where he likens an aspect of software development to some real-world case, occurs here:
You might think that his point is that craftsmanship is not worth it. On the contrary, he thinks that it is worth it, because that's how you differentiate your product from competitors'. Differentiation from the competition is hard, therefore it should not surprise us that craftsmanship that differentiates is hard.
The company that I would most like to work for in the world is actually not Joel's (Fog Creek), or Google, or Microsoft, but Pixar. Every single thing they have ever produced, going clear back to the 80's, has been of a ridiculously high quality. And I credit one man above all for that achievement: John Lasseter. One thing that Lasseter likes to say around the Pixar offices is, "We sand the underside of the shelves." In other words, in their work, they take care of every last detail, even the stuff that almost nobody is ever going to see. That careful attention to detail permeates the whole process, the whole company, and it results in the fantastic movies that just blow away everyone else in Hollywood. (Okay, it's not the only reason, but it's a big one.)
Now. The astute reader might be saying, "Ah, Bruce, but that's exactly what Alan was doing when he was bugging you about the tiny little details in the app you were working on that you complained about so much." But there's a fundamental difference: it was an internal app. And even Joel, after his big speech on craftsmanship, acknowledges this difference in his concluding paragraph:
When I make software that faces the public, and I really, really care about its success, I will sand the undersides of its shelves. Some might say that if you sand the undersides of your internal apps, then that attitude will transfer over to your public-facing apps. I think there's something to be said for that, but I think there's more to be said for using time efficiently, and, after all, I know when I'm working on something internal and when I'm not, and I can make the leap.
Today I read his article on craftsmanship. The gist of it is, craftsmanship is expensive, but worth it. In certain cases. The classic Joelism, where he likens an aspect of software development to some real-world case, occurs here:
The moral of the story is sometimes fixing a 1% defect takes 500% effort. This is not unique to software, no sirree, now that I'm managing all these construction projects I can tell you that. Last week, finally, our contractor finally put the finishing touches on the new Fog Creek offices. This consisted of installing shiny blue acrylic on the front doors, surrounded by aluminium trim with a screw every 20 cm. If you look closely at the picture, the aluminium trim goes all the way around each door. Where the doors meet, there are two pieces of vertical trim right next to each other. You can't tell this from the picture, but the screws in the middle strips are almost but not exactly lined up. They are, maybe, 2 millimeters off. The carpenter working on this measured carefully, but he was installing the trim while the doors were on the ground, not mounted in place, and when the doors were mounted, "oops," it became clear that the screws were not exactly lined up.
This is probably not that uncommon; there are lots of screws in our office that don't line up perfectly. The problem is that fixing this once the holes are drilled would be ridiculously expensive. Since the correct placement for the screws is only a couple of millimeters away, you can't just drill new holes in the door; you'd probably have to replace the whole door. It's just not worth it. Another case where fixing a 1% defect takes 500% effort, and it explains why so many artifacts in our world are 99% good, not 100% good. (Our architect never stops raving about some really, really expensive house in Arizona where every screw lined up.)
You might think that his point is that craftsmanship is not worth it. On the contrary, he thinks that it is worth it, because that's how you differentiate your product from competitors'. Differentiation from the competition is hard, therefore it should not surprise us that craftsmanship that differentiates is hard.
The company that I would most like to work for in the world is actually not Joel's (Fog Creek), or Google, or Microsoft, but Pixar. Every single thing they have ever produced, going clear back to the 80's, has been of a ridiculously high quality. And I credit one man above all for that achievement: John Lasseter. One thing that Lasseter likes to say around the Pixar offices is, "We sand the underside of the shelves." In other words, in their work, they take care of every last detail, even the stuff that almost nobody is ever going to see. That careful attention to detail permeates the whole process, the whole company, and it results in the fantastic movies that just blow away everyone else in Hollywood. (Okay, it's not the only reason, but it's a big one.)
Now. The astute reader might be saying, "Ah, Bruce, but that's exactly what Alan was doing when he was bugging you about the tiny little details in the app you were working on that you complained about so much." But there's a fundamental difference: it was an internal app. And even Joel, after his big speech on craftsmanship, acknowledges this difference in his concluding paragraph:
Craftsmanship is, of course, incredibly expensive. The only way you can afford it is when you are developing software for a mass audience. Sorry, but internal HR applications developed at insurance companies are never going to reach this level of craftsmanship because there simply aren't enough users to spread the extra cost out. For a shrinkwrapped software company, though, this level of craftsmanship is precisely what delights users and provides longstanding competitive advantage, so I'll take the time and do it right. Bear with me.
When I make software that faces the public, and I really, really care about its success, I will sand the undersides of its shelves. Some might say that if you sand the undersides of your internal apps, then that attitude will transfer over to your public-facing apps. I think there's something to be said for that, but I think there's more to be said for using time efficiently, and, after all, I know when I'm working on something internal and when I'm not, and I can make the leap.