*Found this through some guy who linked to some guy who linked to it.
http://maetl.net/code-is-not-inevitable
(...)
"The distinction between good code and crap code is essentially literary. Good code emerges from an intuitive ability to separate structure from intention – to compose minimalist flows of well formed cues that balance direct statements of logic with modular flexibility. Holistic, pattern based thinking is important, treating the locality of a single statement in the context of its position in a larger system, and also understanding that this position is fluid, and may change as the system changes and grows.
"In many situations, I have been tasked with clean-up jobs that required me to descend into the middle of large web applications to tidy up and fix the malformed legacy left by previous developers. Because of this, I have a fair knowledge of the quality gradient that spans messy code, bad code, and code that can only be described as project-wrecking insanity.
"After going through this a few times, I started noticing a single quality shared by all the coders who were producing the most destructive output: they seemed to have a compulsive fear of changing code after it was written. The most visible symptom of this cognitive deficiency is the irrational avoidance of deletion, preferring instead to leave scattered lines of redundant code commented out, perhaps because of a thought that they ‘might need it later’.
"All kinds of weirdness gets left behind in commented out code, and none of it gives off a positive impression of those responsible. I learned that any time I saw this symptom spread through a project, I would have to deal with the worst excesses of architectural horror and cognitive debility. ((("Gothic High-Tech.")))
"I have come to believe that the vocabulary of technology is not sufficient to understand situations like these. Primarily, spaghetti code is a literary failing.
"Through my observations of the developers responsible for these wrecks — they often turned out to be poor prose writers and some were very arrogant about their coding abilities. I believe the core skill that these cowboys lack is that of editing – an instinctive drive towards pruning and tweaking that all good writers know is one of the most important components of literary creation.
"Good programming can be taught, but it is incredibly difficult to master. It seems that an understanding of the pain caused by bad programming is necessary to effectively grasp why certain techniques are important.
"If crap code is inevitable, it may well be because code is text, and the skills needed to cultivate, shape, and edit text are not well understood by a vast number of people who become programmers.
"Indeed, one of the main difficulties of programming is learning how to balance the visual, structural, process oriented thinking required to design software with the written peculiarities of a programming language. In other words, how to balance what you know in your head about how the software should work with the need to create this architecture out of a constrained text syntax.
"My response to the inevitability of crap code is that perhaps we ought to reconsider the idea that software be built from code at all. (((Oh really. You don't say.)))
"If average developers struggle so much with the text based qualities of code, and we accept that the cathedral of ‘high literature’ has been demolished by a combination of Google searches and cut & paste splurges, then perhaps we should question whether the entire concept of programming in text syntax is sufficient for the future of software development?
"There are, of course, alternatives to text syntax...."