Monday, February 02, 2009

The Age Of Careless Development

It's become really quite alarming lately, just how bad software has become. Everywhere. It's impossible to single out a given vendor for being worse than the rest, without being entirely subjective. They all stink, equally, but in different ways.

In fact, I cannot think of a single software vendor at the moment - or even hardware vendors who write complementary software packages - who are anywhere near proficient or at least competent.

I mentioned to a vendor earlier today, that "we" (as in, the IT industry) is worse at managing computer hardware now than we were 6 years ago. Dell has made the ImageDirect process unbelievably cumbersome. Microsoft's SMS / SCCM is still unweildy and ineffective, ZENworks (while still one of the better offerings) has launched down a rabbit hole so deep and dark that nobody dare follow - to say nothing of the fact that their company isn't interesting to anyone anymore (vis-a-vis the cancellation of BrainShare for the first time ever). Lenovo just flat gave up on imaging, pushing the task to "partners" like Insight, who as box pushers, struggle to manage the lifecycle of a product-customer relationship well at all.

Referring to our current image-impacting show-stopping software bug, that vendor said "Man, I hope desktop virtualization fixes this." And so do I, but I'm still skeptical.

Somewhere along the line, the stuff that made great programmers and resulted in great software, has become lost.

It's almost as if the tools became too easy. Anyone could make software that looked real, because in Windows-land, it all basically looks the same. What's masked is the hard and careful work that used to go into making it work well - which was usually far more important than how it looked. Some of the best running software looked the worst. Take RPG applications on AS/400. They. Just. Never. Fail.

Programmers used to be a unique breed, because not everyone could visualize how everything worked, and make it do what they wanted. Nowadays, you just have to read some Visual Crap++ books or watch a webinar, and viola - you're a developer.

Software developers need to be reconnected with those of us who USE their code day-in and day-out. The whiteboard upon which requirements were drawn will never use the software they produce - people do. If you've had to manage people, or ever managed an IT group, you can spot fundamental, architectural problems in software from a country mile. But developers these days don't have that experience, and they don't get that guidance from their product managers. Which means they churn out code that met requirements only the straw man from "Wizard of Oz" could ever use.

Making matters worse is when companies give up on actual development, farming it off to "code vendors" in favor of becoming keepers of the Gantt chart instead. Development is an organic process, and the people who are the best at it are the ones who are genuinely invested in the success of the organization for whom they're doing development. When the guy writing the code is never going to talk to someone using it (or even the person buying it), they're a lot less accountable - which means they're a lot less careful, or proactive, or focused.

These are all easy problems to solve, and if we're truly entering the age of the cloud where software isn't the commodity anymore, it's absolutely crucial that companies recognize the advantages of experience-based development. Rational Rose, rapid, lean, whatever the buzzword is today, are no substitutes for development lifecycles that involve seasoned professionals who know how EVERYTHING works together.