July 16, 2014

The Last Job on Earth: Part IV

So, hopefully at this point I’ve established that computer programming and understanding the law and the legal process are somewhat similar.

And that understanding the legal process without tremendous amounts of specialized knowledge is incredibly difficult.

And hopefully I’ve convinced you that the claim that “Everyone can code” is far, far too simplistic, given the tremendous amount of domain knowledge involved.

But let’s add another claim:  programming is a form of art.    Sure, it’s a form of engineering.  But Stonehenge was also the output of engineering, and yet we recognize now that there is beauty and art involved in Stonehenge, not just engineering.   Even the Mona Lisa involved modest amounts of engineering:  the viscosity of the paint, the pressure of brush upon canvas, the manufacture of the canvas itself.   All of those things are engineering disciplines.   But the output was far more meaningful than the engineering involved.

When you start a software project, it is often an exceptionally wide-open field.  You may have some constraints, some requirements, but significant portions of the work to be done are undiscovered.

There’s an old story about how to create a statue of an elephant.  You take a block of stone, and you chip away everything that doesn’t look like an elephant.   That’s deceptively simple, isn’t it?   Really, the art isn’t in the chipping, it’s in the recognition that bits and pieces are starting to look like an elephant.     In many ways, building software is taking a big empty block of “all possible solutions”, chipping away to remove things we don’t want, adding more to fill in parts we do want, until there’s nothing left but the system we want (or the customers want).

Just like sculpture, software is a creative process.