Peddlers Peddling their Wares (and other Observations)
Being a series of unrelated observations
Posted by 12/19/2006
I've fallen for Hype before
I fell for the most marketed programming language in history, Java, like a million other people. I'm chagrined to admit it, but I thought Sun invented the concept of the 'Virtual Machine'. And I had no idea how important it was to integrate with C easily. Java seemed great because it was all the Object-Oriented goodness of C++ without all those crazy weird things that always confused me about C++. To this day I cannot follow code at Boost.org. It looks so cool. I really want to like it. But the 2 hour compile time, and templates of templates of templates requires a brain that I just don't have.
Service Oriented Architecture - last year's Hype?
The SOA sales pitch is fervent at my organization. Coming from IBM chiefly. Portals and Endpoints and Queueing Message Servers and Enterprise Java Beans™ and WSDL and UDDI and BPEL are, believe it or not, all the rage. As if these things were new and/or working. The S stands for Simple is a great demonstration of what is wrong with SOAP - and all I'm hearing about is a SOAP based SOA. But then again the entire IT department is being outsourced soon, so noone is all that excited about anything these days.
REST
When I first read the infamous REST essay it was obvious this was the way to go. It's the simple elegant answer that resonates - and the convoluted answer that does not. SOAP and the WS-* world is a giant steaming pile of horse puckey. It's so obviously an invention designed for peddlers to peddle their wares. But everything takes a little work to learn, so it's not always obvious whether something is over-complicated or just-right-complicated. And anything dealing with a computer is dealing in a world of increasing abstractions. So I readily admit it is difficult to get these things right.
Agile Requirements
SOA is just the latest in an endless barrage of sales pitches bought by management and dumped on the desk of the lowly programmer. As a new set of requirements. Because that's what it actually is. A project with a new set of requirements that has nothing to do with the real requirements. And it's likely the same project that was solved with Visual FoxPro 10 years ago, then Silverstream 5 years ago, then Websphere then... probably JRuby on Rails next. It would not suprise me at all to see JRuby on Rails pitched at me 2 years from now by some 25 year old IBM whiz-kid making 3 times as much money as me. In the meantime, who knows what will actually be the cutting edge, and, you can be sure, the whiz-kid won't be using JRuby on Rails. He'll just be selling it to the flock of the dumbfounded.
The Accessibility Scam
There is a new push in the state to make everything accessible - because of the federal law Section 508 mandating that. This is a good thing, and I would contend that it is good for everyone, not just the disabled. But now the contractors are crawling all over the place making thousands upon thousands upon millions of dollars selling software and services. Because it is assumed the state is too incompetent to develop software to take care of these problems itself. And unfortunately the state itself agrees with this assessment. It's a self fulfilling prophecy.
Why not fix the software?
In the meantime the software we paid hefty licensing fees for - lets say Microsoft Word™ - is deficient. So workgroups meet monthly to document those deficiencies so they can accumulate a list of 'best-practices'. I contend that they should call that list a list of 'bugs' and send it on directly to the software vendor. But that is not what they are doing. Instead of shifting the responsiblity on Microsoft to fix Word™, or Adobe to fix Acrobat™, there are memos circulating with rules like "Don't use all-caps on acronyms because JAWS will try to read them as a word in Spanish" or "Don't use shading on letters because JAWS will read the word twice". This is exactly the kind of thing that leads to superstition - where years from now people will be avoiding all-caps acronyms for some reason - but they don't quite remember why. And, even worse, Microsoft will come out with a $300 version of Word™ that fixes all those pesky accessiblity problems. And it will be seen as a feature, rather than a bug fix. That's how they get you.
Your Tax dollars at Work
We are paying people 100,000+ dollars every year to run a screen scraper of our own web site to notify other people what has changed on our own site. Why is this not possible for the vast IT infrastructure at the state? No good reason. And that's just the tip of a very cold iceberg. You, the tax payer, are paying millions of dollars a year to private firms to do things that could be done cheaper, with more oversight, and better customized to the needs of the government, if the government trusted it's own employees instead of blindly trusting these firms - who are often no better, who have no working knowledge of the organization, and who, for want of a better term, don't give a rat's ass. Do I sound angry? Maybe so. Maybe it's because I think the state should be leading the way with opensource software and it is not.
What's the problem with programmers?
I spend a lot of non-productive time thinking about my profession. The history. The future. 25 years ago I would not have been a programmer. I know that for a fact. Because I wasn't one. I'm one of those muddle-headed programmers that doesn't have a firm grasp of mathematics or logic and just hobbles things together. I'm not sure I should be allowed to program. At the same time, I'm just as good as anybody else I've ever worked with. I get things done. What difference does it make?
Experience required
But the current practice of hiring bothers me. Are there analagous things in other professions? Imagine an add to hire a doctor. Would it say?:
Must have experience with Toshiba CATSCAN version 1.4 or greater Preferred experience with administering one of the following drugs: Thorazine, Halidol ...
Doctors get a barrage of sales-pitches for drugs, complementary lipitor pens and xanix coffee mugs. Lawyers have to pay for expensive access to information that should, by all accounts, be public information. Architects and Engineers have to go through years of jumping through hoops to get certified. Everybody's got something. But a programmer is not a doctor or a lawyer or an architect, right? Not in the same league. Will they be someday? I don't know. It's hard to imagine. You don't need a software degree to make a web page. That's for sure.
Programming is Ephemereal
The industry is busy trying to find people with the exact skills they need when languages and frameworks come and go every few years. And they are all the same, and all of them just solve the same problems over and over again. What you need are good programmers, because by the time you hire programmers with the knowledge that matches exactly with your current codebase, that codebase will be changing anyway. You have to keep things up to date for the same reason you have to buy a new computer more often then you have to buy a new TV. Although sometimes Paul Graham's idea of The Hundred-Year language really sounds appealing. If I had written everything I wrote 10 years ago in Scheme, for instance, I could still just be running that same code - instead of rewriting it in Python and Ruby. C is probably a 50 year language though. So, I don't know what that proves.
These are skills that I think are valuable for a programmer to have:
- Be able to diagnose problems that are completley out of your realm of expertise. That's the most common scenario
- Understand that 90% of all programming boils down to nothing more than the basic data structures
- Be able to read and integrate with undocumented, sloppy, ad-hoc and poorly-written code. Because that's what most code is - including your own
- Understand the concept of Encapsulation - not just data hiding, but the fact that if someone makes use of your code - they really, really, really do not want to know anything whatsoever about the internal workings of that code
- Don't be afraid to mess everything up. It's a good chance to test your diagnostic skills
Comments
Post a comment