As you may recall, I was hired as a mainframe assembler programmer at Blue Cross of Massachusetts in 1972. My actual title was Senior Systems Designer, which was shorthand for "I need to pay this programmer more money than I pay some others." To be fair, the job description did have additional responsibilities defined, and one was expected to grow into them.
There was in production a kludge of a program, one that people had nicknamed "the cowcatcher" because when anything related to its function had to be automated people threw it into this program, and the program grew like Topsy.
Somehow I became responsible for the cowcatcher's maintenance and for adding any additional functions. "Somehow" is shorthand for "I was junior and sh*t flows downhill."
The program did a lot of things it was not initially designed to do, things that had been added by different programmers over time. As a result, any underlying structure to the program had long since disappeared and trying to follow the logic for some of the functions was a butt ugly process, although not as ugly a process as trying to add a new function to it.
It had reached the point where a simple change, one that "should" take a half day or so, took two or three days to make, and I began laying the groundwork for a rewrite.
I had other responsibilities as well, and the person who gave me the requirements for the cowcatcher was one of several Directors in the data processing area, Rick, who was not my boss. Over time I made him see that the rewrite had to be done. Not only was it taking too long to make changes, but I couldn't even give a time estimate on a change for a day or so after receiving the information on it.
Rick and I reached a point where we agreed that I would begin the rewrite on a certain date, and from that time until it was done there would be no more changes to the process, no programming changes to the cowcatcher. I had negotiated with my boss and obtained the time away from other efforts in order to do this rewrite.
Two or three days into the rewrite Rick came to me and said "I need a change made to the cowcatcher." I reminded him of our deal and pointed out that any time taken away from development of the new program put us at risk regarding its completion. I had negotiated two months for it, and had to meet that deadline.
Well, he "really" needed the change, it was "important," etc. I took a couple of days from the development schedule, and made the change.
A couple of weeks later he came to me again, "needing" another change to the cowcatcher.
Donnie: "Good luck."
Rick: "What do you mean, 'good luck?'"
Donnie: "I'm not going to make the change, Rick."
Rick: "What do you mean you're not going to make the change?"
(Cracking myself up internally, not showing it, I thought "Sheesh. There was only one two-syllable word in that sentence.")
Donnie: "We have an agreement and we can't keep breaking it. Soon the new program will be incomplete, the deadline will have passed, and we'll be stuck with the cowcatcher forever."
Rick: "You have to make the change. I'm *telling* you to make the change."
I turned away from him and back to the work I was doing, and then heard:
Rick: "I can have you fired. What then?"
I turned back to face him again.
Donnie: "Then I'll get another job. If I get lucky I'll get a job at a company where people keep their word."
He stomped off and I heard no more about it that day.
The next day he came to me, this time hat in hand, pleading for the change and promising to stop any further attempts to change the cowcatcher. From this I inferred that he had gone to my boss (or perhaps even higher) in an attempt to have me fired and had been rebuffed. Also that he really *needed* the change.
Donnie: "OK, Rick."
Several days later I was a carbon copy recipient of a memo from Rick to all users of the cowcatcher, informing them that it was being rewritten and that there would be no further changes allowed to the existing one.
Just to be clear: I wasn't just defending some noble cause. My resistance was motivated partially by self-interest. It was frustrating and painful to have to figure out how to make changes or add functions to the cowcatcher, spending two or three days to accomplish what should have been a half day task.
As a sort of post script, I can tell you that the new "program" was actually a small system, about eight programs I think, that (for you dinosaur techies) made use of an HDAM database. During its entire production life it never went down except deliberately, at which time it gave the operator a message and built a table of information in memory for anyone who needed to debug the problem.
And I documented the bloody Hell out of it - both in the code and externally, with flow charts at the function level and supporting typed text.
Several years later it was decided to switch from IBM to Honeywell, swapping out twin 158's for a pair of 6000's. I began the process of deserting the sinking ship, but before I got completely away I was assigned to a group to coordinate the transition with Honeywell's software people.
One day the subject of "my" system came up. I was no longer associated with it and the only other person in the room who knew I had written it was my boss, Drew. One of the Honeywell people said "By the way, this is the best documented application software we've ever seen at any site."
Drew, who was a great tease, sucked on his pipe a moment, then said "That can't be."