I am a passionate software developer, making it both my job and my hobby. I sometimes wonder what makes good software good, and how it is compared to other engineering fields like mechanical engineering, chemical engineering or electrical engineering (since I know people on these fields), and I have always felt that writing code was akin to an art, because while there are many way to solve common software development problems, there are sometime solutions that are “beautiful” or “elegant”, and some times only experienced developers seem to see the beauty in the solution.
But reading Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman the following quote (attributed to Richard Stallman) from made a “click” in my mind:
I would describe programming as a craft, which is a kind of art, but not a fine art. Craft means making useful objects with perhaps decorative touches. Fine art means making things purely for their beauty.
So programming is “kind of an art”, but it also has a purpose (maybe except the Shakespeare Programming Language or other so-called esoteric programming languages). That was really enlightening. Thanks guys.