Losing My First Programming Job

◄ Newer Article
◄ Newer Programming Article

Back in the early 80s, I briefly worked for a tiny company in East Glacier, Montana writing school records software for Indian Reservations and rural school districts across Montana.

A refugee of the IBM team that created the language APL founded and ran the company. I never knew his full backstory story, but I'm sure it was colorful. He had the look of the reclusive Vietnam veterans that were common in the mountainous backwoods of Montana in the decade the war: beard, long hair, haunted eyes. I never knew how he got to East Glacier nor how he started the company in such an unlikely location.

Image by Sam Beebe, licensed by CC BY 2.0

East Glacier, Montana

The office of the company, a run down cottage, sat just off the highway behind the fire station. A scale model of a cartoon H-Bomb in the form of a parade float waited behind the house half covered in snow. I remember seeing it at an antinuclear protest march a year or two earlier 200 miles south in Missoula.

Two identical Alpha Romero GTVs sat parked in the slushy snow out front. The house's front room and kitchen had been converted into a office, with a receptionist/office manager desk. There were two side rooms serving as an office and a workroom. The programming work happened in a modern log building about a half block down the alley behind the Whistling Swan Motel.

It never did occur to me that any of this was odd.

My interview for the position of Staff Programmer commenced immediately at the end of my four hour winter weather drive to East Glacier. It started with an exam. Bill, the owner, told me that he brought it with him from IBM as it was a test given to all prospective IBM programmers. He sat me in the side room and said he'd be back in a couple hours.

The test consisted of snippets of generic pseudo code and a description of what the code was supposed to accomplish. I believe the examples were based on the language Algol. I was to identify if the code was correct, and if not correct, explain how it could be fixed. It went on for pages and pages.

I finished the exam in forty-five minutes. I left the room and handed it to his assistant at the front desk. She said that Bill was over in the other building and she would call him.

Ten minutes later, he returned saying that I must have missed pages because nobody could possibly have finished in such a short time. We checked, and, no, I had done it all. He seemed annoyed with me, assuming I had not taken his exam seriously. We sat down together as he started to score the test. He challenged me on a couple of my answers and I remember scrambling to explain, only to find that he was leading me on, I had nailed the answer correctly. I earned a perfect score on the exam. Strangely, he expressed even more annoyance. He said he'd never seen the exam completed so quickly nor ever seen a 100% score.

He offered the job to me on the spot.

He wanted me to begin working that very instant: the start of our first major conflict in a long line of clashes. I wanted to accept the job, but I felt I should have the time to close out my life two hundred miles away in Missoula. He didn't want me to leave, saying I could do the move on my own time on the weekends. To his obvious anger, I left town anyway, not sure if I had a job or not.

Image by diosthenese, licensed by CC BY 2.0

I rented a cabin on the
Bison Creek Ranch
I never found out what Moon Light Steak Fries were.

Over the next few days of repeated phone calls, we came to an agreement. I had a hell of a time finding a place to live, I ended up in a dark, cold and musty highway motel at my own expense. East Glacier is a tourist town in the Summer and a ghost town in the winter.

Most landlords wanted short-term summer rentals, not permanent residents. It took a month to find a real place to live: an A-frame cabin with a failed septic system a few miles from town on the Bison Creek Ranch. The only bathroom available to me was at the office in town.

The company's software targeted the IBM System/23 Datamaster containing 64K of RAM and twin 8 inch floppy disks. The language was a flavor of BASIC ported from the larger IBM mainframes, systems 34 and 36. The company also owned a closely related computer, IBM 5120 APL machine with an actual APL keyboard, but the company's software only used the BASIC machines.

The software ran from the floppy disks and structured to execute in three phases. The first phase consisted of user interaction to set up a query or action for the data living on the second floppy. The user would then pull the program disk, and insert the IBM Sort Disk. The filtering and sorting activity staged in the first phase would execute, then the user would remove the Sort disk and replace it with program disk and the application would continue. The program proceeded in this cycle of repetitive disk swapping.

Bill and I frequently butted heads over programming. He was arrogant. So was I.

He would tell me how to code something, and I would counter that my method was better. Sometimes, I would win the argument, sometimes I didn't. I really resented it when he made me implement what I thought was an inferior algorithm. I'd occasionally implement both methods, just to prove that my technique was both faster and smaller - but we only ever used his version.

A programming assignment that I deemed impossible triggered the end of my employment after only six months. The topic was school scheduling. I was given a school with a set of classrooms (some with special characteristics), a set of students (each including preferences and requirements for courses to take), and a set of teachers (each with teaching preferences, classroom preferences, and subject certifications). I was to mix them all together to give schedules to all students, teachers and classrooms while minimizing the number of times that students and teachers need to move to a different classroom. There were to be no upper bounds on the number of students, teachers or classrooms.

Image by Marcin Wichary, licensed by CC BY 2.0

IBM System/23 Datamaster

This is a triple matching problem that surely must be NP-hard. However, not yet having formally studied combinatorics, I did not have the vocabulary to truly discuss this proposal in such terms. Intuition, however, told me that this was not something that could be solved in real time in 64K RAM by a BASIC program with only 2.2MB of storage available at one time.

I expressed my opinion that it was infeasible. Bill pushed back saying schools all over the world do this without computers, so it was possible. I pointed out that they probably don't do it optimally as required by my assignment. No, I was not allowed to interview customers on how they did scheduling. Bill insisted I start. I asked if I could use the APL machine's matrix manipulation for the problem. He declined saying it must be done in BASIC.

I chewed over this assignment for a week, but found only roadblocks. The software would be useless if it took days to run and a user had to swap floppies every few minutes. Saddled with a programming language with "array" as the most sophisticated data structure, it seemed depressingly impossible.

At the next weekly meeting, the marketing guy reported that all the school customers were quite excited by the new scheduling software that we were releasing in the Fall. I was dumbfounded and said again that I didn't think the project was feasible. As it was late May, I said it was preposterous to complete, test and deploy by August. It was a full year premature to even think about talking to customers.

Bill immediately ended the meeting and cleared the room of everyone but himself and me. He then verbally tore me to shreds for my pessimism. I was supposedly out of line to dare to speak discouraging words in front of other staff. He went on for twenty minutes on how he knew more than I did about software feasibility. He commanded me to produce the scheduling software within one month.

Later in the day, the marketing guy came to me and chewed me out for being constantly cynical and sabotaging his efforts to sell the software.

The next day was payday. Bill came in and said that my paycheck would be a couple week late this month. While I knew that the company was small and this might happen occasionally, I was angry that there had been no warning.

Image by Loco Steve, licensed by CC BY 2.0

My mountain bike route home

When I discovered that other employees had receive their paychecks, I decided that I had enough. I silently vowed to quit. That evening, I wrote my resignation letter giving three weeks notice promising I would complete my pending projects minus the scheduling problem.

The next morning, I presented it to Bill. He read it silently and then, swearing, he threw me out of the building.

With my heart pounding, I fled like a fugitive on my mountain bike along the railroad tracks back to my cabin.

I stewed for a couple more hours then loaded my backpack with several days of provisions. I hiked into the Two Medicine wilderness, telling no one where I was going and not really caring if I ever returned.

Other stories related to this era of my life: