IT jobs are few and far between in the rural United States. Calvin considered it pure luck that he got a new job as a developer in his home town, a small Southern town of only 5,000 people. After a few short interviews, he gladly accepted the job, eager to give up his long commute to another city and stay close to home.

Darwin's drawing of finches

His new company, ITWerks, was actually the former IT department of a local-but-large tractor company that had gone defunct twenty years earlier. ITWerks had managed to get spun off and survive on its own, handling general IT and development tasks for many other businesses in the area. The market was tiny, but competition was scarce, and since ITWerks was the sole vendor in its little corner of the state, it had little reason to change. Without any incentive to learn new processes and technologies, ITWerks became an isolated island of 1995 which was inexplicably transported to 2015.

Calvin’s first task was to fix a few bugs in their web API. The API tied several different products together. He scheduled some time with Hank, the original developer, to get an overview of the product. Hank had been with the company for thirty years now, and hadn’t learned anything new in at least twenty. His overview was brief and uninformative.

“I’m sure this API will look modern enough to you young whippersnappers,” Hank said. “Now, I originally done this in Visual Basic 5, but when C# came out, I decided to take a looksee and I rewrote this whole thing with C#. It’s been purrin’ like a kitten ever since. Anyway, all the source code is in a shared folder. Go ahead on and grab that, and let me know if’n you’ve got any questions.”

“No source control?” Calvin thought to himself as he settled in at his desk. “In 2015? Source code in shared folders?” He shook his head and wondered what he had gotten himself into.

He found the source easily enough… and was horrified at what he found. The API only had one class, called WebService.asmx, which was a hundred-thousand line monstrosity, all contained in a single source file. And though it was nominally written in C#, much of the underlying functionality was provided by old VB5 and VB6 DLLs, which the C# assembly called into using runtime-callable-wrappers.

Calvin spent the next few weeks engaged in intense archeology. Despite the massive, convoluted, and uncontrolled codebase, he was able to find and fix the bugs assigned to him without too much difficulty. Late one morning, he met with Hank again to see what the deployment process was.

“Deployment? We don’t really do no deployment,” Hank replied.

“How do you put code into production?” Calvin asked, clearly confused.

“Oh, that? You just need to build it, is all.”

“What do you mean?”

Hank laughed. “Bless your heart. I mean, in Visual Studio, go on up to the ‘Build’ menu, open it, and click ‘Build Solution’.”

Calvin paused for a couple seconds to see if any sudden understanding would strike him. It didn’t. “Sure,” he said, “that compiles the code. But how do I deploy that to the web server?”

Hank started to look annoyed. “Listen, you just build the solution, and that deploys it to the web server.”

Calvin feared that he was starting to understand Hank, but hoped he was wrong. Hank excused himself to go to lunch, and Calvin headed back to his desk to check something.

His suspicions were horribly, horribly correct. The network share Calvin had been using to work was mapped to a virtual directory in IIS. Calvin had unknowingly been releasing changes to production every time he pushed the “build” button- releasing code for an API that was used by several applications and a few dozen customers.

Despite ITWerks being a WTF-filled cesspool of mid–1990’s development practices that were horrible even in the 90s, Calvin decided to stay. He has enough leeway to slowly drag ITWerks into the modern era. They’re now using Git and Continuous Integration on some of their projects, the deployment process now involves actually choosing to publish your code, and now there’s a test environment. Calvin especially enjoys his new commute. Instead of driving an hour each way to the big city for work, he gets home in about ten minutes to find his muddy kids running up from the creek in the pasture to greet him. That’s a fair trade in his mind.

[Advertisement] Manage IT infrastructure as code across all environments with Puppet. Puppet Enterprise now offers more control and insight, with role-based access control, activity logging and all-new Puppet Apps. Start your free trial today!