Merv was ready to wash his hands of his last job and to get them dirty at his new one. Now that he was a contractor, he'd be making more, and he'd have a much better environment. This was the first time he'd be working on a team, his first time at a company with dedicated testers, and his first time at an environment that was going to use source control. Merv hadn't used any source control software before, but he had seen it in use and even read up on some popular source control systems.
At his last job he'd been teased with source control a bit — "We need to start using source control," his boss once said. "It's urgent!"
"OK, I'll start researching it right away," Merv replied.
"Oh no you won't! I said 'urgent,' not 'critical!'"
So having only high level knowledge of how source control was used, he'd have to hit the ground running at his new job. Not that he was worried — it seemed like it'd be pretty simple.
A few days into the new job, Merv was all set up with a decent chunk of the codebase, some good specs, and all the development tools he could dream of. It was heaven compared to his last job — he was cranking out prototypes and setting up meetings like there was no tomorrow, in addition to spotting and fixing the occasional bug in the product. The first time he spotted a bug, he excitedly checked it out, which copied the latest version of the file to their dev environment, and made the fix.A few minutes into it, he heard some incredibly fast and alarmingly loud footsteps coming toward him. Startled, Merv spun around in his chair, his eyes at Joe's belly button-level. Sliding his chair back a few inches, Merv gave a tentative smile. It didn't ease any of the tension.
Joe was bad news. Although he wasn't the lead developer, that didn't stop him from acting like he was. If he wasn't yelling at you, he was yelling to you about his incredible feats of software development strength. "I worked on [incredibly ancient mainframe] back when they were state of the art! You young punks with your C and your DB2!" Joe was also famous for his temper, which he'd take out on the junior developers. Or, if there were none available, his trash can.
Merv hadn't been introduced to, or even heard of Joe before. Merv was given a desk on the floor with all the business people, since there was no room on the third floor with the other devs.
Joe's face was red and he had a little sweat on his brow. He also had a slight facial tic, and an occasionally twitching finger. "Are you *tic* the one that checked in changes to the archives page?" The man blinked as though it caused him physical pain. A vein on his neck looked like it was ready to burst.
Merv swallowed the lump in his throat. "Y... yes. I checked it in."
Joe's eyes narrowed. He took a deep breath and exhaled through his nose, which made an audible whistling noise. The corner of his mouth twitched, then his finger, and without breaking eye contact he pounded a heavy fist on Merv's desk. The sound was like a starter's pistol, both in terms of how it sounded and how it set Joe off. "I hope you f#$king realize what you've done! Because of your dips&*#ted goddamn 'I can check whatever s&%t I want to whenever I f^#king please' attitude, I lost two f%#king weeks of motherf*$king work!"
His tirade went on for minutes, his face getting redder, forehead sweatier, swear words unintelligibler with each passing second. Merv couldn't do anything but sit there and take it — he thought that he had screwed something up, and should have been more careful with the source control.
After Joe ran out of steam and retreated to his lair on the developers' floor, Merv was still in shock. His first foray into real software development couldn't have gone worse. Merv's subconscious picked up where Joe's tirade left off. I'm way out of my league. This was a complete disaster. There's no way I can spin this or apologize for it. Everything he said was true — I'm such a f$#king idiot. Merv wanted to crawl into a hole and die. He was ready to run out the door and never look back.
Taking stock of the situation, Merv realized that when he'd checked out the file to the dev environment, he must have overwritten Joe's changes. But how could that be possible? Merv pondered. Isn't that exactly what source control is supposed to prevent?
Ready to own up to it, he dragged himself to the developer floor to talk to his boss. Merv gave his side of the story, explained how he didn't realize he'd done anything wrong, and that he understood if the company would demand he commit seppuku.
Merv's boss listened in silence, finally smirking, then laughing. "You're right, Merv. Using source control should prevent you from overwriting his changes. But Joe doesn't like using source control — he keeps saying it's easier just to edit the files on the server. I told him he has to stop doing that, but..." he shrugged. "Anyway, thanks for teaching him a lesson — don't worry too much about it."
Merv was reassured, but still somehow not up to going to Joe's desk to return the tirade.