I wanted to share my thoughts on the fine line between art and software design.

Is software development an engineering discipline?
Is it art? Is it more like a craft?

Software is what I call an invisible art – the customers, who ultimately pay for the work, typically never get to see the actual code. If you hire an illustrator, you can see his portfolio and judge his work, or if you hire a musician, you can listen to his compositions and performances.

People who are only users of software frequently fail to appreciate just how very hard it is to write code. The art of programming can only be experienced indirectly, by the performance of the software it describes.  

Great software engineers don’t see programming as simply a mechanical process, but an organic one. It’s both a science and an art – two aspects that nicely complement each other. To be a truly great programmer, you need years of painstaking practice, where you constantly challenge yourself into doing things you’re unfamiliar with – just like other forms of art.

You might not think that programmers are artists, but programming is an extremely creative profession. It’s logic based creativity.

John Romero

Mural painting, for instance, takes a special eye. In software development, you may only ever see the one little piece of detail that you’re working on. If you watch mural painters up close, it’s quite difficult to discern that the splash of paint they’re working on is actually someone’s hand, or eyeball. If you can’t see the big picture, you won’t be able to see how you fit in.

When you can create awe-inspiring work with little more than the exertion of the imagination – it’s fair to assume, you’ve crossed the chasm.