Wednesday, July 18, 2007

Remembering Brief & Freedom of Being Unique

Back in the 80's I used the text editor, Brief.  Many of us did.  It was a wonderful product with many features but the feature I remember most was the use of the Home key.

If you hit the Home key once, it would move the cursor to the beginning of the line.  If you hit it again it would go to the beginning of the line at the top of the screen.  Finally if you hit the Home key a 3rd time it would move the cursor to the beginning of the document.

This was a unique feature.  I don't know if you can credit it to the Brief developers but it was my first encounter with the commands.  I thought the idea of using only one key to handle 3 functions was brilliant. It meant your fingers only had to find 1 key and after that the effort to hit it 1,2 or 3 times was insignificant.

Today, there is a tremendous desire to conform; to be in compliance with the look and feel, do what the user expects.  Look and feel, you don't hear that phrase much anymore.  I wonder what the landscape would look like if Microsoft didn't simply buy their way out of the Apple lawsuit over look and feel.

There was that great fear lead by the League for Programming Freedom over being able to copyright the look and feel.  Developers would have to always think out of the box; forced to come up with something new.

I wonder if Apple had a grand plan when they sued.  They tricked Microsoft into paying them for their look and feel.  Microsoft comes up with the compliance schemes for developers to follow.  We get trained to think we need to be compliant.  And Apple marches off and builds great new products like the iPhone with looks and feels that change our culture.

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.

Sunday, April 29, 2007

I learned to program with IBM Programmed Instruction courses.

I began programming 40 years ago. I was given the job to write software with absolutely no prior experience. (Yeah, I know. I was handed a career on a silver platter. It was a golden era for me.) I didn’t even know what programming was but I began working on a FORTRAN II program within a few days after I started a training course. My first application was a maintenance job. I don’t remember exactly what it was about but it was short. It couldn’t have been more than a 100 lines long.

How did I start so quickly? I was given a set of maybe 7 booklets from IBM that taught FORTRAN programming. They used the technique of “programmed instruction”. It assumed no prior knowledge of FORTRAN or programming. The total number of pages in the course was probably less than 300 pages.

The mechanics of programmed instruction is very simple. A numbered paragraph states a fact. A multiple choice question follows. An answer book tells you what to do depending on your selected answer. Actually it would tell you to continue if you answered correctly; otherwise it would tell you to start over at a lower numbered paragraph to reinforce your memory or understanding. I found it to be very easy, but I’m sure that’s because people developing the content were very skilled.

However, it didn’t prepare me for everything. After informing my boss that I was done with the course, she gave me my first job. It was to do something to a small program she had written. I carefully made the changes. I went through the code over and over. I fully expected my changes to be perfect. Now up to that point, I never saw the computer. Nowadays I never write more than a few lines before I compile and run. Well, I was devastated when I ran the program through the IBM 1620 computer the first time. The compiler produced hundreds of errors. I learned an important new term that day. The programmed instruction course hadn’t mentioned, “Syntax error”.

Over the next few days I got my first taste of the pain in computer programming. At the same time, it was thrilling. I became so excited about programming; I went through the COBOL and Assembly Language programmed courses in the next 6 months. It wasn’t an academic exercise. I used all 3 languages in my new job.

Friday, April 27, 2007

An aptitude test started my programming career

Starting this blog

Several months ago, members of the Houston Adobe User’s Group, HoustonAUG, were asked to present some of their work to the group. As an incentive, presenters were given the chance to win a copy of Adobe Studio 8. Past meetings had been held at the Art Institute of Houston in a vacant classroom but this meeting was in a live classroom with students who were about to enter the job market.

Like most grandfatherly speakers with a young audience I began using historical references pulled from my 40 year career. However, the students steered me away from my unprepared presentation. We ended up talking about what it was going to be like to be a programmer. For me, it was a very enjoyable evening. I think they enjoyed hearing about some of my experiences.

That experience awakened something in me. I found I really enjoyed sharing some things with the students. I know I can’t become an instructor. I understand you have to have advanced degrees to teach there. I hoping that I can use blogging to vent my new found interest.

Recently I read “Dreaming in Code” by Scott Rosenberg. The author, a reporter, was allowed to follow a software project from the onset. I thought the book was unique and very good but I was relieved to finish it. It brought back many of my purposefully hidden memories about past projects. It seems my most fulfilling projects were also the most stressful. I guess the fun of starting and the relief from finishing projects gets us through the middle. I have no choice anyway. I am compelled to write programs. I can’t imagine what I would have been if I had been born a generation earlier.

I’m not starting this blog with any expectations that someone will actually read it. Maybe if my grandkids stumble across it one day they might be interested to find out about the other life of their grandfather.

My Beginning

I had been working as a laboratory technician at the PPG Industries Chemical Division Technical Center in Corpus Christi, TX. It was a pretty good job for a college dropout. It was great place to work and I was very lucky to get the job but it didn’t really seem to be a career for me. In 1966, management announced they were going to offer a computer programming job to one of the non senior level technicians. They gave us an aptitude test and I “won”. I didn’t even know what computer programming was.

Aptitude tests seemed to disappear after that. I believe they became politically incorrect at some point. From my own experience I think companies should bring them back; especially when recruiting entry level programmers. I did a quick little web search on “aptitude tests”. It seems the meaning has become somewhat convoluted. For example, I saw references to aptitude tests for different programming languages. Those tests are an attempt to measure someone’s skill in a programming language. I believe those kinds of tests are not very effective at finding a successful employee. The test I took assumed no knowledge of programming.