A. Thompson didn’t realize it at the time, but he had taken a job as a Third-Class Programmer. For those unfamiliar with this class, those in it are considered to be even lower than Contractors (i.e., the second-class). They have far less responsibilities, no latitude to make any decision at any level, and always get assigned the “dirty work.” In fact, some even consider it an act of charity to call these poor folks “programmers” at all.
A.’s new job was at a company I’ll call Herald Media Services. At the time, they were the largest (in fact, one of the only) suppliers of cable television listing data. Although Herald did all sorts of interesting things with this information, A’s department focused entirely on “new headend setup.” They didn’t do any of the fun stuff like configuring headend equipment; they simply had to generate a pipe-delimited information file containing locale-specific channel information. And as Third-Class Programmers, they had to generate this file by hand.
Herald’s Central Database – a massive Sybase installation distributed across several AIX servers – stored an incredible amount of detailed television data. Actors, episodes, television shows, networks – it had everything. Well, just about everything. The one thing it was missing was local channel information, i.e., something that mapped Comedy Central to channel 29 for Adelphia subscribers in Brighton. And this is where A.’s group came in: they manually put this data in the pipe-delimited information files.
To make matters worse, there was no real way for these files to be tested. When a new information file was sent to a headend, someone from A.’s group would have to physically be at the office at deployment time (3:00AM) just to make sure that there wasn’t a missing pipe or another anomaly. Because the file was edited by hand, there often would be a mistake here or there.
When A. realized that his “programming” job primarily involved data entry, he thought he’d put his college education to use and figure out a way automate the file creation. After all, the locale-specific data was stored in a separate database, so all A. would have to do is write a little script that merged the two datasets.
A. shared this idea with a fellow Third-Class Programmer and was firmly warned not to try it. The Professional IT Department (i.e. the First Class Programmers) had already declared that an automated merging was impossible, impractical, and too expensive. Nevertheless, A. disregarded his coworker’s advice and forged ahead with his little project.
After a few weeks of playing around in his spare time, A. had created a script that would download the datafiles via FTP from the Sybase servers, grab a dataset from SQL Server, and then join the data. In thirty seconds, this script accomplished nearly a week’s worth of work and provided the added benefit of preventing those nasty 3AM “data anomolies.”
The generous fellow he was, A. shared the script with his fellow Third-Class Programmers, and they too were able to automate the majority of their job. All was going well for a couple weeks, until A. and his team received The Email: they were to immediately cease and desist utilizing using A.’s script until the Professional IT Department could thoroughly review it. A. also received a personal email: he was to immediately report to Conference Room C.
A. nervously headed over to Conference Room C. He entered the small, dark room and was sternly told by one of the six managers present to take a seat. Several eternal minutes of awkward silence passed and the meeting began. What followed was a thirty-minute, six-on-one reprimand session, with each manager reminding A. how serious of a problem his script was and how critical it was for proper procedure to be followed.
It was the Professional IT Department’s job to write scripts, and they had already analyzed and assessed that the automation was not feasible. By writing the script, A. had not only made the Professional IT Department look bad, but he had spent time on unauthorized project. But because this was A.’s first infraction, and because he was so new, they decided to let him off with a warning; he would only get “written up” for this incident and not “formally disciplined.”
Embarrassed and disheartened, A. sauntered back to desk, wishing he had the guts to speak up and yell back at the managers. No matter, that was his cue to start looking for a new job.
A month or so later, the Professional IT Department sent out a “big announcement” about a new automation script they had written and a mandate that all headend listing files must be generated with only that script. A. checked the script and noticed that it was almost identical to the “improper” script he had created; the only difference was that his name on the comment header was replaced with someone else’s in the Professional IT Department.
Thankfully, A. was able to put in his resignation a few weeks later. Herald actually offered him a position in the Professional IT Department and a “generous” $0.11/hr raise, but A. decided to turn it down. Ironically, almost ten years from that day, A. started work at a company that uses that same pipe-delimited data generated from Herald Media Services. Hopefully, it’s still automatically generated.