When Software Requirements Go Wrong

silverback
Years ago I was running a development team for a systems management startup. Several of the prospective customers required software agents to run on their servers, and our solution was still months from release. One week a talented SE in the company decided to take it upon himself to solve this problem by cobbling together a crude agent from a collection of open source. When he first showed it to me, the best thing I could say was that it worked (well, sort of). But due to his limited development skills, the installation was... well, a little unpolished. Upon clicking on the install, dozens of command prompts randomly launched at different times and places on the screen, blurted out commands to the console, and then disappeared. It felt a little like the user experience you might expect from a trojan horse, not a professional software agent.

Not wanting to discourage his initiative, I asked him if he would make the install more professional by getting rid of the randomly launching command prompts. I assumed my intent was clear: customers were installing our software on critical servers, and so the initial user experience should do nothing to betray their confidence. “Sure,” he said. The next day he dropped off a disc containing his new installer. Upon clicking on the install icon, a big black window appeared on my screen, like a shade pulled over my monitor. Upon looking closer, the black window did not quite cover the entire screen, and so I could occasionally see the edges of random command prompts launching behind it.

His solution was brilliantly devious and profoundly awful. He had met the requirement of getting rid of the command prompts by launching a single window with a black background that obscured (mostly) his messy install. But he had clearly subverted the unstated requirement: to make a professional install.

After a few more tries, his agent eventually made its way to our customers through professional service engagements. Not long after we replaced this stop-gap agent with a polished and professional one developed by my team. I took no chances on the install for this agent though, and wrote it myself. ;)