Photo Credit: dklimke @ flickr Although Martin had been a programmer at the company for several years, he was never was able to escape his second-rate status. And how could he? With two rockstar programmers at the helm, he was lucky that their brilliance didn't outshine him to a third- or even forth-rate status. Heck, he was just lucky to be in their presence.

The rockstars were known for a lot of things, and one of those things was always developing their own version of the wheel. Usually, with a rotary engine built inside. If a project called for a car, it was an okay fit. When it called for an airplane… well, they'd just build a carplane. A boat? Try a carboat. A beverage cooler? You don't even want to know.

Their latest re-invention was some sort of big-data wanna-be database. It communicated with the outside world through a WCF web-service, which also helped with some routine tasks like serialization and deserialization of data. Of course, those could also be done by consumers of their database, as it was all based on strings. One "record" would have all its values in string format, separated by some token.

Most of the time, second-rate programmers like Martin never touched the rockstars' code – they simply didn't have the necessarily qualification of being awesome – but every now and then, they'd be granted the privilege. Like the one day when the rockstars left on a two week business trip and entrusted Martin with with doing a new release in their absence.

"We'll be available if the code actually needs to change," one of them reassured him, "we just need you to shepherd it through change control."

Martin didn't want to be responsible for code that he hadn't seen nor couldn't build, so he checked out both the server and the client programs from the company's Subversion repository. As he perused the rockstars' brilliance, he couldn't help but notice that the common serialization/deserialization routines lived in no less than six different places, and in each of the places they were different. And to make matters worse, none of them seemed to actually work.

"Oh I guess I didn't get a chance to put everything in subversion," a rockstar explained via email, "I've attached the latest serializer script;  this should be used everywhere. Go ahead and replace it everywhere, just be careful not to change anything else."

Excited to get his account name on the same commit list that the rockstars names were on, Martin replaced the several-hundred line C# method in all six of the places it was used. And it still didn't work. Before running back to the experts for help, he thought he'd try debugging the code in question.

One thing that was particularly peculiar was the .Split('') peppered throughout the method. It just looked like an empty character – something which didn't quite exist and certainly wasn't valid C# code – and it took him a few moments to figure it out. He opened up the file in a text editor and noticed that the character between those single quotes was the unprintable, un-displayable 0x07 character, also known as BEL.

The BEL character was originally used to cause an audible beep or buzz on terminals, which apparently made it the perfect choice to use as a delimiter. Surprisingly, the entire tool-chain from Subversion to Visual Studio managed to keep this hidden character intact, but the rockstar's database couldn't quite handle it. Or perhaps the Excel file they used to originally populate it. Or really, any other of the 10,000 or so lines of mysterious storage and retrieval code.

Suffice it to say that Martin was unable to get the rockstars' release out in their absence – a fact which once again demonstrated why there are first-class and second-class programmers, and why Martin will never become one of the former.


UPDATE: Google Feedburner, our RSS feed host, apparently doesn't like BEL characters, so I removed it from the article in hopes that it will fix the broken feed.

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!