After spending a few years working at a large, faceless corporation, John W. decided that it was time to move on to a smaller, friendlier company where he could actually make a difference. He eventually settled on "Primatech," a software services company with a dozen or so developers. What really sold him was how receptive they were to change. Each month, they had a "Greatest Improvement Idea Contest" in their dev meeting, where the developer with the best idea for improvement would win a $100 bill. Surely, John figured, a company like that would be rife with best practices.
It didn't take too long, however, for John to question his career move. The first sign that things worked a bit differently at Primatech was when the CEO burst into a rage over a minor bug in their flagship application and slammed his door hard enough to break the jamb. But still, John was confident that he'd be able to avoid the CEO and focus on what he really wanted to do: develop software.
I Want It Now
One of the first oddities that John noticed with Primatech's development was that the build process took forever to complete. On a bad day, it would take more than 30 minutes and trigger an "I want it now" tantrum from the CEO. This was especially odd because their software wasn't too complicated, and could be built from Visual Studio within minutes. Morbidly curious, John decided to take a look at how things were built.
There were two key files on the build server: build.bat and build.cs. The former was a simple batch file that used csc.exe to compile build.cs and then ran the resulting executable. That, in turn, would loop over every file on a network share and write out another batch file, with one line for each of the 600-plus class files.
Having a bit of experience with MSBuild, John spent a couple of hours putting together an MSBuild project and was able to reduce the build time from 30 minutes to 23 seconds. He figured it would be the perfect thing for the upcoming Greatest Improvement Idea Contest.
The developers and the development manager were all wowed by John's idea and unanimously agreed that he was the clear winner. John felt a bit bad for getting a hundred bucks for suggesting some common sense, but who was he to complain? He was just happy to introduce a little sanity to the build process.
After the meeting, John checked with his boss to see when he'd be able to implement MSBuild. "Oh jeeze," the development manager replied nervously. "I just ... I just don't think we're ready to implement that yet. We need to let things stabilize a bit."
John wasn't sure what that meant, but before he knew it, time had come for his second Greatest Improvement Idea Contest. This time, John offered up another common-sense suggestion: stop using a shared working directory.
At Primatech, the custom had been to use a collective working directory for source code that was secured only by Visual Source Safe and read-only file attributes. Not only did this practice cause developers to trample over each other's changes, but there were files that were checked out by developers who had long left the company. Some files never even made it into source control.
The developers were once again wowed by the suggestion. The concept of having their own, personal working folder on their workstation had never occurred to any of them. While John was certainly happy to accept another $100 reward, he was more interested in implementing the idea. "Soon," the dev manager promised, "just as soon as things stabilize a bit."
Rich in Ideas
As the months passed by, John continued to introduce more common-sense ideas-bug-tracking software, smoke tests, third-party components -- and, each month, he'd walk away with $100 in his pocket. Of course, each of his ideas would have to wait "until things stabilized" before being implemented.
However, when it came time for John's seventh Greatest Improvement Idea Contest, he decided to present a slightly different proposal. This was mainly because, hours earlier, John had unwittingly walked by the CEO's office during one of the CEO's fits.
"Why is it you idiots can come up with a million ideas but can't seem to write %&#$@ working software?" the CEO growled at John. "Come here, look at this!" John nervously entered the office and watched the CEO curse as their app repeatedly crashed. "I mean, really, what the #@%& is wrong with you people!?"
John tried to explain that the lack of source control, issue tracking and testing made it difficult to develop quality software, but the CEO would have none of it.
So, John's idea for the seventh contest was to actually implement the previous ideas so that things could finally "stabilize." He argued that the majority of the CEO's tirades resulted from their current "instability." The developers -- and especially the development manager -- weren't too impressed. They decided to pass on John's idea, ending his six-time winning streak.
Soon John decided small-company life wasn't for him and returned to another big, faceless corporation. As for Primatech, rumor has it they're still waiting for things to stabilize before implementing some of John's old ideas.
The Greatest Idea Contest was originally published in Alex's DevDisasters column in the Jul 15, 2008 issue of Redmond Developer News. RDN is a free magazine for influential readers and provides insight into Microsoft's plans, and news on the latest happenings and products in the Windows development marketplace.