If you are my age or a little older, you have some childhood memories of the cold war. Too young to understand it at the time, you remember parents watching the news during the Cuban Missile Crisis, duck and cover exercises, and news reel type shows about Russia and Communism in general. Most of them won’t be clear memories, just remembrances.
One memory, which seems to be stronger than the rest, was that of Russian Cold War construction practices. Perhaps this memory remains longest because you will occasionally see some station like The History Channel serve up some segments of those news reels.
We were told that construction would be scheduled like clockwork. No allowances for supply delays, weather delays or deaths at the construction site. When a building was scheduled to be done, it was declared to be done no matter what stage it was in. If the building happened to be an apartment building (we didn’t have condos then), families would be assigned to live in units on floors that didn’t exist. Do you remember the stories about waiting a year or more to get a phone installed, then up to another year to get it actually working? I do.
Lately, it has occurred to me that this tale parallels the plight of software development today. Some might even call it the Microsoft Development Policy, but I won’t go quite that far…this time. Back when I got my second programming job it was for a VAR (Value Added Reseller). The development staff used to have a running joke. “It compiled, the first screen came up, ship it; everything else is a billable mod.” The difference today is this joke seems to be put into actual practice for much of the software industry.
In my travels to client sites, it seems that all of them are still ga-ga eyed over off shoring. Upper management still believes that if they can get someone for $10/day or $10/hour they have saved money. Sure, you can make it look good on a spreadsheet, but sooner or later you have to smell what used to be coffee.
I have yet to see a single project where we got skilled and seasoned professionals on the other end of the phone line. The vast majority are fresh out of school and hoping to learn. Nothing wrong with that in general, but upper management schedules the project and installation date thinking they have 30 seasoned professionals with an average of 15 years in the field. The only way to work with the kind of trainees you are getting is to spec the programs down to the detail line with pseudo code. That takes more time than the entire project budget. Never fear. Management has found a way to stop you from wasting too much time writing specs. They mandate you must use Microsoft Word to write your specifications. Yes, you are screwed before you start.
What about the other portion of the “team” you were given? The ones that claim to have worked on 5-6 projects already and have a good grasp of software development. It takes a long time to wriggle any information out about those projects. When you do get it, you find they were only on each project for 2-3 months before getting fired and landing on your project. You usually find this out around the end of the second month when you are already putting the paperwork together to fire them from your project.
Months go by, and you start receiving some software. Some of it compiles, a few of the screens come up, and that is about as far down the path of functionality as your “team” got. The installation date is weeks away and it will take a seasoned developer at least six months to undo the disaster you’ve been handed. You start working 80+ hour weeks just to get the project stable enough to out live a 30 minute demo to management. Dedication to quality, your first, and most crucial, mistake.
The day of the demo arrives. You walk on eggshells and get through it with a drastically restricted set of test data. Management prides itself on how they “cut costs” on this project. They order you to install it per the installation schedule already chosen by them and to disable the old system. They also tell you that your team is being moved onto other projects. One member (the newest and least qualified) will be around for 30 days of bug fixing while you are working on a new project with a new team. Oh yes, you will be taking over support of this project by yourself while working full time on your new project.
Now we all know just how the Russian family felt that was told they couldn’t possibly be homeless since they were living in an apartment on a floor that didn’t exist.