After graduating college, Trevor didn't have much trouble finding a job. He worked in a small branch of a large company with no more than 20 people, all of whom had creative job titles that they probably chose themselves. Web scripters weren't "web scripters" — they were Solution Engineers. Some people were Systems Engineers, but they did exactly the same thing as the Solution Engineers. Trevor chose to refer to himself with the less impressive title of "programmer."

Trevor could tell that he was working with an expert team of engineers and solutionologists based on the way they talked. "We're going to leverage JavaScript interfaces, compartmentalizing and segmenting variables with integrated XML driven frameworks, all compiled with forward momentum." He'd also grown suspicious that some of the acronyms his colleagues used were made up on the spot. "The ID isn't even part of the XML DTD. Can you drop a PLC on the OC ASAP 4ME?"

In spite of the team's expertise, they didn't use any source control. Instead, the team invented their own naming conventions to keep things straight; filename.asp would sit right next to filename_new.asp, filename_new2.asp, filename_2asp.asp, filename_prod.asp, filename_prod2.asp, filename_final.asp, and filename_finalactual.asp. There were even a few versions of files with variations of "new" and "final" in different languages. Development was done by copying a file off the network share, making changes, and copying it back up over the original. Of course, some pages would be in development for a month or more, so occasionally copying the file back up would undo someone else's recent changes. Still, Trevor's insistence on introducing a source control system was met with significant resistance, and he still finds himself having to argue to keep source control.

One of Trevor's colleagues loved agile processes, and "implemented a process so agile it ripped a hole in the space-time continuum allowing us to deliver a failing product several hundred times faster than any other company in existence." Traditional software development practices were too slow, and the team found that moving testing and planning after implementation and delivery moves the delivery date significantly closer.

(Final) Obnoxiously Intrusive Interuption: The 2007 WTF Reader Survey is ending Friday at noon... please share your your feedback!

Trevor is now working on a project that's been in development for nearly a year. Trevor's task is to "write a 'service oriented architecture' — maybe." He sent in a code snippet taken from the application's browser-based interactive multimedia delivery system framework, which he'd been ordered to investigate because a fellow Solution Engineer ("Dan") reasoned that Trevor had broken it.

function checkAnswers() {
    for (i=1; i<10; i++) {
        if (_root["hit"+i].store.substr(4, 1) == i) {
            _root["hit"+i].score = 1;
        } else {
            _root["hit"+i].score = 0;
        score[i-1] = _root["hit"+i].score;
    theTalley = score.toString();
    if (tries == 1 and theTalley == "1,1,1,1,1,1,1,1,1") {
        Feedback_txt.text = feedback_Correct1;
    } else if (tries>1 and theTalley == "1,1,1,1,1,1,1,1,1") {
        Feedback_txt.text = feedback_Correct2;
    } else if (tries == 1 and theTalley<>"1,1,1,1,1,1,1,1,1") {
        Feedback_txt.text = feedback_Incorrect1;
    } else {
        Feedback_txt.text = feedback_Incorrect2;

Those objects that look like classes aren't actually classes, and the variables used are never declared or used outside of this function. So, naturally, the function had never worked. Some of the functions called within checkAnswers() didn't exist. And, since the company now had source control, Trevor could view the file's history, and discovered that the last person to edit the file in weeks was Dan.

The good news is that they should hit their ship date soon, and hopefully testing will go well after that.

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