Sprinting or crawling for the fail - either way its still a fail
Last month I was on a death march project, killing myself (250 hours in 4 weeks, with 2/3s of that in the first 2 weeks) to make a deadline set by sales that of course I didn't meet, due to badly thought out requirements and scope creep. Due the tight time frame I made a more than a few design errors that slowed me down and played into not making those deadlines. This week I found that 3 weeks after I had finished my code and the customer acceptance tests had been run, that the system was still sitting in an office and not even delivered to the customer. This is because the customer was now re-thinking the machinery that the software will interface with and when they get around to making a decision it will mean a change order and some significant recoding. If the sales idiot (and I know him, he is an idiot and other even people in the industry consider him to be an idiot) had initially sat down with the customer and produced a realistic schedule rather than a "we can do it asap", my life could have been so much better
But of course life is a study of opposites. This week I am starting to finish up a project that was started earlier this year. The project was about setting up a change management system for PLC programs in a large factory. As a prerequisite, all of those programs had to be converted from one version of programming software to the latest and greatest version (think something like but not the same as converting a project from VS2005 to VS2010). We had a guy come in and do those conversions about 6 months ago. Ideally those converted programs are now the master copy and should be what the maintenance people use in their day to day operations. However those updated projects never got deployed, and the maintenance people would have kept using the original projects, making changes to code in order to support production. So now I have no idea if the actual running code differs from the converted projects (although my gut feeling says yes) and the only way to verify all of this will probably be to reconvert all of the projects and repeat the work that was done 6 months ago.
I thought that was SOP for the business world.
I was hired on a 3 month contract to implement some features in a TLA company's accounting software. I finished the feature in a week. 9 months and 3 versions later (each one allotted 3 months and taking roughly a week), not one version has made it into production.
I would have walked out months ago, but they're paying me an exorbitant amount of money to sit around waiting for someone to OK the version 1 push to production, or start QA on version 2.
One lesson I've learned is the more panicked and hurried the client, the less likely it is they'll provide you what you need to do the work, or deploy it when done.
One lesson I've learned is the more panicked and hurried the client, the less likely it is they'll provide you what you need to do the work, or deploy it when done.Ah yes, the old "hurry up and wait". A pretty clbuttic management flaw, and one I know very well. ...But not with any funny stories, so I'll just keep moving on...
That's kind of like headhunters posting "URGENT REQUIREMENT - must be able to start tomorrow" jobs. The only folks who can do that are either a) unemployed or b) incompetant and willing to walk out without notice (would you trust someone like that?). Also, even with standard technologies used in standard ways (what!? they have their own home-grown library on which everything is built and you don't know it?), the odds of you understanding their problems, ripping into their code base and being even marginally effective right away are zilch.
On the other hand, I make a shitload of money because of idiots who don't know how to plan.... the trick is to not care about the deadlines; just do the best you can and tell the user/customer no by saying yes (you want all these changes? Sure, no problem, it'll delay the release by x days/weeks/months. Your choice: do you consider these changes important enough to hold it up that long? Yes? You got it! No? Ok, we can add that stuff to version n+1).