25 June 2013

The Wall of Shame

Once again, a javaWorld article on the silliness of "coding". Fifteen reasons things never get done. I'll not go through the list, you can read that much yourself. But a couple of the points impel me to muse.

3, productivity:
Or if lines of code are counted, the programmer who could solve the problem with 10 lines of code suddenly decides that 5,000 lines of code will be more flexible or feature-compliant -- anything to add 5,000 lines to their total.

Finding such a statement from a java site is really funny. The java-istas of my acquaintance always, but always, go for the 5,000 line version. No matter what. There's an old saw about the frog and the scorpion.
A frog is sitting on the bank of a river, about to swim across. A scorpion approaches, and the frog gives him plenty of space.
Scorpion: "Will you let me ride on your back? I, too, need to cross the river."
Frog: "No way Jose!!! You'll just sting me, and I'll die!"
Scorpion: "No. I promise. I need to get home to the wife and kids, and they're on the other side of the river."
Frog: "You'll sting me, and I'll die. No."
Scorpion: "No I won't. I promise."
This tete-a-tete proceeds for the longest time. Eventually, the frog relents.
Frog: "OK, hop on."
Scorpion: "Thank you so much."
They swim across the river, making chit chat about wives and families. Half way across, and the Scorpion can't stand it any longer, and Whap, gets him in the head. Just as the frog expires,
Frog: "But why did you do it!! You're going to drown, too!!!"
Scorpion: "What can I say? It's my nature."

And so it is for java coders. And, to be sort of fair, all coders. They have such a juvenile concept of data.
We need to organize our workflow and coordinate the creation of the software. It's impossible to measure elegance.
Well, yes, yes it is. It's called the relational model. Data can be elegant. Code, not so much.

12: distraction rich environment
One client insisted that I come into their office every day. Then they insisted that I use their PC, which could not be customized for a week. Then they didn't have any office space, so I was plopped into a converted conference room with six interns, who would spend half of their day talking about what happened the night before. The other half was devoted to figuring out what they would do that evening. While it was entertaining, I got little work done.

In my callow youth, I accepted a "consulting" position in downtown Boston, Hancock Building, IIRC. Seemed to be neato. It was a Clipper (the dBase definition, not the cpu) assignment. Same kind of thing. Plopped down in a cube with no running PC or anything. I lasted a few days. The recruiter was peeved, but that's what happens when you lie to folks.

14: Clinging to legacy tech
There are 680 job listings on Dice.com with Cobol in the title out of 70,000-plus listings. That's still close to 1 percent. The defenders will say it's a great technology that still gets the job done. Why rewrite that dusty deck of punch cards just to move forward?

Been there, suffered that. A Fortune X00 company offered up a chance to do "heavyweight database development" in DB2 (Z and LUW, no less). Turned out to be a transliteration of COBOL code and COPYBOOKS. Bummer of a time. Enterprise does that way more than 1 percent of the time. Most never bother to advert on dice.com. Why would they? Dice is the home of cowboy coders writing Haskell and LISP. And the wee bit of Scala.

The problem is that software doesn't physically wear out. The first wife couldn't find appropriate work in DC back in the mid 70s, so she relented and went to one of those 6 month COBOL storefront schools. Got a job working on some bought-in admin package for hospitals, at a local hospital. She lit out for Boston, eventually (not with me, alas), for another hospital that had the self-same package. And is still doing that. VSAM lives. One of the clients of ours at the DB2 vendor refused to "upgrade" to DB2 from VSAM when that was in progress, shortly before I arrived. They did some DD, and discovered, not surprisingly, that the VSAM files worked much better in COBOL than said files sitting in DB2. My colleagues were sore afraid.

15: Lust for the latest and greatest
And the other side of the coin. "We must use [Haskell|Prolog|Scala|LISP|fooBar]".
In many cases, the new tools haven't been battle-hardened. Node.js, for instance, can be wicked fast, but only if you relearn all the lessons about deadlocks that lead people to create threads in the first place. There's often no free lunch, and these tools can produce wonderful results by cutting a corner. However, those shortcuts come back to haunt us.

The moral of the stories? Get you a $10,000 (or the currency of your realm's equivalent) Xeon box with a tonne of ram, RAID-10 enterprise SSDs, and an industrial strength RDBMS. You've spent less than *one month's salary* of an average cowboy coder, and you can kick the crap out of any code he and his posse can write. Well, if you've got a database geek like Your Humble Servant.

No comments: