|
A regular readers know, I'm fascinated by our psychological quirks. Today's fun behavior involves insisting everyone follow some practice or policy which, though having some degree of cost, delivers no value which can be explained. Forgive me, as I will be resorting to software development geekery in the following two examples. (Though perhaps TCG should be right at home! ;-))
At my first job after college, one of my co-workers insisted we should create a tag to mark all the "head" revisions, so that every revision which was at the head would be tagged, by us, as being in the "at the head" tag. (Remember again that all source control systems already can give you the latest and greatest version of your code. If they couldn't, they'd be of no use whatsoever.) He proposed that this should happen every night. I pointed out that at best the tag would be redundant, at worst it would be in error. (Such as during the day: after checking in changes the "head" tag would still be marking the previous, now non-head revisions.) Nobody would ever use it for anything, as they'd always want to be sure they were working from the head, and would thus use the source code control system's (guaranteed) method of referring to the latest revisions. (And never mind the work required needed to create a tool which would implement this policy.) In response, he insisted it would be a "more organized" way of doing things. Organized how? He couldn't explain further: he simply went back to saying it was "more organized", in some unspecified way. It was an "improvement" which delivered no benefit. And what astounded me was that (a) he couldn't see that he was unable to name a single benefit, and (b) that he still expected everyone else to implement the policy he demanded. His unelucidated feeling that it was somehow "more organized" should have been enough for the rest of us, I suppose. Over the years, I have started to mentally refer to such "improvements" as "more betterer", the sort of claim an incoherent salesman might make when it can't think of any other reason we should be impressed. ("These go to eleven!")
Annotations and Unit Tests: In Java, you can now tag your software with "annotations" -- custom "tags" which carry extra information. This can be useful in some circumstances, such as when you're trying to store data to a database. But more often, people just get impressed with the capability itself, whether it delivers any benefit or not. A popular software-test-running product, called "JUnit" recently introduced annotations. In the ("bad") old days, you marked a method as being a test by starting it's name with "test". In the ("good") new days, you now can name it anything, and put the annotation "@Test" right before it. A co-worker of mine was tremendously excited by this "improvement". "Why is this an improvement?" was my usual sceptical query. "Well, you can remove the @Test in order to make it skip over that unit test." I pointed out you could also have renamed "testXYZ" to something else, like "xtestXYZ", or simply commented the whole method out. Predictable response? It was still, somehow, a more organized way of doing things. And we should all hurry to adopt this latest version. Sigh.
I suspect this predilection to be impressed by mindless whiz-bangery is a hazard of my particular industry. As a kid, I was drawn to anything with lots of lights and dials, and I suspect many similarly "technical" people might have similar tendencies. Music keyboard manufacturers ("Futuristic, high-quality industrial design!") and sci-fi set-designers know this full well. (How many Star Trek computers were just boxes with Christmas lights and a squeaky Majel Barret voice? Whoever designed the UI on those puppies should have been punished severely.) In those areas, it's harmless or even fun, but it's an irrational tendency which costs my industry -- and you, as our consumers -- tremendously. There's nothing wrong with that joy of techno-whizziness, but it's also important to grow up and ask hard questions, not just respond to our emotions and a vague background conviction that more "technology" (or more government) is always better. I think your earlier problem with SCC system was the corn-cob problem, where the guy felt he had to contribute something, and useful code was just too much work... I suspect about half of the drive for EJBs arises from this ("I have to put this on my resume!") but this guy was quite sincere about it. He went on about it for years, and was doing real programming work at the same time.
There are equally weird things going on in the VB world (and J++ was initially a pretty strange beast) but you probably don't hear about them as much. They're more obscure. I can't tell you the number of times I've heard MS was releasing the end-all be-all new programming technology or framework. Java's just hotter, so there's more innovation, more publicity -- and yes, more stupidity.
Sad and hilarious, isn't it? I worked with a guy who apparently couldn't help but say "POJO" every ninth word. The correct word is "object". I think the problem is that EJBs were such a detour (and they utterly defeated OOPishness) -- and so many non-talented people have entered the profession -- that most "developers" have never learned (or have forgotten) the basics. It's like the current fever for IOC. IOC is great: why should every object know about the whole world? But you don't need a complicated tool like Spring (or even a simpler one, like Guice) to take advantage of it. You just need constructors and setter-methods. It's not all that tricky. But people are forever pushing: "How come we're not using Spring?" (Because you can wire it together yourself in a few lines of code, that's why. And XML doesn't catch syntax errors. Geez.)
Yes indeed. Long live COBOL! (Oooops? Did I say that? My bad. ;-)) Just kidding. I used C back in the days when it was a hot language. Rather than having incompetent developers push for meaningless toys, you had incompetent developers defacing memory and the heap in every cruel and horrifying way imaginable. And demanding to know why we weren't using "Hungarian" variable names. I'll take ignoring the meaningless toys, thanks. Posted by: Tim (Random Observations) on September 11, 2007 10:57 PM A popular software-test-running product, called "JUnit" recently introduced annotations. In the ("bad") old days, you marked a method as being a test by starting it's name with "test". In the ("good") new days, you now can name it anything, and put the annotation "@Test" right before it. It was still, somehow, a more organized way of doing things. And we should all hurry to adopt this latest version. Sigh. I'm not familiar with Java testing methods (other than simply writing out variables at certain points to check their states). I've only written some very simple programs, so I could be entirely off base here. Separating data into atomistic components seems a good heuristic to follow since it makes your code more adaptable to unforseen circumstances. Perhaps your friend had remembered the rule and forgotten the reason? Or perhaps your profession just attracts an inordinate number of aspies? Posted by: Ryan W. on September 11, 2007 11:28 PM Separating data into atomistic components seems a good heuristic to follow since it makes your code more adaptable to unforseen circumstances. The units of code don't change here. All that changes is that: void testXyz() { ... } Can now become: @Test void makeSureXyzWorks() { ... } (Read "..." as being identical in both cases.) That's it. A possible name change and an extra do-dad up front. Same exact chunking of functionality. (Caveat: there might be some other benefits to the new version of JUnit. I can think of one minor one. But this seemed to be the strong selling point from what I was hearing.)
I'm no expert, but it sounds like a lack of social skills might be helpful in preventing such silliness: as it seems a lot of desire is to do what all the other "cool" kids are doing. Perhaps we need a few more, instead? ;-) Posted by: Tim (Random Observations) on September 12, 2007 12:40 AM Just kidding. I used C back in the days when it was a hot language. Rather than having incompetent developers push for meaningless toys, you had incompetent developers defacing memory and the heap in every cruel and horrifying way imaginable. And demanding to know why we weren't using "Hungarian" variable names. Now you just have incompetent developers leaking memory everywhere, and arguing about EJBs vs. POJOs! :D I actually understand your objections though, fixing bad C code is kinda like editing a novel written by a schizophrenic. Java, at least, tends to encapsulate the madness better. ...Spring... ...Guice... ...IOC... And throw in GlassFish, and you have my big question: Who names this garbage? I'll take ignoring the meaningless toys, thanks. You have my vote on that too! Or perhaps your profession just attracts an inordinate number of aspies? My personal take on this came from an Onion headline*: "Most Self-Diagnosed Asperger Cases are Really Just A**holes!" I've been told that I have aspie like symptoms by people**, and it makes me believe even more in the Onion headline. * I think, I remember seeing it in print, but I can't find it online... ** Who don't actually know much about the disease, but use it as the cool new buzz-word/opressed minority of the day. Posted by: Michael Zappe on September 12, 2007 10:40 AM Who names this garbage? According to the experts at pleasegivememoreinformationifyouwouldthankyou.com, we're running out of legible words to use for product and domain names. But what would they know? Posted by: Tim (Random Observations) on September 13, 2007 01:09 AM That appears to be a dead link... ;-) One parallel which comes immediately to mind is the ordinary accessories with grand-sounding names that were so popular with car salesmen in the 50s and 60s. (For example, "Super Turbo-O-Matic Aerodynamic Styling" - i.e., the car has a 1cm lower front bumper. And it would cost a lot more than it was worth.) I think the Japanese have an art of creating apparently useful objects that turn out (on closer inspection) to be not that great - the solar-powered torch (flashlight), the double-headed toothbrush, the baby clothes with strands around the edges (so your baby can clean the house as it crawls around) - but I forget the name they have for it... In any case, thanks for a wonderfully amusing article. I need to show this article to some of my programmer friends; I'm sure they'll love it, too, and it's some more readers for Random Observations! ;-) -TCG Posted by: The Complete Geek on September 13, 2007 05:17 AM Add your two cents...
The comment rules will apply. Please post only once. |
Nice post! I don't know how many times I've seen this syndrome myself.
I think in my mind, I actually divide this into two syndromes. The "I must make a contribution" syndrome (aka corncob anti-pattern), and the "Whiz-bang" syndrome. I think your earlier problem with SCC system was the corn-cob problem, where the guy felt he had to contribute something, and useful code was just too much work.
The Whiz-bang syndrome is more of a juvenille love of features. "Hey look, it's different and cool!" I think these people belong in underground music scenes, not teams of programmers. I also like to refer to it as "Trade-magazine stupidity", since some of these people find the latest and greatest in a trade magazine and then say "HEY! We need this!" without demonstrating a compelling need.
One of the worst languages for that is Java. Ugh, the number of wierd useless 'innovations' that occur in the Java world is revolting.
Just as a funny, aside anecdote, I remember being in a bookstore and seeing a book that said "POJOs." Wanting to figure out what the latest and greatest buzz-word was, I had to look. The book was rather thick, and then it took some digging to figure out what they were talking about.
Then it hit me: POJO means Plain Old Java Object. I started laughing out loud in the middle of the store at the fact that a book on the order of 350-450 pages was sitting on the shelf with a new buzzword to spin the old technology.
I'm just glad that I get to use a language that's pretty much immune from trendiness. Heck, I think it has the opposite problem where useful things take a long time to get adopted! :-)
Posted by: Michael Zappe on September 11, 2007 10:53 AM