Monday, December 26, 2011

Clerks Don't Code

It's 4:45PM, some day in late June, 1981. As the second hand passes from twelve to one, my officemate Bob pops up from his chair, grabs his jacket, and tosses a gleeful, "See you tomorrow" over his shoulder as he bounds down the hall towards the elevator.

The Bell Labs workday is officially over. It's time to learn.

I close the door to my office and pull off the cover of my TI Silent-700 terminal, a thermal-paper typewriter with two rubber cups hanging off the back. I plug my telephone handset into the rubber cups (a.k.a., acoustic couplers), dial up the VAX 11/780 and wait for the UNIX login prompt to appear on the thermal-paper that scrolls past the printhead just above the keyboard.

Although personal computers have hit the market, they're still considered something for kids and hobbyists, not businesses. The current trend in business is the move from room-size mainframe computers running batch jobs (one user at a time) to refrigerator-size minicomputers running time-sharing systems (many users at a time). Our VAX 11/780 is one of the more powerful minicomputers nominally supporting thirty to forty users at once. However, after 4:45 the number of users drops to fewer than ten and sometimes I get the whole machine to myself.

It's not as though I know what to do with an entire VAX when I get it. Even if I did, with its 300-baud modem (that's one third of one-kilobit) and thermal-paper display, my Silent-700 can't keep up with much.

I log into the system and type: learn.

learn is a program designed to teach people how to use UNIX. learn is my infinitely patient tutor and mentor. Step-by-step, learn explains an activity, provides me opportunities to try it, and then lets me know whether or not I've done it correctly. If not, we repeat the process as many times as it takes for me to get it.

In 1981 there are no icons, no WYSIWYG (what-you-see-is-what-you-get) editors, no graphical interfaces, no mice. To use a computer, you type. learn is showing me how to navigate the UNIX shell (the basic command-line interface) that lets you find files and folders, and lets you run applications. learn is teaching me how to use ed, the line editor used to create everything from documents to programs.

If you want to format text for printing, you can't just sweep a block of text with your non-existent mouse and select "bold" from a non-existent menu. Instead, you have to enter codes that tell the printer what you want it to do. Basic document formatting requires something akin to HTML, something we call NROFF. learn is teaching me NROFF.

And so it goes, day after day, week after week, month after month. Every night at 4:45, it's just me and learn.

Day Gig
My day-job is to manage the document library for a large development project called 3B5, a new UNIX washing-machine-sized minicomputer based on a new microprocessor the BELLMAC-32.

In large development projects like 3B5, it's important to document the design and architecture of various components. It's even more important to ensure that changes to design are reflected in the documentation. You've got Joe working on thingamawat-A and Mary working whosiwit-B. You don't want to find out three months down the road that Joe's thingamawat no longer works with Mary's whosiwit just because Mary decided to change her design and forgot to tell anyone about it.

I participate in "Change Control" Meetings where developers propose design changes, a group assesses the impact of those changes, and changes are denied or approved. If approved, the developer must update his design document. My job is to to make sure that the developer accurately updates her document and catalog the new document in the library. I also have to respond to documentation requests. Someone emails me, I photocopy what they want and send the copies to them via company mail.

One night, learn introduces me to a new topic, AWK, a programming language named for its creators, Al Aho, Brian Kernighan and Peter Weinberger, guys I would later get to know and work with. AWK's designed for processing text-based information. It has wonderful tools for pattern recognition and text replacement. As learn walks me through the basics I feel as though I've come home. Everything about AWK comes easily. Before I know it, I've completed learn's course.

Standing at the photocopier the next morning, I think, "Why couldn't I just write an AWK program to do this? Why not have AWK read the email request, figure out what documents people want, and then email the documents back to the requestor?"

Over the next few weeks, I spend my evenings writing the software that within a month will completely automate my job. After five weeks, I stop even checking to see if my AWK scripts have properly processed the requests. With my job automated, I spend more time with learn.

Clerks Don't Code
One day, I'm sitting in my office after work watching my AWK scripts scroll by. My feet are up on the desk and my guitar is in my hands. Suddenly, the door swings open. It's my boss, Dave.

He looks at me, my guitar and my Silent-700 scrolling away. He says, "Mark, would you please come to my office."

I follow him wondering what's up. Dave closes the door and asks me to take a seat. He sits down across from me, looks me in the eye and explains. "I understand that you've been writing programs. Clerks aren't supposed to be writing programs. Clerks don't code."

My heart sinks. I think, "I really need this job. I need the healthcare. I was just trying to learn as much as I could."

Dave says, "So, you're not a clerk any more."

I die.

"We're moving you to a development team."

I think, "I'll just go pack up. I didn't mean... You're what?"

The next day, my trusty Silent-700 is replaced by a brand new HP-2621 with a 2400-baud modem and Step by step, with infinite patience, learn is teaching me "C", the programming language of UNIX.

Happy Monday,

No comments:

Post a Comment

Read, smile, think and post a message to let us know how this article inspired you...