in reply to (OT) Programming as a craft
Programming can be looked upon with multiple views. It depends on the person who is doing the programming, as well as the motivation that person uses when doing the programming.
There are several ways to look at what 'programming' is. First off, it can be seen as nothing more than getting a computer to do what you want: quick and dirty is all that counts. Just get the job done and then forget it. You might call this the 'programming job description'. On the other side of the fence, you might see programming as an artform. It is possible to spend a great deal of time dealing with one software 'problem', sorting through various solutions before choosing the one that fits the situation best. This might be something we could call the 'programming art'.
When I think of programming as an artform/craft, the first thing that comes to mind is code that exists that does not really have practical real-world use. Obfuscation for example, cannot really be looked upon as part of a job description. It is a hobby and most definitely a form of art. Golfing has recently become a bigger thing as well. Taking one task and writing the version containing the least number of keystrokes to execute. Golf tends to start with an 'ideal' or realistic version that you might see in actual production code. As it progresses, the code evolves into obfuscated code.
This whole idea of programming being an artform really does not just exist within the IT industry. Any job can be transformed into a crafty job, it all depends on the individual or team involved. Those who see their jobs as an art rather than just a job are (IMO) most likely those who have been working the area for quite some time. They've learned to evolve beyond the find-the-fast-solution-and-move-on methodology to a higher level of work ethic.
Oh, not to mention that an artsy job is much more fun and pleasant than a boring do-the-job type of job :)