The perception of programming
rfw.posterous.com
rfw.posterous.com
The only difference is that music needs to always stand on its own, so in that case he is always making a mistake. In code, sometimes you are overcooking, but often times you are just reflecting a growing understanding of the big picture. In this case the code may end up quite smelly for very good reason, only to be discovered when the next developer comes along to refactor and only realizes the ingenuity of the original code hours later.
Programs are like architecture ... each program is like a unique building. But in building, the architect designs and the workmen construct. Too often programs are constructed without design ... many times because you don't really understand the problem until you've worked at it. At which time, like musicians or writers, you have to be willing to throw away the first draft and start all over - this time with a solid architecture.
In fact this is what I try to encourage in my fellow team mates. You shouldn't choose a particular design without knowing exactly why it is the better choice over any other.
I can work on something for hours and hours and love it. And then I come back an hour later and finally see all of the problems.