Monday, May 7, 2007

I was a Programming Apprentice

I began my programming career 40 years ago. I was a college dropout. The company selected me based on my score on an aptitude test. I was lucky; but on the other hand they didn’t pay me much. The job was in a research and development center where most of the other people were chemists or chemical engineers.

Because of the low pay and my lack of experience, management’s expectation of me was lower when compared to the chemists and engineering new hires. I was treated more like an apprentice and I think that gave me an advantage over the professional recruits. Of course, we are comparing different occupations. I never even met a computer science graduate until years later. But many of the starting engineers were writing programs. These engineers were under deadline pressures whereas I was under the radar.

This gave me a chance to fine tune my skills. I was given time to play around with ideas but at the same time I was being paid. I’m wondering if there are young people today that get to start out their programming career like I did.

Today, there are many young kids sitting at home on their computer and creating businesses from their ingenuity and this is great. That could have never happened in 1966. But I was in a structured environment with scientists and engineers as bosses and co-workers. The technical center had one of the best technical libraries in south Texas. I was expected to do things like write research papers and make formal presentations.

I’m not suggesting replacing college degrees with apprenticeships. I wish I had gone back to college. There is no telling how my career would have been different if I had gotten a degree. However, since I had that great job which lasted 13 years, I saw no reason to go back to school. Because of my eventual productivity, I got plenty of raises and I loved what I was doing. I think the company got a good return on investment from the apprenticeship and I got a chance to develop some skills in a real environment that today’s college graduates don’t get.

As an example, early on I began writing a FORTRAN function to analyze arithmetic expressions (like an eval function). I don’t know exactly what my boss thought of my wasting time doing that but it might have been, “well isn’t that cute”. At the time I was supposed to be working on a statistical program for her.

When I finally delivered the statistical program to her, it had what was considered to be a pretty novel feature. Keep in mind, all the programs used punched cards for input. My program allowed you to type arithmetic expressions on cards that could be used to transform the raw data that followed on cards before the statistical analyses were performed. Prior to that, other computer programs had to be written to transform the raw data onto new cards. It ended up being a little more than just “cute”. It also bought me more time in the future to play around with things.

It was a wonderful and fruitful environment to work. I contrast this, to Computer Science graduates today taking jobs developing web sites and working in something reminiscent to me as sweat shops. They are under pressure to make immediate contributions and they probably don’t get a lot of chances to think out of the box.