"It's a module to turn AS/400 flat files into XML. How hard could it be?"
A week into his one-year contract, Bobby suspected that statement would be his epitaph. As a contractor, you can only do so much recon before you walk into a job. You miss little things, like the fact that the IT manager you'll be working for and the IT manager that hired you are locked in a death-struggle, and you're little more than an artillery shell lobbed over the cubicle wall.
Bobby was going to work for Mortimer. "Oh," Mortimer greeted him, "I see the waste of my budget has arrived. We don't need you on this project, but since you're here, you had probably better make yourself useful."
Mortimer chucked Bobby into an office and left him to his own devices. It was only Jonathan, the manager that hired him, who had any information to share. "Don't let Mortimer get to you," Jonathan explained as he handed Bobby a pile of paper representing the specifications of the project. "This project is about 9 months behind schedule, and the customer is out looking for blood. I hired you on as a favor to him. We've had good luck with your company in the past, and I figure if anybody can get this application developed, you can."
The spec was unclear, but a few hours of meetings gave Bobby a better idea of what he was shooting for. He coded with the expectation that some of the requirements would be clarified later, and made sure what he wrote was easy to change. Within a month, he had something that looked like the spec, and it passed the test cases he had. Bobby handed it off to QA for feedback.
The next day, a phalanx of helicopters dropping napalm announced Mortimer's arrival. He stormed into Bobby's cube, his face red and bloated. "This? This is what I'm paying you for?" he shouted over the din of Flight of the Valkyries. "You code can't pass a single test case. I told Jonathan I only wanted Pigs on my team, not Chickens. You are a Chicken! And it shows! Jonathan is trying to steal my budget." Mortimer ranted for some time, working up an impressive spittle-flecked froth of paranoid fantasies. Bobby and Jonathan ware obviously embroiled in a conspiracy to destroy him and his department. As final punctuation, Mortimer hurled the QA report at Bobby and stormed out.
Bobby examined the report. The only similarity it bore to the specification Bobby had been working from was that they both had page numbers. Some of the broad strokes remained the same- it still turned files into XML, but the formats were utterly different, and there was a database back-end that had never before been discussed. A quick check of version numbers showed that this was version twelve of the specification. Bobby's only copy was version five.
After a week of begging, borrowing, pleading and threatening, Bobby tracked down the most recent version of the specification (version fourteen, for those keeping count), and got back to work. Days turned into weeks, weeks turned into months, and months turned into a platoon of novice programmers being slammed into the team at the last minute in a desperate attempt to stave off the fiery demise of the project. As one might expect, their primary contribution was to break the builds, check in code that didn't work, couldn't work, and should never have been written. "You don't understand," Mortimer explained to Bobby in a rare moment of composure. "They're Pigs- they're committed to this project. You're just a contractor. You're going to be gone in a few months, and we're going to have to fix your mess."
A very- very long six months into his one-year contract, Bobby turned in a pile of code (version 17 of the spec), along with a pile of test cases to QA. QA signed off. The customer was happy to hear that they'd actually be getting something, even if it was over a year after their deadline. Mortimer, on the other hand, was furious. So furious, in fact, that he demanded Bobby's contract be terminated.
Bobby didn't mind seeing his tour of duty aborted, but there was a sticking point. "You do realize that you're going to have to pay me a month's salary as a penalty." Bobby would be on the hook for the same amount if he were to quit.
"It's cheaper than another six months," Mortimer replied.
So Bobby left. There was a lot of documentation unwritten. There was no implementation plan, the users had no idea when the cut-over would actually occur. In short- the code was written, but there was still plenty of work. But Mortimer wanted Bobby gone, so Bobby left.
A week later, Bobby answered the phone to hear Mortimer's dulcet screams. "You are supposed to be in a meeting with me, Jonathan, and the VP right now. Where the hell are you?"
"What? You terminated the contract."
"So what? I'm still paying your salary this month. Get your ass in here, now!"
Mortimer hung up before Bobby could reply, but that was probably for the best- Bobby's reply would have been most impolite. Instead, Bobby rang up his contracting firm; they could explain what "penalty" and "termination of contract" meant.