|« Offshore Obfuscation||Exceptional Date Formatting »|
In the ancient time of 2008, people were still using Lotus Notes. Rumor has it that some still do, even today. Danny worked for an IBM partner which was a “full service” provider. It was the kind of company that you’d leas your entire IT infrastructure from, from servers to desktops and soup to nuts.
Their newest client was the state Nursing Board, the government agency responsible for keeping track of every nurse in the state- when they became a nurse, when they last paid to renew their license, any complaints or reports. From the IT side, this involved tracking payments, physical documents, and navigating custom Lotus Notes applications developed by the Board’s own development team. It was a giant pile of confusion with a highly manual and error prone process.
It had it all- data-entry/lookups in Lotus Notes , a manual reconciliation to move payment data from their processor into their database, copy/pasted document generation and the need to print out then scan documents back into the Lotus document manager. The mountain of data was terabytes deep, and it needed to move from a highly custom Lotus v5 install to a Lotus v8 install.
That was enough of a challenge alone, but the nursing board’s director, Victor, had other requirements. “You have one month to complete this migration,” Victor said. “We cannot have any downtime during business hours. There is no budget for overtime. This is the busiest time of the year for us, so we need everything to work perfectly out of the gate.” The desktops were getting replaced, and they were going from Office XP to Office 2003. “Office 2007 is too new for us to trust it,” Victor explained.
To ensure success, Victor provided a detailed project plan, as designed by his pet developers. “If we follow the plan, we will be successful. I’ve detailed out everything, to the letter. This document is law. Do nothing that is not on the plan.”
Despite the challenges, the first week of the project passed without incident. Danny was as surprised as anyone else. The project plan, as laid out by the Nursing Board’s in-house developers, had them migrate the existing Lotus install to the new hardware before making any other changes. That transition went without a single problem… during the first week.
At 6AM on the Monday of the second week, Danny got his first call from Victor. “My system isn’t working! I have too much work to do to deal with these kinds of problems!”
“Can you be more specific about what’s not working?” Danny asked.
“No! Come here and fix it.”
Danny rushed down to Victor’s office and asked to see the problem. “I exited out of lotus when it wasn’t working,” Victor said. “Give me a minute to log back in.”
It took far longer than a minute, as Victor mis-typed, mis-clicked, and stopped to go look at his webmail. Finally, Victor pulled up a listing of nurse registrations, double clicked on a record, and the details instantly appeared, ready to be edited and modified. “There, see? It doesn’t work.”
Danny struggled to process what he was seeing. “I- I don’t understand. Is the record incorrect? I’m not sure what the problem is.”
In slow, careful speech, Victor enunciated the problem. “I click on the record and it opens.”
“And… that’s not supposed to happen?”
“Not that quickly, no!”
Danny explained that their new hardware was superior to the old hardware. It was expected that things should run faster and be more responsive. Working better was not a sign that anything was broken.
Victor wasn’t pleased by this explanation. “The project plan said that you weren’t making any changes but migrating to the new hardware, last week.”
“But it’s different- it runs faster. You shouldn’t be making changes like that unless the project plan calls for it. Be more methodical!”
The rest of that week and the following one were dedicated to desktop upgrades. It was tedious work in the best case, but Victor made it even more challenging. “You are just putting new hardware in, nothing should be different. Nothing!” No matter what undocumented changes might have been done by creative users, Danny and his team needed to mirror that on each new machine. Danny spent one afternoon doing nothing but trying to arrange Victor’s desktop icons to match his old machine.
Along the way, there were several more moments for Victor where “it doesn’t work!”. Some fonts were different between Office XP and 2003, which meant the “document doesn’t work”. Since Victor’s new monitor had higher resolution, the fonts were too small, and hence “didn’t work”, but when he made them larger, they printed out wrong and hence “didn’t work”. The new mouse was optical, and didn’t have a ball, and hence “didn’t work”.
“You were just supposed to upgrade my computer, I don’t understand why so many things are different. You aren’t following the project plan!”
The start of the 4th week, according to the project plan, was to upgrade their Lotus v5 install to Lotus v8. Like all things Lotus, it was harder than it needed to be. There was no direct upgrade path, but years of experience had taught Danny the quickest route: 5 to 6.4.6 to 7.0.4 and finally to 8.0.1. It was time consuming, but it was not error prone.
Before starting the upgrade, Danny called a brief meeting with Victor and the developers.
“This meeting isn’t on the project plan,” Victor complained.
“Well, I just want to make sure we’re being extra safe,” Danny said. “So, you guys are happy with the test environment we set up? Everything works- custom databases, templates and views?”
“Yes,” the first developer said.
“So there were no problems?”
“Yes,” the second developer said. “There were no problems.”
“So you all agree that I should start the uprgade after business hours today?”
“Yes,” the developers said.
“That’s what the project plan says,” Victor complained. “Just follow the document.”
Danny upgraded the system. No errors cropped up. He smoke-tested it the best he knew how, but the developers had already left for the day. He called it a night and went home at around 3AM. Three hours later, he was called back in by a panicking Victor.
The office was in chaos. The entire nurse registration management system had stopped working. Oh, the bits Danny had smoke-tested still worked fine, but the overall business flow couldn’t be completed. They couldn’t get at nurse registrations, print certificates, or add the certificates to the document manager.
Danny went off the project plan to call another meeting with Victor and the developers. “Do you guys have any thoughts? You said it worked fine in the test environment.”
“It did,” the first developer said.
“We just had to make some changes to our database,” the second developer said.
“Wait, there were changes that needed to go in as part of the upgrade?”
Danny raised his voice. “Did you think that, maybe, you should have told me before I started the upgrade?”
“It was in the project plan!” Victor shouted. “Section 37B: ‘Apply any necessary changes to the Lotus system ’. It’s all there, black and white, clear as crystal!”
That day was a loss, but a late night with the developers let Danny get an emergency fix in place. By the end of the project, Danny had put in a 4-week stretch of 60 hour weeks and had become intimately familiar with what 4AM looked like. At least this project was over, and the next time Victor sent Danny a project plan, Danny had a few colorful suggestions on how to improve it.
Project plan document from here
|« Offshore Obfuscation||Exceptional Date Formatting »|