<$BlogRSDUrl$>

Wednesday, September 24, 2003

Programmers: Just quit now, we've got it all figured out. 

An unfortunate side-effect of bringing together any sufficiently large group of people is the development of a particular type of circular thinking. To wit: fashion. In this case I'm not talking about clothing; I'm speaking more about the generalized "style characteristic of the social elite" As in: "A man of fashion".

That definition comes close to capturing the essence of the concept, but fails to mention that fashion is frequently ridiculous, often stupid, always capricious, and rarely predictable. Ironically, fashionable ideas often start out as good ideas, which then have their outputs wired back through unpredictable channels till you can't see the original idea through the massive feedback noise.

It is almost always disastrous when the worlds of computer programming and fashion collide. Unfortunately, with fashion being an inevitable result of having people around, and with the population of computer programmers being increasingly composed of actual people, the frequency and violence of these collisions appears destined only to become worse.

If you need an example of the aftermath of one of these collisions, you need look no further than the hype surrounding the concept of design patterns. For those of you not up to the task of picking through the base material on the subject, I'll provide a summary. "Pattern-based" programming is a process through which:

Now this, of course, is incontrovertably a good idea, although step 3, unless put into the hands of a very skilled author tends to result in documents that are hard to read, and step 4 is, in my opinion, being done way too much. The sum of the wisdom in millions of written pages and trillions of blitted pixels on this subject, however, used to be more succinctly expressed with the phrase "Don't reinvent the wheel". Herein lies part of the problem, becuase in the world of software development, that phrase really needs to be refined to "Whenever possible and practical, don't reinvent the wheel". There are dozens of ways of solving any problem you might encounter, and the use of patterns ought really to be reserved for the ones that 1.) are known to be truly universal and 2.) have a really good solution, especially one that wouldn't occur intuitively to a reasonably competent person.

So the number of truly useful patterns, i.e. the number of patterns that your average concerned programmer ought to bother himself with knowing and using, is not only finite but finite and small. Someone really needs to tell these guys about this. Alistair Cockburn, call your office. Not every clever idea you have deserves to be turned into a pattern, and if you think it does, what you're really saying is "I'm so Goddamned much smarter than you that you really ought to code my way. Why are you bothering to think about that? I already did all the thinking for you. Oh, sorry, did I hit you with my brain? You have to watch out for that thing. It's so fucking big!".

And so we come to the point where fashion starts to matter, becuase the net effect of all of this pattern-mongering is to divide the world of programmers into the "experienced" (elite) members and, well, everyone else. The nature of homo sapiens is to not want to be in that second group. The ensuing rush by the luminaries in the field to maintain their elite status resulted in a torrent of theorizing that, while having started out sensible, quickly progressed through ambitious, grandiose(PDF), and downright silly. By the time you're publishing a manifesto, reasonable people may conclude that you're taking yourself a bit too seriously.

I'll bet there's a whole lot less white-papering going on in Bangalore. Coincidence?



Comments:

Post a Comment
This page is powered by Blogger. Isn't yours?