Computer Programming as an Art (1974) [pdf]
awards.acm.org
awards.acm.org
When we apply our own prejudices to "reform" someone else's taste, we may be unconsciously denying him some entirely legitimate pleasure. That's why I don't condemn a lot of things programmers do, even though I would never enjoy doing them myself. The important thing is that they are creating something they feel is beautiful.
I want to address my closing remarks to the system programmers and the machine designers who produce the systems that the rest of us must work with. Please, give us tools that are a pleasure to use, especially for our routine assignments, instead of providing something we have to fight with. Please, give us tools that encourage us to write better programs, by enhancing our pleasure when we do so.
Since JavaScript vs. TypeScript vs. Dart are on my mind, I just want to mention that I have little complaint with JavaScript as a language, mostly with the tooling. My style is to shape and rework a program until I feel it is both correct and elegant, by my taste. Automatic error checking, refactoring and componentization are important to me. When those things are missing, I'm wasting time doing it manually and feel frustrated that I shouldn't have to do this, like building a house with a hammer and a hand saw when I could be using a nail gun and a power saw. I'm not in it for the joy of hammering and nailing, I'm in it to build a nice house.
Note to Dart developers: forget about the advanced language features. Those can wait to version 1.1. Just ship 1.0 as a more pleasurable way to write JavaScript. That's how I'm using it and I suspect this will be attractive to a lot of frustrated JavaScript developers. The evolution of C# took a decade. You don't need to do it all at once. I'm guessing the constant changes to the language are frustrating your tool developers.
We shouldn't live in the lap of luxury all the time, since that tends to make us lethargic. The art of tackling miniproblems with all our energy will sharpen our talents for the real problems, and the experience will help us to get more pleasure from our accomplishments on less restricted equipment.
How might this impact the teams of programmers around the world? In a fine art like playing an instrument as part of a symphony, how do you balance a "style" that you feel is beautiful with other programmers who might not feel the same way you do?
Is it unhealthy to spend your days entrenched in code you find "bad", that is to say, code you don't feel is beautiful? Does it stunt your own sense of taste and style?