"Null reference exception, what does that even mean?" Randy whined.

"You probably didn't initialize one of your variables," Bob said.

"Ugh, that's so stupid. That's why we should be doing this project in PHP, not Java."

Randy had a lot of issues with Java. The fact that variables were strongly typed and had to be initialized bothered him. He felt the compiler errors were overly cryptic. He loudly proclaimed to anyone that would listen that design patterns were a scaffold that tried to address the fact that strongly-type, object-oriented languages were invented by Nazis and barely worked. "PHP," he would often say, "doesn't have these problems."

Bob had joined this particular project late. It was called "Operation Blue Light" due to some random corporate project name generator, and had gained a reputation as being the "Blue Light Special"- it was failing so badly that it was predicted that everyone working on it was going to end up working smart- working S-Mart. When Bob joined, he saw a lot of code like this:

ResultSet result = select.executeQuery("SELECT password FROM users where username='" + username + "'");

     while(result.next()) { // process results one row at a time
       String val = result.getString(2);

       if (val = password) { 
         return "Success";
       } else {
         return "Invalid Password";
Bob had years of experience both as a developer and a project lead, so he grabbed the tiger by the tail and started cleaning up the code. "You shouldn't even bother," Randy warned him, "just junk it and start over in PHP. I'm glad this project is failing, really- it shows what a sham 'enterprise' languages really are!"

Bob ignored him, and things started looking up. Unit tests started passing. Prototypes made it all the way up to their staging environment and could be demoed to management. Status reports started looking better and better. The stupid little lights on the project dashboard started turning yellow, and occassionally green. It was never going to come in on time or on budget, but it was going to come in, finally.

And then everything started going back down the tubes. In the middle of one management demo, a database column mysteriously vanished, sending the application down in flames. The config files in the stage environment started getting constantly corrupted or picking up nonsensical settings. Then the nightly builds started exploding, when they even ran at all. "Who's been checking in this crap code?" Bob exclaimed as he fired up svn blame- only to find that their subversion repository had been completely deleted.

Furious, Bob did his best to cobble things back together from what was on the developer workstations while he tried to figure out who was sabotaging his project- and how. "See," Randy whispered in his ear, "if we were using PHP, we could just grab the code files back down off the server. That's the advantage to not compiling your code."

Bob eyed Randy for a long moment until the little troll went away. And then Bob looked at the log files. The source control box, as well as the databases and web servers, had all been accessed by an admin account recently. That administrator had logged in from one of his team's development servers, which someone had configured an SSH tunnel on, so that they could access the company network from an external IP. And unlike all of their other development servers, this one had Apache and PHP5 installed. Oh, and the last time an admin had logged in, it had come from Randy's IP address.

Bob didn't bother confronting Randy. He simply sent this information to the network security team and his managers. By the end of the day, Bob's team was one member smaller, but twice as productive.

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