"Half the world's IT people hate our company's guts," Aaron told the HR lady. "For once, can we hire someone from the other half?"

"The last round of consultants didn't hate us," she replied.

"Unbridled hatred is the only reason to inflict Crystal Reports on someone."

"There may have been a few bugs, but your team ironed them out."

"If by 'ironed out', you must mean 'hacked in a usable suite of reports', then yes. But maintenance is taking up too much project time. We need a full-timer to take on some of the workload."

"I'll have the usual placement firm send you a contractor," she said.

"Could I have someone competent instead?"

"I can't approve a new full-time position," she stated. "We just made the Fortune 100 this quarter. We have to take steps to maintain our position."

"By not writing checks?"

"By being prudent. Why should we pay a salary when a contract will suffice?"

Aaron frowned deeply. "Because in both cases, we'll get exactly what we pay for."

Join the Team

Aaron asked for a specialist. HR requested a 'guru'. The placement firm sent Stan, a smiling cotton-swab wrapped in plaid.

They spent some time going over the details of the system. Stan nodded happily, and jotted down three lines of notes.

Aaron checked in on Stan on hour six of his two hour introduction project-- politely ignoring the stack of printouts from the 'Intro to SQL' website on the guru's desk.

"I'm having problems setting up the connection in Crystal Reports," Stan said with a smile.

"The QA reports already have the connection settings," Aaron explained-- again. "Just copy one and use it as a template."

"Alrighty," Stan grinned, and resumed pecking at the keyboard.

As Aaron headed out at the end of the day, Stan flagged him down.

"It's working," Stan beamed, swiveling around the monitor to show off his accomplishment.

The layouts looked right, and selecting various date ranges seemed to pull up the right data. Aaron nodded. It wasn't bad, except…

"StatusID is an INT," he mused, pointing out the column. "I'd like to see the actual status text rather than the enumeration number. You can join to the transaction_status table for that."

"Ok," Stan chirped. "I'll stay late and finish that for you."

"Sounds good," Aaron said, appreciating the work ethic.  

Altered States

"It works, see?" Stan grinned, intercepting Aaron on his way to his desk the next morning.

Sure enough, the report displayed the correct text in the Status field. Aaron conceded that Stan might work out after all.

His optimism was quickly annihilated by the deluge of alerts and errors clogging his inbox.

All of QA's automated data-collection and synchronization processes had failed overnight. They were all throwing variations of the same error; invalid type.

Improperly-typed data occasionally snuck into the data processing queue, but not as catastrophically as this. Plus, if there was a data error-- how had Stan's report worked?

Either every batch process had a fluke error, or…

"Does Crystal Reports do type checking?" Aaron asked his co-worker, using Occam's Razor to pick her brain.

"No."

Crap.

He filtered for Stan's queries in yesterday's logs. At 5:36pm, just before the errors started, he saw:

ALTER TABLE transactions ALTER COLUMN StatusID nvarchar(2000);
UPDATE transactions SET StatusID = 'Disabled' WHERE status = '1';
UPDATE transactions SET StatusID = 'Enabled' WHERE status = '2';
UPDATE transactions SET StatusID = 'On Hold' WHERE status = '3';

And so forth, for each of the 50 status values.

While the database recovery scripts ran, Aaron typed up an incident report, and walked it over to HR.

Dropped and Created

"I'm sorry I let you down," Stan frowned, morosely packing his desk.

"Actually," Aaron replied with a grin, "You were a huge help."

Indeed, the sizable early-termination fee Stan's firm demanded had made HR reevaluate the fiscal benefits of gurus.

That, and now Aaron had an excellent technical competency question for those applying to the newly approved full-time position.

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!