The time had come for the national telecom we'll call Communicommco to shed its legacy systems and move into the future. In fact, calling them "legacy systems" is perhaps too charitable – these things were freaking dynasty systems. The dusty green screen terminals and ancient interface were being replaced with a cutting-edge the-future-has-arrived VB6 frontend. There was just one problem: the existing data had to be migrated in somehow.
Having just graduated college, Joe B. had a lot of free time on his hands. He had a job lined up, but that was six months away, and he was still too wet behind the ears to sell his services as a contractor. After seeing a lot of late-night commercials that made data entry sound pretty lucrative, he decided to try to get a position on Communicommco's migration project.
Joe didn't really know what to expect. He figured that it was a telco, so there would be supergeniuses wandering the halls, discussing cool stuff like 100 gigabit hubometers capable of transfer speeds up to 5 quantumleaps a parsec. In actuality, he was seated with five college-age gentlemen that sat in a zombielike trance in front of their computers, slowly whittling away at reams of paper as they entered the data into the new interface.
The six of them fought a battle of attrition against an insurmountable foe; a flow of paper that never seemed to end. Each morning they'd retrieve a big stack of printed customer records, which would represent their work for the day. There was another staff member dedicated to printing, and yet another whose sole task was to staple the records together.
The new VB app they used to enter the data was so crappy that it must have come from the lowest of the low bidders. From craigslist. In the casual encounters section.
No two form elements were aligned on the same axis vertically or horizontally. The tab order was so bizarre and random that Joe had to either use his mouse or remember "ok, five tabs from here, then shift+tab twice, then three tabs" for the thirty-odd controls on the form, or click through with his mouse (making the process much slower than necessary). Sometimes hitting tab wouldn't even appear to highlight a control, perhaps because it was hidden behind another.
Plus the application was buggy. In one case, he was entering a business, say "Papadimoulis & Sons". The application helpfully turned that into "Papadimoulis Sons". That's because & is the escape code to underline the next character (think "&File > E&xit"). They were able to coordinate a fix for this one by adding escaping before the frontend (that is, training the users to type "&&" instead of "&"). Always a good idea to remind users to do the same with single quotes, too.
Joe befriended some team members on the more technical side, and at lunch one day he learned that the old database format was essentially a flatfile text dump. If this was true, Joe couldn't even begin to imagine how this went unnoticed through the whole process of bringing in data entry people when one developer could've hacked something together to import all the data.
Later that day, he sat down with his boss to discuss an alternate strategy. "Garrett, you know you were saying how slow this data entry's going? I'm pretty sure I could just write a quick script that could take the customer info straight out of the old database and dump it into the new one. It'd be a thousand times faster than doing it like this too. Any chance I could talk to someone about that?"
Garrett thought for a moment, before leaning forward in his chair to respond. "They wouldn't go for it. They've only just spent all this money on the new front end, and besides, we've got the person printing out the old record, the person stapling them together, and then the 6 processing people... you'd be putting them all out of a job!"
Garrett leaned back in his chair again and continued. "Besides, we've already spent all the budget for any more changes to the software. We can only spend money on the manual migration."
Joe decided to have a personal "manual migration" away from that company the following day.