Craft vs. Delivery in Software Development
As a software engineer I love well crafted software. Carefully chosen abstractions, effective use of patterns, thorough test coverage, all increase business value. Craft takes time and requires skill and proper tools and resources. Unfortunately, I frequently find myself frustrated that business partners see value differently and care only about delivering a fixed set of features quickly.
While exploring Cloud Foundry last week I came across a video clip featuring a presentation by Jonathan Murray, EVP and Chief Technology Officer at Warner Music Group. One quote from that video clip (at about 14:30) really stood out to me. He had a slide entitled “Building an IT Service Factory”, which led to a comment about software as a craft:
“Organizations don’t give a rats ass about craft. What they care about is delivery.”
In his comments that follow, he does acknowledge that craft is necessary and brings value, but that there is a time and place for a factory. OS development, deployment, reliability are craft items. Building applications to meet an immediate business need must be delivered on a fixed time schedule.
Identifying the difference between craft and just delivering doesn’t strike me as being as simple as he makes it sound in his presentation, but I can buy into his argument that there’s a time and place to just get something out the door. If the platform on which you develop has been well crafted, then projects requiring fast delivery are much more likely to succeed.
Is Cloud Foundry that platform? It may be too early to say, but it’s one of a few that’s pushing in the right direction for highly available, secure, elastic capacity applications.