Developer Hell

You are about to hear the most perplexing and disturbing software development story of all time, hyperbole-free.

Rewind 6.5 years. I was fresh out of college and eager to hack. I soon came across the exalted Software Development Plan. The SDP was gospel, but its authors retired some years earlier. No one dared to change the prized document– no one wanted to change it. The SDP was our job instruction manual, providing procedures and guidance for everything we would ever need to do.

IDE

In accordance with the SDP, we were to use Microsoft Word as our IDE. You know, the document editor of Microsoft Office. I spent an entire week configuring Word 97 (in 2003) to be code-friendly by disabling “features” like auto-spell-correction and auto-capitalization. I disabled the spell-checker and grammar-checker for obvious reasons. Configuring small margins and applying landscape mode were ways to get longer lines, and hiding page breaks made browsing code slightly more acceptable.

As SDP followers, we were committed to using dozens of SDP-defined Word styles. A style is an abstraction that you can assign to parts of your document so they appear a certain way (e.g. size 13 Courrier New, bold and italic). A change in the style is reflected anywhere that style is applied, document-wide. Not a bad idea. We used styles to mark different sections of code, applying different styles for inline comments, function/method documentation, source code, file name, author, date, etc. The intended visual aspect of styles was merely a side effect of what we were really trying to do– to mark our Word document with meta data to facilitate the extraction of our code. More on that later.

A friend and coworker of mine shared a similar disgust of this charlatan IDE. Together, we humbly presented a case for the use of Notepad and plain text over Word and its proprietary binary format. Why Notepad? Well, we had no privileges to install anything, not to mention that they wiped out our user profiles every night. We couldn’t so much as set our desktop wallpaper without it being reset the next day. wtf. Seriously. My morning ritual consisted of hot cocoa and the manual restoration of my settings (show file extensions, show hidden files, detailed view instead of icon view, etc.). I would have written a script for that, but I left before I had the chance. I digress.

We were denied Notepad because of certain “key” features and benefits Word 97 provided. 1. You can store pictures in Word documents. 2. You can use a single document to store multiple code files. I perused our entire code base, and to my dismay, I found only one image which could have easily been reproduced in ascii. Storing multiple code files into a single word document just made it harder to find things. We were already without grep. Were we paying for past sins?

Compilation

How did we compile our code? Compilation might be a click of a button or even non-existent for you, but it was a crusade for us.

Step 1: Extraction from .doc. Oh, ye poor code festering in .doc’s mediocrity, thou art not forgotten. The Extract Tool shall set you free! We had to save our .doc files as .rtf files. We then used our in-house Extract Tool, written in a combination of Tcl and C and assigned to me to maintain, to parse these .rtf files. Remember those Microsoft Word styles? The Extract Tool keyed on styles to extract the proper sections of the document, yielding separated ascii code files with mangled white space. Fail. Good thing we had no projects written in Python, right? The white space screw-up was the result of Microsoft defining spacing using twips (twentieth of an inch point) and the Extract Tool having to translate twips to number of spaces. Inevitably, our love affair with Microsoft brought about an upgrade to Word 2000… in 2003. With the introduction of a new flavor of smart quotes and a host of other features, the once-reliable Extract Tool needed immediate updating. By me. By reading Microsoft’s rich text format manual. omg.

Step 2: Burning the code to cd. The language we used was so ancient and rare that the only compiler ever made for it ran on VMS on an ancient DEC VAX with no networking hardware. And so, we had to burn our code onto a cd. Simple enough, right? Wrong. Handling all forms of blank media required internal certification. As part of the certification ceremony, we learned the passcodes to the blank media drawer. It was like having the passcodes to Zion’s mainframe. Once we had a blank cd, we had to wait in line for the only cd burner in the office. We weren’t trusted enough to have our own cd burners, so they erected this disc-burning station in the middle of the hallway that was easy to monitor. Before cutting a disc, we had to upload our files and fill out a ludicrously long questionnaire, documenting our intents and reasons for using the burner. Half an hour later… voila. A burned disc with source code.

Step 3: Journey to the DEC. Our entire project had two DEC VAX computers, conveniently located hundreds of feet away behind three locked doors and two asbestos warning signs. In order to insure the safety of our precious disc, the SDP mandated that two individuals with courrier training lock the disc in a secure, cut-proof bag (with an actual Master lock) and escort that bag to the VAX computers. Fortunately, I had courrier training and gained a sympathetic ally who didn’t mind the walk.

Step 4: Compiling. At this point, excitement was brewing and I could taste the impending success– a new feature, about to be run for the first time! I knew it would work, since I had reviewed my code over and over to avoid repeating this developer tedium. After inserting the cd into the server and logging in to the nearest terminal, I was ready. Mount cd. Check. Copy files to local hard drive. Check. Compile… aw, shit. Compile error. fml.

Step 5: Destroy burned cd. We had to take a pair of scissors and scratch the data-infused aluminum off of the cd. Once complete, the cds were then taken away for secondary destruction.

Step 6: Wash, rinse, repeat, lose part of soul. Le sigh. It was impossible to express any anger or resentment because by this point, one was entirely spent. It was time to eat a Skinny Cow ice cream sandwich, suck it up, and start over.

Versioning

We stored all the Word code on a shared drive. If you tried to open a file someone already opened, you were forced into read-only mode. What’s this? No merging? EVER? Brilliant. How about older versions? Just ask IT for a backup. lolpuke. We actually did lose our data once, and 30 people sat around for three days and chatted while IT finally restored a backup that was seven days old. Go team.

Conclusion

I left that place years ago with no remorse. I am free from the SDP obsession, and I thought I’d document and share that experience with you. Peace.

4 comments

  1. “It was like having the passcodes to Zion’s mainframe”

    Dennis, that’s comedy gold. LOL. I’m sure it was hell though, no doubt.

    Great post dude :-)

  2. Dear Author krayne.org !
    Amusing state of affairs

  3. I want to quote your post in my blog. It can?
    And you et an account on Twitter?

  4. My name is nak & i would like to collaborate musically with you.

Leave a comment