Daniel Irvine on building software
Craft = Art + Skill
30 March 2015
This year I’ve given a few talks on software craftsmanship to a variety of audiences, and at each I’ve presented the following equation:
Craft = Art + Skill
I wrote this equation to describe how I perceive my own craftsmanship. I’m motivated by the ideal of beautiful software: software that we can look at with awe and inspiration, that people can use with joy and feel good about using. To me, this is art. Yet craft is more than art. It’s applying disciplined practices—such as test-driven development, refactoring mercilessly and performing daily katas—that increase our skill at building software in a professional manner.
Some people “get it”, some people don’t
A few people have told me just how much this equation speaks to them. It accurately portrays the way they feel about software. They get excited because they’ve never heard software development described as art! But when they see that word, they realise that they are artists and they feel proud that I’m recognising it.
I’ve also heard people say that they don’t like it. They do not identify as artists. They feel that they are solving business problems and that they are mathematicians, developers and engineers but absolutely not artists. This is a valid point of view, especially for those of us who are consultants or contractors because our clients would balk at the idea of paying us to be artists.
A synonym of craftsman is artisan
There is a strange duality here of art versus professionalism. On the one hand, we want to build systems with finesse. On the other hand, we must build systems that support plain-old business needs, many of which are often mundane. So how can software that supports business needs be considered art? And furthermore, why would we want business software to even be considered artistic?
For the sake of argument, let’s replace the adjective artistic with elegant. Elegance is a large factor when valuing any work of art. And surely in a competitive marketplace, elegant businesses are the ones that succeed most. Think of Apple, Ikea, Prada, Toyota, Instagram. Here are companies that are generally perceived as elegant and producing elegant products. Can you imagine these companies having inelegant software systems? No? They might do, but I’d wager that they don’t. I believe that elegant companies breed elegant software, and perhaps even the opposite is true: elegant software breeds elegant business.
Craftsmen pursue elegance. A software craftsman will build not just a system that supports your business but also a system that betters your business.
I’m not an artist, but I create works with the same love and care that an artist would. The people who hire me—my clients—hire me because they believe that their business will be at an advantage if they build beautiful, elegant, artistic software. That is the meaning of software craftsmanship.