|Do you know where your variables are?|
The continuing story of a developer and his quest to solve the problems of business without having a major break from reality.
For parts one, two and three, read here, here and here.
What follows is yet another harsh lesson learned about projects in the corporate world, be they programming, or otherwise.
- Can someone please define Quality?
When we last left our intrepid hero, he was neck deep in a Portal Implementation, and while he juggles that peril to the amazement of the onlooking masses, he has found himself embroild in yet another corporate SNAFU. A while back, our Hero was asked to attend a meeting to be a neutral set of eyes and regarding a reporting application that his group was going to undertake. When he heard the method that was being used to aggregate most of the data being used for the reports he screamed (internally), he roiled (in his brain), his blood rushed to a boil...But calmly he asked..."Come again?"
First, a little back ground. Our hero's company as group named the Quality Group (the irony of THAT name will become clear in a moment). Their job is to work with the plants and their customers to indentify break downs and problems in production that cause costs to increase further down the line...AND FIX THEM. Each morning, worker-bees from the group in question went out to their three most important Customer sites (The Big 3) and began the long and arduous process of cutting and pasting data from the web sites to Excel Spreadsheets for reporting. This data reflected the company's performance as a whole, as well as on a Site-by-site basis. The process took 3 people ALL DAY to accomplish. This group was supposed to be looking for and fix break downs in quality and production, and all they had time to do was create reports.
Needless to say our hero was appaled
Much to the suprise of everyone in the room (including his own), he volunteered to look at making that process a little more streamlined.
Six months later - after a continuous head-ache, bashing his head against his desk and momentary lapses and breaks from reality, he worked with the team to write code that automatically downloads the data and created a process with which all of this speedily slurped data could be entered into a back-end database for the enterprise level reporting application that was purchased (and the oneous of the original meeting) to report against (they didn't want it to go directly to the database without some human intervention - read: Massaging it is, ater all the Quality group). After 8 months of work, a process was in place, and now, with the click of a button, and a game of "follow-the-link through some important questions" one person can get all of the data through an intranet-based perl application. Just Click-Click-Click, and go get some coffee. When you return, the reports are deliverd in full color to your inbox for sharing with your friends, family and the VP down the hall.
obPerl: If anyone is interested, I have some robust code for downloading PPM, WC, QR et al. and Key Indicator data from GM, Ford and DCX supplier sites, all nice and wrapped up in an OO bow
Of course, this process is in constant upkeep because of the little changes to the customer sites that require subtle shifts in our hero's code, but we digress.
- A new Project?
Shift ahead a few months, a few changes in the code, and some small add-ons to make everyone's life a little easier.
Our hero is working in realitive bliss on his primary project when he suddenly takes part in an ethereal phone call that sounds something like this:
You, belov'd reader, can probably imagine how the conversation proceeded from there. Although no one feels that our hero is to blame for the gross miscommunication (there's a lot of upper level finger pointing still going on three weeks later), it doesn't change the fact that these people had(ve) an Oct. 1 roll out plan. *sigh*
It turns out that there is another part of this Multi-tier, multi-platform, enterprise level application rolling out to the first 25,000 users (out of a potential 60k) in the near future, and our hero was told that he had a major part of it to write (about 8 weeks worth of work), 4 weeks before the roll out and 5 days before his deliverables were suposed to be due. It seems that SOMEONE put his name on an engineering schedule to write code for something, and EVERYONE failed to tell him about it. Go figure.
- Day four, we searched for intelligent life...and failed.
Jump ahead a measley four days..four days into our hero's mad dash marathon coding. 600 lines of working Excel Parser code, Oracle dB code, and verification/business rules code that would make your eyes bleed. Four days of blood, sweat and...well, you get the point.
When what to our wondering eyes should appear, but a gremlin in the form of a manager, dear. He had changes to the specifications that he needed in a flash (Our hero felt like tearing open his chest and eating his heart from the gash). The parsers would need changing, the dB tables rearranging (and of course the target date wouldn't be changing).
All the while, our hero is supposed to be going out of town for two planned long week-ends (planned, in advance, for 3 months).
- Last Minute data changes, and no-one's home.
So here our hero sits at 5:15pm EST on Sept 30th, the people who want this rolled out, his managers and the dBA have all vanished, and the data that he is trying to upload doesn't conform with the initial templates, and subsequently all his coded business rules, and the constraints on the dB. He's left voice messages, emails, text pages and smoke signals to everyone who might care, and no one is responding. The users' data is FUBAR, and he has no recourse. So he's going home.
I hope I have a job tomorrow. My fault or not, I've always known that I'm the whipping boy.
C'est la vie, C'est la geurre.
Lesson: You are never finished. You cannot trust nor enjoy the calm moments, for there is always something brewing that you forgot, missed, or weren't aware of.
Update: Thanks to ehdonhon for bringing to my attention that I had forgotten my lesson (so soon) in my haste to get the hell out of dodge.
Update II: Added READMORE tag. Should have done that from the beginning