While we’re on the topic of appropriate analogies for software development, my homie Micah writes a post about how certain analogies fall short, and he compares writing software to being an artist.
He has some great insights into the idea that there is no such thing as “maintenance” in software, it is merely just another software development phase. But I have to respectfully disagree on his idea that perhaps we would do better to call ourselves software artists.
I disagree because of the image I get when I imagine the general archetype of the “true” artist. I often think of an artist as one who takes some tools and a medium, and creates the art that was there all along, but dying to get out. Now let’s try applying that to software. Do you really think there’s an ERP system in your keyboard dying to get out, if you’d only let it? Perhaps.
Also, the true artist does not create art for his or her audience. The artist creates art for the sake of art, the audience be damned! Now try telling that to your next client.
- Ummm… we were kind of hoping for a content management system. You wrote an RSS aggregator.
- Indeed I did! Isn’t it beautiful! It is my masterpiece. Client:
- Well we’re not paying. You:
- I wouldn’t expect such a simpleton as yourself to be able to truly appreciate such fine code.
I don’t know about you, but I’m not interested in living out the romantic image of the starving coder.
Rather, I think of writing code as being more like a DJ. You have your set of tools and existing code snippets (records) and until you’re a big name, you take requests. However, even if you’re a big name, you still read the audience as you play, refining the music choice, tweaking knobs and sliders here and there until you have the audience (your client) in a joyful frenzy on the dance floor.
Honestly though, I don’t think my DJ analogy is all that useful. Ultimately software development will mature to the point that it will not need an analogy, it will be understood for what it is. How many building engineers do you imagine lose sleep at night thinking about a proper analogy to their craft?
Wait, I got it! Building a skyscraper is like writing software!