Writing software is an art form. As much as it relies on engineering and science, at its heart, it is a creative pursuit.
"The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by the exertion of the imagination."
– Fred Brooks, The Mythical Man Month
Unfortunately, programming seems to be an art form that lends itself to unfinished work. We build castles in the air, but we rarely allow others to visit. We take comfort in our open projects and their obscurity. Sometimes, it can be more exciting to be working than to have worked.
But, real artists ship and shipping is a conscious decision. Software does not ship itself. No one is going to discover your nearly-finished bug tracker 100 years after your death while buying your MacBook at a yard sale, launch it, and give you credit. Ship it while you're alive.
We get trapped by the idea that our work can be better. That more time and work will inevitably yield better results. Of course this is true, but it will always be true. It will never be finished, but it might already be mostly finished.
"You guys have been working on this stuff for months now, another couple weeks isn't going to make that much of a difference. You may as well get it over with. Just make it as good as you can."
– Steve Jobs, Real Artists Ship
So, real artists ship. This is not a new idea. What I would like to propose is that shipping is a habit. Real artists are habitually shipping, they cannot stop shipping, and they understand the value of shipping. Shipping, publishing, putting-private-work-into-the-public-space frees it from the tight grasp of its creator. Art becomes real at the moment that it ships, the moment that a second person sees it.
It is a cycle that refreshes itself. Constructive feedback, or praise, or disagreement are all seeds of creativity's more practical cousin: iteration.
Software, like many art forms, is perpetually unfinished. Pushing it out the door is the first step in the iteration process. And iteration is the only path to great work. Second drafts are refinements of first drafts.
Exposing our efforts into public light is adicting. We start to value our public works more than our private ones, not for their notoriety, but for their temporary completeness. For the idea that they were, in some imperfect moment, finished. We ship to move our work off of the stack, to make room in our minds and our lives for new ideas.
"Shipping is the collision between your work and the outside world."
– Seth Godin, Linchpin
So, ship something today. Launch something that is useful, but isn't perfect. Publicize something that you're only half-happy with. Show someone else a part of yourself that you aren't particularly impressed with. The goal should be to return to that work a year later and be amused by its amateurism, for having grown. Or to return to that work tomorrow, driven to improve it.
Much scarier than any result of shipping, is the idea that not shipping can become a habit too. We can be seduced by the comfort of our own minds and our own opinions of the work that we do. Our own feedback is overly accommodating, we are made partial by our own memories of how difficult it can be to create something. We can be scared to invite feedback that isn't colored by the struggle of creation. But, while fear is a poor choice of motivator to stay put, it's a fantastic reason to move forward.
There are very few acts more human than to make something. And when we share those things with others, we get to grow in ways that we didn't plan.
Keep building your castles in the air, but get in the habit of publishing the address.