First of the Horror Stories

Okay. It's time. I've decided to talk about it.

It's been a long time coming, and some friends of mine have been waiting with bated breath. I'm going to talk about my time at my previous job. I should make it clear to my readers that this is a an accurate depiction of what I was doing. There's no hyperbole, and while I am not going to anonymise anything, I'm also not going to be naming any names that I don't have to.

I really hate PHP. I don't really hate PHP because I read a few lines once and I didn't like the punctuation marks used by the language, I really hate PHP for some really good reasons. The language stinks and I used it for a number of years. Since I started my job in mid 2001 as a casual programmer to when I finished up in Janurary 2005. That's 4.5 years.

I'm going to be writing a series of articles on my time at that job, so I'm going to start with the basics: What was I doing? I was working for a credit reporting agency as a programmer working on their internal and customer-facing web systems. It wouldn't be accurate to call that an 'Intranet' and an 'Extranet' because they were all pointed to the same single webserver.

As a developer, I had a login on that linux webserver, and a series of linux MySQL database servers. There was an Oracle box running SCO unix. I worked on source code using ''vi''. All my coworkers at the time of my employment in '01 were using ''vi'' for all their development because it provided file locking. We all crawled around the same sourcetree simultaneously, and we knew not to edit a file because ''vi'' would warn us.

Of course, no one was using vi, we were all using vim and had been since forever. Redhat ships with a minimal, cut down, version of vim without syntax highlighting or anything useful for software develompent enabled. It was a month or two before I broke down and compiled my own version in my home directory so I could access modern innovations like colour in my editor.

Now, you might be curious as to what we used for source control, or horrified that we would edit code on a live webserver. No, sir reader, we didn't edit code live on the webserver, that would be silly. Each module had a path like /src/modulename/live and a /src/modulename/test and a /src/modulename/dev. Allowing us to edit out code in 'dev', test it, and then copy it to the live tree.

And now, my reader, here is the kicker. CVS was not used. Nor was RCS. No, no source control at all was used. If you needed to revert a file because you fatfingered an rm, you had to go to the IT manager, who was also the sole sysadmin, and ask him to restore it from tape.

I asked repeatedly for ''permission'' to use CVS, and that was repeatedly denied, because the benefit(!?) couldn't be seen, and it was too hard(!?!).

By mid 2004, we had 15 developers, 1 million lines of code in the dev trees, and 800 thousand lines of code in production. Where source control and change management amounted to "Writing your name and a comment about what you did".

I had a few safeguards in place - that is to say, whenever I moved a sourcefile to the live system from the dev system I had a system for doing diffs of the files, unifying them, and when I finally did the copy, I kept a verbatim copy of the live and dev versions, in order to allow me to revert changes. This was of course frowned upon because it meant I had hundreds of megs of data in my home directory and space on the webserver was at a premium.

Blarg. That's the intro.


Duncan McGreggor said...

I look forward to additional Chronicles of Woe. It feels like reading the original BOFH series ;-) Only true :-(


jochem said...

I can see where this is going! The suspense is already killing! :)