SAN FRANCISCO – I’ve worked in IT for so long that whole segments of my career tend to blur out. But I can tell you exactly when it started.
I was enrolled in a computer science program at a university in upstate New York, but I was only lukewarm about a career in IT. I was also short of cash. And when I disclosed the situation to my adviser, he gave me a wonderful surprise. He knew of a short-term COBOL programming assignment at a software house in Albany that I could do over spring break. The fee would get me through the rest of the semester!
There was one problem: I didn’t know COBOL. But lack of cash is a powerful motivator, and a few days later I found myself driving east with a COBOL manual in the backseat of my car. My piece of the project (a warehouse management system) turned out to be easy — especially when I figured out that experienced COBOL programmers never wrote new programs, they just modified previously written ones. One week later I headed back to school with a few bucks in my pocket — and a knowledge of COBOL.
My education was derailed a couple of months later when Vance, the project manager in Albany, called to tell me that he was leaving the company. He asked if I would be willing to complete the project for him. It was too good an opportunity to pass up, so I negotiated a one-term leave of absence and headed back to Albany.
It didn’t take more than an hour for Vance to bring me up to speed on project status while I carried his belongings down to his car. I agreed to complete the code, provide missing functionality, test the entire system, and install it at the customer’s site — all in five months. It was an exciting challenge. But the best part was the weekly trip to the bank with another hefty paycheck.
While testing the completed application, I noticed that certain routines were running extremely slowly. It dawned on me that all these routines had been written by Bryce, a contract programmer. When I started debugging his code, I discovered that he wasn’t dividing numbers using normal division operators. Instead he was repeatedly subtracting one number from the other and counting how many such subtractions he could perform until the result was negative. Yikes!
Rewriting Bryce’s routines was easy. Understanding why he had used such an unusual algorithm was not. Then I found out that Bryce’s pay was based on the number of lines of code he wrote. This was hardly an inducement for elegant programming, and I eased him out of the loop.
When we finished the project on schedule, the company offered me a full-time job. Instead, I headed back to school. Over the next few years, thinking about how satisfying it had been to head a complex programming job and being responsible for everything from coding to project and personnel management, I was motivated to nail some of my tougher academic assignments. Eventually I got a master’s degree and a high-paying consulting position.
As for Bryce, someone told me that he had moved on to a government job. It makes me wonder, sometimes — especially when I find myself waiting endlessly for the online DMV site to accept my registration update — if deep down in the code, some of Bryce’s repeated subtractions might be looping.