This article originally ran in 2014, and it's the rare case of a happy ending. They DO exist! -- Remy

Aikh was the new hire on the local bank’s data warehousing/business intelligence team. His manager threw him right into the hurricane: a project with the neediest, whiniest and most demanding business unit. Said business hated their unreliable batch process for archiving reports, and the manual slog of connect > find/create directory > upload > pray. They hoped the DW team would code to the rescue.

Eager to impress, Aikh sketched out a simple, automated client/server solution. The business quickly approved his design and estimates. To mentor and keep the project on-track, Aikh’s manager assigned Dean, a more senior developer, to help out.
John Henry-27527
What do you mean, “steam powered hammer?”

“I could really use a good library to transfer files via secure shell,” Aikh told Dean during their initial meeting.

Dean leaned back in his chair with confident disinterest. “I know a good open-source package. I’ll build you a wrapper.”

A month passed. Aikh hammered out the UI and daemon, and now needed to write the code for file transfer. However, he’d never received anything from Dean. Aikh hadn’t wanted to nag- surely Dean had several important projects on his plate- but found himself stymied. He visited the senior dev’s cube to inquire about the library and wrapper.

“Oh, right,” Dean said, never pausing from his typing. “I’ll email the package in couple of days.”

Aikh received the open-source library as promised… and an executable file that simply displayed an empty command prompt. He was back at Dean’s cube in short order. “What’s this?”

Dean narrowed his eyes, not sure he was dealing with a sentient creature. “It’s waiting for a command. See?” He demoed an execution, typing rapidly and without explanation.

“This, uh, isn’t what I’m looking for,” Aikh said. “I need something to integrate with my Java application.”

“Execute this with the Runtime class, then pass in commands.” Dean had already tabbed back to Facebook.

Aikh tamped down his aggravation. “Sorry, but, can you please just write a wrapper and jar it up for me?”

Several days later, Dean sent a jar file containing the class, no comments. Aikh replied to the email. Any documentation on how to use this?

Another few hours, and Dean replied with a single line:

SFTPWrapper.write( srcDir, tgtDir, user, pass ); srcFile, user, pass ); …

After a few moments’ experimentation, Aikh returned to his email client to hit Reply with a vengeance. How will I know whether that call was successful? No errors were reported on invalid parameters!

An entire day passed as Dean composed his riposte. Each method will return a StringBuffer, which contains the response from the command-line.

For? Aikh asked.

Log from the sftp package, Dean replied. Y’know, the code I told you to write.

Aikh gaped at the email chain, having watched this horror show unfold in achingly slow motion. This was just supposed to expose a simple interface to a third party SFTP package. How was it so hard?

He made a more diplomatic lament to his manager. “Dean… isn’t giving me what I need,” he admitted. “We’re coming up on our deadline, and I’m getting worried.”

“I’m not.” His manager’s smile was reassuring. “Go with what Dean’s given you. The business is used to a manual interface anyway.”

“They don’t want a manual interface anymore. That’s the whole point of this project!” Aikh cried. “We’d be delivering something out of spec!”

“It’s what we can deliver on-time and on-budget. They’ll take it.” The manager leaned in and lowered his voice. “Listen, Aikh, we don’t like automation around here. Automation means the businesses have no need for our very lucrative support services. You don’t want to break our budget, do you? Of course not. So you’ll produce software that keeps us… involved. Understood?”

Aikh’s jaw crashed through the floor.

What could the poor junior dev do but report his roadblocks at the next project status meeting? The business was so worried about losing their automated process, they approved the purchase of a fast, supported library for file transfer. Aikh finished the solution done in time, much to the business users’ delight.

Aikh’s manager grumbled about the new guy “depriving the department of future support revenue.” Fortunately, he didn’t remain Aikh’s manager for long. When the business decided they needed their own internal IT staff, Aikh was at the top of their list.

[Advertisement] BuildMaster integrates with an ever-growing list of tools to automate and facilitate everything from continuous integration to database change scripts to production deployments. Interested? Learn more about BuildMaster!