Sunday, October 31, 2010

The Practice and the Art

A funny thing happened on the way to the text editor the other day.  A Firefox update came in, and after the restart, there on the promo section, was an add-on called Morning Coffee.  Normally, I wouldn't take any notice, but this time the extension did something I was interested in.  It provides a way to organize the sites you visit on a daily basis by what day it is.  By coincidence, that is exactly what I had planned to work on for my first little Javascript project.  And that brings me to this quote written by Ville-Matias Heikkilä a.k.a. viznut/pwp:

"Programming is no longer a fashionable way of expressing creativity, as there is ready-made software easily available for almost any purpose."

Now he was writing specifically about the transformation of the demo scene from the 90s to today, but his sentiments have resonance with where I am today in the hobby aspect of my programming.  I suspect there are really only three reasons for programmers to program: you get paid to do it, you need a program that doesn't already exist, or simply the art of it.

As the personal computer's power and use grew, so to did the programs.  PC operating systems have evolved from being primarily overlays to a file system into multi-headed beasts that can deal with multiple CPUs with multiple execution paths, hundreds of programs running at the same time, astounding sets of peripherals, security concerns, and machines acting as multiple other machines, all supported by scores of utility programs.  Line editors became file editors and on to word processors which became office suites.  The programmers' world of compiler/linker/assembler now holds Integrated Development Environments, Virtual Machines, database integration, and more languages than you can shake a stick at, all with increasingly huge libraries of built-in capabilities.  In short, the world is bigger now.

The world is also smaller, because people along the line had the brilliant idea that these general purpose computing devices could also be used to facilitate rapid communication between groups of like interest.  And thus the Internet was born, in all of its Tower of Babel glory.  Now the entire world of programming is out there for anyone to discover and explore.  As with so many things, a good academic grounding will help, but it isn't strictly necessary.  (This was the lesson in Visual Basic's success.)  With the flood of brainpower brought on by the Internet, and the pressure to make bigger, better, more usable programs, the programming world changed.  The Waterfall became too tall for programmers to survive if they weren't sufficiently Agile.  Programming has become less about the art of creating code, and more about integration and the processes needed to handle the increased size and complexity.  Which brings me to another quote, this time from Shamus Young's post, Object Disoriented Programming.

"I program in C++ for a living. ...I've gotten fed up with this language and its cryptic aggravating bullshit."

Shamus rants about the frustration of using libraries in the post-Internet world.  In a time when programming has gone from using the LEGO bricks provided by the basic languages and libraries to create new things, to a world where you use your LEGO to connect other peoples creations together, is there still art?

Of course there is.  Heck, combining things in novel and interesting ways could very well be the very definition of creativity.  But time comes in short supply when you have a day job, and there are a great many things already done for you and ready to use.  So the question becomes, do we persevere down the rough path through the weeds ourselves, or do we hop onto the walkway our fellows built?  The answer becomes apparent when you decide which of the three categories of programmer you fall into for the particular task.  If you are being paid to do it, or you simply have a problem to solve, you evaluate whether using the pre-built stuff will help or hinder from a purely pragmatic stance.  If, poor soul, you are programming as an artist, it brings up one last quote:

I shall be telling this with a sigh
Somewhere ages and ages hence:
Two roads diverged in a wood, and I—
I took the one less traveled by,
And that has made all the difference.

No comments: