I’ve never pretended otherwise… I’m not a good employee. I’ve mostly managed to avoid it over the years, with a lack of economic stability to show for it, but what the hell… it has mostly been fun.
This little snippet torn from an old notebook is near the end of my brief flirtation with being a software engineer in 1980. I wrote some 8085 assembler code to run concrete batching systems, and butted heads with management when they got bitten by the bug of structured design religion.
The writing here is prophetic… I had already carved out a niche as a freelancer and was well into my textbook, and being an employee wasn’t much fun at all. This is yet three years before I hit the road on a computerized bicycle, but I was obviously not doing well with authority. The rear of the same piece of paper — dated May 12, 1980 — says simply, “Letter of resignation delivered today. Sad, but true. Also exciting.”
Given that I had a mortgage on a house on the outskirts of Columbus, as well as a baby only six weeks old, this was a crazy and irresponsible risk. I would find myself in a lot of debt before long… lasting until 1984 when I finally managed to sell the house while pedaling through Florida.
Speaking of pedaling through Florida, one anecdote can summarize the entire 6-month epoch with this company (for which I sold my Victorian house in Louisville, gave up the lucrative Corning contract, and moved).
Management had gone to a 1980 seminar on structured design put on by Yourdon and Constantine, and got religion. My manager, whom we will call Jerry, asked to see my software. He was not a programmer, but sure, whatever. I brought in my listing, about a half inch thick, and forgot all about it. There’s no way he would make any sense of the code.
A few days later, he called me into his office (which always reeked of cigarette smoke). “You’ve got some work to do!” he snapped, furious. I looked down at his desk and my 8085 macro assembler listing was heavily annotated in red pencil… with every JUMP instruction circled. “This is now a go-to-less shop. You’ve got to get these out of here.”
“Jerry, that’s assembler… very different from high level.”
“I don’t want a bunch of God-damn excuses! You have two weeks.”
Well, shoot. This is ridiculous. I sat and stared at the code for a while, then got a flash of inspiration and set to work.
Every place there was a jump, conditional or unconditional, I put the target address into the HL register, did an SPHL to copy it to the stack pointer, then did a RETURN followed by a form feed and a “title block” describing the new “module.” The flow of control was absolutely unchanged, although with a few extra instructions it was marginally slower. But it was controlling giant industrial batching equipment, so that wouldn’t matter.
I dropped the listing, now almost two inches thick, onto Jerry’s desk, and went home. He would either spot the joke and respond with anger, or (hopefully) be convinced that I had magically converted the program into a proper structured design application. Some of those title blocks were pretty fanciful…
But he bought it! Suddenly I was an expert software engineer, and the application made it into distribution. Around the same time, I quit to work full-time on my textbook and other projects, and forgot all about it…
…until about 3.5 years later, when I was pedaling across the United States. I got a message from a new employee of the company who was charged with maintenance of their legacy control system, and he was trying to make sense of my listing. “What are you, I mean, is this, you know, I don’t understand… what the heck are you DOING here?”
“Ah! There’s only one thing you have to know,” I told him, then went on to relate the story of Jerry and the structured design hack. By the end he was practically rolling on the floor, told me they had long since fired that guy, and now shared my little secret about virtual software modules.