|
My Career as a Software Engineer
January 24th, 2016 will mark my 39th anniversary as being a software
developer. This article documents the highlights (and
lowlights) of my career.
Formal Education
I graduated from Okeene High School in Okeene, Oklahoma in
1973. I knew that I wanted some kind of a career related to
mathematics. However, at that time, the only occupational
choices seemed to be an accountant or an actuary. I had taken an
accounting class in high school but I wasn't too interested in it, and
I wasn't even sure what an actuary was. In the fall of 1973,
I entered college at Southwestern State College (SWSC) at Weatherford,
OK, which later became Southwestern Oklahoma State University
(SWOSU).
In my second semester at SWSC, in the spring of 1974, I was intrigued
by the brief "Computer Science" category in the course catalog,
although I
really had no idea what it involved. Like most people, I had
never seen a computer. There were virtually no computer jobs
yet, and I didn't know that Information Technology (IT) was about to
become
its own huge industry. The idea of taking a computer science
class was probably suggested by one
of my math professors or by a fellow student.
I decided to try it, so I enrolled in FORTRAN I taught by Dr. Benny
Hill. I didn't know Dr. Hill very well, but he made learning
fun, and he was very patient in teaching the radically new concept of
computer programming. After a few days/weeks of being
somewhat intimidated by the way computers worked, I finally understood
what was going on, and I fell in love with it. The idea of
feeding input into a computer, letting it do all the work by churning
through a series of
calculations, and receiving printed output from it did indeed seem to
have potential for being a very powerful tool. Thanks to Dr.
Hill (and subsequently, Dr. George Atkins) I was on my way to being one
of the many pioneers on the
forefront of the IT industry.
In 1964, IBM had introduced a new generation of computers.
The IBM 360 was at the high end of these computers, but by 1974 they
were still so expensive that only the larger universities could afford
them. Fortunately, IBM also offered the IBM 1130 at the lower
end, but it incorporated the same new technology. SWSC had
an IBM 1130, and that's where and how I learned computer
programming. Amazingly enough, that computer had only 8
thousand bytes of memory, and it supported the whole campus.
A typical $500 laptop today can easily have 8 billion bytes
of memory, one million times what we had in college.
The entire computer lab was in a single room with probably about 300
square
feet of space. The IBM 1130 set at the front part of the room,
with a
(huge) printer on the left; the CPU (Central Processing Unit), the
auxiliary storage, and a crude typewriter interface in the center; and,
the card reader on the right side. Altogether, this computer
was probably about three feet wide, ten feet long, and four feet
high. In the back of the room were four (huge--and noisy) IBM
keypunch machines with a typewriter interface.
Some brief background on these keypunch machines is necessary
here. These machines utilized an algorithm patented by Herman
Hollerith in 1889. (This in itself illustrates the slow
evolution of computing for the next 90 years, until about 1980 when the
IT industry really exploded.)
Hollerith’s invention included the electrical tabulation of
data by punching rectangular holes into punch cards (approximately 7"
long by 3" high). Each card contained 12 rows and 80 columns,
and Hollerith's algorithm allowed for any number, alphabetic character,
or special character to be coded into each of the 80 columns.
As a result, each card could contain up to 80 characters of
information.
In 1896, Hollerith founded a company called the
Tabulating Machine Company. In 1911, this company merged with
three others to form the Computing Tabulating Recording
Corporation. Then, in 1924, this company was renamed
International Business Machines Corporation (IBM) with Thomas J. Watson
as the first president of the company.
So, when I wanted to write a computer program, I would open a box
of these Hollerith punch cards and load a stack of them into the
keypunch machine. Then I would sit down and carefully type my
program,
one line per card, and the machine would punch the appropriate holes
into each card, according to Hollerith's algorithm, which was readable
by the computer's card reader. Then, after a special "data" card,
I would
continue typing the data that I wanted my program to process--again,
with one piece of data per card. Sometimes the resulting
stack would contain hundreds of cards for a single program.
For example, suppose I wanted to write a program to calculate the
results of a presidential election; i.e., given the total number of
votes for Candidate 1 and Candidate 2 in each state, I wanted my
program to show the total number of votes cast for each
candidate in all 50 states. The pseudo code for my stack of cards
might look
something like this:
1 TotalCand1 = 0
2 TotalCand2 = 0
3 If we have reached the end of the data cards, then go to line 8.
4 Read values Cand1 and Cand2 from the next card.
5 TotalCand1 = TotalCand1 + Cand1
6 TotalCand2 = TotalCand2 + Cand2
7 GoTo Line 3
8 Print TotalCand1, TotalCand2
9 Special card; i.e., data to follow
10 92176 54231 // Alabama
11 12347 22978 // Alaska
Lines 12 through 59 would be similar data cards for the
remaining 48 states
Then I would take my stack of cards, in the order in which I had typed
them, and place them face down into the input area of the card reader
on
the computer, and secure the cards with a weight on top of
them. I would press a "Start" button on the card reader, and the
card
reader would read the cards, one by one, and I would retrieve my stack
of cards from a bin on the side of the card reader.
Then the CPU of the IBM 1130 computer would process the information
retrieved on my cards. It would treat the card reader input
as a computer program until it read the "data" card, and it knew that
the subsequent cards were to be used as input for the
program. Upon recognizing that I had written a program in the
FORTRAN language, it would load the FORTRAN compiler software from a
(huge) auxiliary storage device, and the compiler would process my
program. If it compiled without errors, it would then process
each data card against the compiled (Assembler) code, and it would
print the results (at about one line per second) on the huge
printer. This was a typewriter-style printer that would
actually print with typewriter keys, one full line at a time, so the
printer
made a fairly loud noise each time a 120-character line of output was
printed, as up to 120 typewriter keys would simultaneously hit the
paper through the
printer ribbon.
On the other hand, if the compiler detected an error in my program
(which was usually the case), it would print a crude error message on
the printer. I would then find the card that caused the error (in
my huge stack of
cards), type a new card, and replace the old card
in the stack. Then I would try the modified stack of cards on
the computer again. So, this is how Dr. Hill taught me to
program computers.
Some of the additional computer courses that I took during my college
years included:
Advanced courses in FORTRAN - A scientific-oriented
programming language
Courses in COBOL - A business-oriented programming language
Assembler - A low level programming language
Courses in RPG - Another business-oriented programming
language
System Simulation - Simulating ships approaching and leaving
a dock, etc.
SWSC still did not offer a degree in Computer Science, as only the
larger universities did. As a result, I graduated with a B.S.
in Math, with a minor in Computer Science, in the fall of 1976,
although I actually had more hours of Computer Science than of
Math.
During the fall of 1976, I applied for jobs by sending letters and
transcripts to various companies. Several companies were
immediately interested, and I had early interviews with the
following:
Phillips Petroleum, Bartlesville, OK
Texas Instruments, Dallas, TX
Burroughs, Detroit, MI
By December, I had received job offers from Phillips Petroleum and
Burroughs, but, disappointingly not from Texas Instruments.
In addition, I had received rejection letters from many companies that
wouldn't even grant me an interview, including IBM. I had
ruled out Burroughs because we didn't want to move to Michigan, so I
was beginning to assume that I would go to work for Phillips.
However, as time was running out, IBM decided to give me an interview
with their Federal Systems Division (FSD) in Houston, TX. I was
nervously waiting to see if I would receive an offer from IBM (my first
choice). I had two letters prepared for Phillips--one
accepting their offer, and one refusing it. Finally,
at the last minute, IBM made me an offer as a scientific programmer,
and I accepted. I would start with IBM in Houston on January
24th, 1977 for a salary of $263 per week (approximately $13K per
year).
When I interviewed with these companies, I didn't really know what was
going on. I didn't know what to expect. I didn't
know anything about the companies or their industries, and I had had no
coaching on how to conduct myself during interviews. When I
interviewed with IBM in Houston, I was more enamored with the
possibility of working for IBM (which seemed like the epitome of
computer programming companies) than I was with the job
itself--programming on their
NASA Space Shuttle contract. I remember interviewing with one
manager named Sol Solomon, and he helped me to understand more about
what I might be doing, but I still had no idea what would be involved,
or what it would be like to work for a large company.
Houston
I moved into an apartment in Nassau Bay, TX, just outside of Houston,
right next to a bay off the Gulf of Mexico. Karen still had
eight weeks of class work to complete at SWSC before she could join me
and begin her student
teaching at Clear Creek High School in League City, TX. We
moved to League City later that year.
IBM was apparently quite aware that we new hires were quite green,
especially in an emerging industry, so their first order of business
was to give us eight weeks of intense training in a Beginner
Programming Training (BPT) class. There were 13 of us in my
class,
and we were sort of on probation until we made it out of that
class. It was indeed valuable training, and we each emerged
from that class with a job title of Junior Programmer. We
were each expected to excel enough in our jobs during the first year in
order to receive our first promotion to Associate Programmer.
About half of the class was assigned to the Ground-Based Shuttle
systems (GBS), and half went to the Onboard Shuttle systems
(OBS).
IMUs
I was assigned to OBS on the Guidance, Navigation, and Control
(GNC)
project. My first manager was Nelson Harbison, and my
second-line manager was George Mueller. I shared an office
with Waldon Scott, a veteran Staff Programmer. My first
programming project was for the Redundancy Management (RM) of the
Inertial Measurement Units (IMUs). As I quickly learned, an
IMU was a sensing device that was a key component of the navigation
system of the Shuttle. The Shuttle had three IMUs,
and each one included a gyroscope and an accelerometer.
Basically, the gyroscope indicated the location of the Shuttle (as a
vector, in three-dimensional space) and the attitude of the Shuttle
(the position/direction in which it was moving). The
accelerometer indicated the rate at which the Shuttle was accelerating
or
decelerating in that direction. The various computer programs
on the Shuttle ran anywhere from one hertz (once per second) to 25
hertz. The IMUs reported data to the software at 6 hertz, so
the IMU software ran six times per second.
Since there were three IMUs, the RM software was necessary in order to
reconcile any conflicting measurements reported by the IMUs for
determining the true position, direction, and acceleration of the
Shuttle. This was standard operating procedure for the
Shuttle--to have multiple (backup) hardware devices, in case of a
failure. With the IMUs, the function of the RM software
included determining if an
IMU had failed; which of the
three IMUs had
indeed failed; and, to subsequently ignore
any data from that
IMU.
How was this accomplished, especially since I had only minimal training
in celestial mechanics? Well, fortunately, we had scientific
analysts who understood all of this. So, NASA would give the
requirements to our analysts, and our analysts would give me detailed
specifications--basically pseudo code. So, simply by knowing
the PLS programming language (a fourth-generation and top/down
structured language), I would translate the scientific specs into
software
code.
Although I was on the frontier of software technology, our process was
still quite crude at that point (a somewhat scary thought when
considering the delicate requirements of sending humans into space and
returning them safely). I would sit at my desk and figure out
how to write the required programs. Then I would go to one of
several small keypunch rooms, most of which contained two keypunch
machines. After sometimes having to wait in line for a
keypunch machine, I would keypunch my program onto cards, one line
per card. Then I would write any specific instructions to the
computer operator on a piece of a paper (such as loading a particular
tape drive), and wrap the paper around the
stack of cards with two rubber bands. I would lay this
package on a specific table in the hallway, and a few times each day, a
courier from NASA would collect all of the packages from the tables and
take them across the street to the computer room at NASA. The
computer operator would run our program on their mainframe computers
(in
a
stand-alone environment) and send back (via courier) our stack of cards
along with the printed output from the program.
This was a very frustrating way to have to conduct business, because
the turnaround was so slow. We would typically get only one
chance each day to run our programs. I remember constantly
checking to see if my printed output had been returned. I would
often be
disappointed after waiting until the next day for my output, only to
find that I had made some silly mistake in my typing, or a card (often
bent in transit) couldn't be read by the card reader, etc.
When all of us had our programs in working order, then the SDL
(Software Development Laboratory) folks would integrate all of the
software and test it in the Shuttle simulator at NASA. Of
course, eventually the software would ultimately be loaded onto the
(five redundant) computers of the Space Shuttle itself, and our
programs would navigate and guide the Shuttle through the
atmosphere, into space, and back.
Flight Control
After working on the IMUs for a couple of years (for managers Mary Cole
and Ed Zatopek), I transferred to the Flight Control area, working for
Harold Herbold. I found this to be much more challenging,
demanding a deeper knowledge of celestial mechanics and
aerodynamics.
(I don't know what was so difficult about it. It wasn't rocket
science. Oh, yeah, it was.) Basically, while Guidance and
Navigation read sensors such as IMUs,
the Flight Control system actually issued the various commands to move
the Shuttle from
where it currently was, to where it should be in 1/25th of a second
from now.
Each mission consisted of three phases--ascent (liftoff), orbit,
and
descent (re-entry into the atmosphere); and, the flight control tools
utilized depended upon the mission phase. During liftoff, our
code would send controls (3-D vectors) to the SRB engines and the main
engines in order to accomplish all of the roll, pitch, and yaw
maneuvers required to launch the Shuttle through the atmosphere and
into orbit. While in orbit, we controlled the flight by
issuing commands to the OMS engines. During descent, we
controlled the Shuttle by issuing commands to the ailerons and the
rudder, just like an airplane, as it entered the atmosphere, descended,
and landed on a long runway.
I recall some nervous moments during the descent phase of that first
mission.
Throughout the history of the Shuttle development, it was generally
thought that the tiles on the bottom of the shuttle were its primary
weakness. These were a special heat-resistant type of tiles
which were necessary in order to keep the Shuttle from burning up as it
entered the atmosphere from space. The point of concern
was the glue that held the tiles on the Shuttle. They
continually had problems with this glue, and tiles would sometimes fall
off during testing. Nevertheless, they went ahead with the
mission. As the Shuttle is entering the atmosphere, there is
a brief blackout period when communications between the shuttle and the
ground are not possible. I remember how relieved we were when we
once again heard the astronaut's voices, telling us that the tiles had
done their job. Everything was fine, although I believe that
a minimal
number of tiles did indeed fall off, but not enough to cause any real
problems.
Scarce Resources
Unlike today, hardware resources were very scarce in those
days. Each of the five General Purpose Computers (GPCs) on
the
shuttle had only 100,000 bytes of memory. As a consequence of
this, we programmers had to be very efficient in writing our
code. In fact, I can recall occasions, while testing
simulations, when I would have to write part of a program in just a few
bytes (maybe 10 to 20 bytes) of memory. Here's how that
went:
Our PLS programming language was a high level language, and a line of
PLS code might look something like this:
if (sensor_level >= 1.7) goto 7
This means: If the condition in parentheses is true, then go
to line 7.
However, this PLS code then generated lower level Assembler code for
compilation/assembly and linkage editing. A line of assembler
code might look like this:
MOV AL, 1h
This might mean: Move the hexadecimal value of 1 into register
AL.
It would take many lines of Assembler code to equal the above line of
PLS code because it's done one step at a time; i.e., move several
values to several registers, then do some compares, etc.
However, machine level code is the most basic (lowest level of code),
and the hexadecimal code for a line of machine code might look like
this:
4146FF40
For example, the "41" might be EBCDIC code for the letter "A"; "46" is
"F"; "40 is a space, etc. It is comprised of these one-byte
hexadecimal characters, usually in clumps of 4, 8, or 16
bytes.
This would then translate into binary code, as follows:
0100 0001 0100 0110 1111 1111 0100 0000
i.e., the "4" in hexadecimal (base 16) = the "0100" in binary (base 2),
etc.
Anyway, sometimes after the code had been compiled and loaded into
memory, the programmer would be called upon to make another change, but
then it had to be in the form of a machine language patch. In
other words, I might be told that the code between memory locations
71,456 (bytes) and 71,536 was faulty, and I had to re-code those 80
bytes of memory using ones and zeros. I would send 80 bytes
of ones and zeros across the street with instructions for the computer
operator to patch those particular locations in memory with my new
code.
The mainframe computers at NASA were quite interesting. IBM
had introduced its line of IBM 370 computers in 1970, and they were
much larger and
faster than the 360s. NASA had two of these IBM 370s at the
time, but they also had three of the older IBM 360 models--the same
technology I had learned to program on with the IBM 1130 at
SWSC. In fact, while I was with FSD, one of the 360s at NASA had
the
serial number "2"; i.e., NASA bought just the second one ever made, and
I used it in my program development.
The First Space Shuttle Mission
One of my greatest challenges was serving on the real-time software
support team. Behind the mission control room at NASA was a
smaller room for software support. During simulations and
real missions, we manned that software support room, and we were at the
beckon call of mission control, if any question or problem came up
concerning the software. It was a very intense and demanding
job, and I can remember the hair standing up on the back of my neck
whenever I would hear the flight director's voice in my headphones
saying, "Software?"
In fact, this actually occurred during the first mission, STS-1, as the
Space Shuttle Columbia sat on the launch pad with John Young and Robert
Crippen onboard. I had worked for four years (with 800 other
IBMers) in anticipation of STS-1, scheduled for March, 1981.
I was in the software support room behind mission control when I heard
the countdown for launch, "T-15 (i.e.,'T minus 15 seconds'), T-14,
T-13, T-12, T-11, T-10...," but then I
didn't hear "...T-9..." Something had gone wrong and the
mission had been aborted only ten seconds before the main engines were
supposed to fire. Everyone at NASA was nervous, and sure
enough, I heard the Flight Director's voice frantically saying,
"Software?..."
We feverishly began looking at memory dumps, paging through software,
etc. As it turned out, there was, in fact, a software error,
but it was in the system software, thankfully not my area.
The error had been coded by one of my colleagues, and he also supplied
the fix. However, it took a matter of days to get things back
on track and rescheduled. STS-1 was finally successful,
lifting off on April 12th, 1981 and returning from a 54.5-hour mission
on April 14th, 1981 (during which I went on no sleep).
One of the perks of my job was getting to meet some of the astronauts,
including one meeting with John Young (one of only 12 men to walk on
the moon) and Robert Crippen when they came
to our IBM facility for a presentation. On another occasion,
I traveled to Rockwell, International (who built the Shuttles) in
Downy, CA to meet with some astronauts about some specific software
concerns that they had.
Meanwhile, I usually received above-average performance evaluations
during those years at FSD. I was promoted to Associate
Programmer after just nine months, and to Senior Associate Programmer
after two years.
The IBM Culture and Advancement
I quickly became deeply immersed in the IBM culture. IBM
seemed like a company that would take care of me for life. In
order to reciprocate, and to always put our best foot forward to our
customers, we employees were expected to wear a dark blue or gray suit
every day, with a white shirt, and a "sincere" tie, and the women were
expected to wear dresses. This strict dress code continued
until Louis Gerstner, Jr. took over as CEO in the early
1990s.
Tradition
Tradition ran deep at IBM. Thomas Watson, Sr. had founded the
company in 1924, and served as the first CEO. In 1952, he was
succeeded as CEO by his son, Thomas Watson, Jr. (who later served both
as the National President of the Boy Scouts of America, and as the U.S.
Ambassador to the Soviet Union). In 1971, T. Vincent Learson
succeeded Watson as IBM's CEO, but he served for only two
years. When I joined the company in 1977, Frank Cary was
CEO--only the fourth CEO ever of the company that was then over 50
years old. The other CEOs, while I was still with the
company, were John Opel, John Akers, Louis Gerstner, Jr., and Sam
Palmisano.
Diversity
One of my colleagues was a veteran IBMer who had joined IBM as a CE
(Computer Engineer) in 1959, and he once related the story to me about
his first day with the company. IBM had hired 250 CEs who
reported to a large meeting room on their first day. My
friend said that the group consisted of 250 men (no women), all in blue
suits and white
shirts.
Well, by the time I joined the company, big changes were (justly)
underway at IBM, as well as at most other large companies, largely due
to the Civil Rights Act of 1964. It was now IBM's policy to
make sure that they didn't discriminate against any employee based upon
ethnic background, gender, or age (and eventually, sexual
orientation). Employees were regularly and frequently
engrained with related education, including programs such as Equal
Opportunity, Affirmative Action, and Diversity.
However, the rightful advancement of these diversity programs came at a
cost. When the current workforce was comprised primarily of
white males, how could the hiring and promotion of employees become
more diversified without discriminating against some white
males?
Suppose that two people were competing for the same
job opening or promotion--a white male, and a black female.
The federal government was keeping close tabs on diversification
trends, especially in large companies. Now suppose that the
white male was better qualified for the position than the black
female. After all, it would be no surprise if this were the
case, since the white male had probably been more likely to have
received training, job experience, etc. However, with
continuous pressure from the federal government to become more
diversified, company executives and managers were sometimes forced to
hire or
promote the lesser qualified candidate.
Since I was a white
male (and during almost all of my time at IBM I was under the age of
40), I sometimes questioned whether or not reverse discrimination was
an issue. It's difficult to say for sure, especially since
much employee information is confidential, but I believe that I was
passed over for promotion in this respect on at least one occasion, and
I didn't receive a fair performance evaluation on a few
occasions. Still, there was probably no way to become
diversified and still be fair to everyone. Regardless, I'm proud
to have been a part of the diversity movement that contributed to the
advancement of minorities and women in the workplace.
Goals
I recall how anxious I was to advance my career through
promotions. When I first started with IBM, I quickly noticed
that it was easy to discern an employee's level by his/her office and
desk. Employees who were at Staff level and below had to
share an office with another employee (each with metal
desks). Advisory level employees got their own private office
with a wooden desk. Above that (Senior level and beyond), an
employee's level was revealed by the size of his/her desk, and the
amount of overhang on it. I quickly made it my goal to reach
the Advisory level, and to have my own private office.
Another goal was to become a member of the IBM Quarter Century Club, an
elite group of IBMers who had 25 or more years of service.
Retirement Planning
Another goal had to do with retirement planning. When I
joined IBM, I was quite ignorant about IBM's benefits plan. I
may have known that my new benefits included some type of medical
benefits, and a vacation plan, but that's about all. However,
as soon as I joined the company, I started receiving occasional memos
about all of the benefits, so I soon learned more about them.
One of the things that seemed very appealing was their retirement plan,
including a full pension upon retirement at the age of 65. In
fact, during these first four years with the company, they were
improving the retirement plan every year. First, they reduced
the retirement age to 55, although this early retirement did decrease
one's pension amount, on a graduated scale. Then they stopped
decreasing the pension amount for early retirement, and they would pay
a full pension at age 55, as long as the employee had 30 years of
service with the company. Next, they allowed full retirement
after 30 years of service, regardless of one's age, and this meant age
51 for me. Although I wasn't giving much thought to
retirement at my age (21 when I started), it did seem like a good
incentive for me to stay with IBM as a loyal employee.
Full Employment
Another "benefit," although not officially a part of the benefits plan,
was called "full employment." This meant (unofficially) that
as long as an employee worked hard and kept getting good results on
his/her performance evaluations, he/she didn't have to worry about
losing his/her job. Officially, it was stated that no IBM
employee had ever been let go for "economic reasons" in the history of
the company (since it started in 1924). In other words,
nobody had ever been laid off at IBM. It was sort of like
having tenure as a college professor. I knew that I was a
competent employee with above average performance reviews, so I made
myself another goal: to retire from IBM with full benefits
after 30 years of service on January 24th, 2007, although that seemed
like a very long way off.
Dallas
Immediately after the success of STS-1, I applied for a
transfer. My mother had been suffering from congestive heart
failure for
three years, and we wanted to move closer to her so that we could visit
her more often. I applied for several jobs in the Dallas
area. I learned about one of these jobs through an IBM
colleague of mine, Dan Kemp, who had recently transferred from Houston
to Dallas just as I was looking to do. I accepted that
position, working in the same department as Dan, in the new Las Colinas
development in Irving, about three miles from Texas Stadium.
We moved to Carrollton, TX, and I started my new job as
an Application Programmer on July 1st, 1981.
While FSD brought a lot of good press to IBM, it wasn't one of its more
profitable divisions. My new job was more in the mainstream
of IBM's core business. I was a software developer on a
product call ADF (Application Development Facility). It
enabled our customers to customize their own applications on IBM
mainframe computers. On the IBM 370, programs were run on
operating
systems such as VM (Virtual Machine) and MVS (Multiple Virtual
Storage), with SQL (Structured Query Language) relational
databases. I programmed in the PL/1 language, another
fourth-generation language.
Our customers were mostly large companies, including several large
banks. The idea was that ADF would allow each customer to
control exactly what happened at the point of a customer transaction,
in terms of data processing. Remember that this was before
everything was electronic, automated, and online like it is
today. Although our capabilities then seem crude now, I was
still working on the very forefront of technology.
In addition to working for a more profitable division, it was at this
time when I first became familiar with what we now call
e-mail. This was still about 15 or 20 years before the internet,
but IBM did have a
sophisticated company-wide network where we could communicate
electronically with other employees (at least in the U.S.).
So, I sent my first e-mail in July, 1981. We each had a
crude, huge, heavy, black-and-white (green) monitor on our desk (later
referred to as "dumb terminals," because they only connected to the
company network, without any CPU or memory of their own). Not
only did we now have e-mail, we also wrote our programs electronically
via this terminal, so I no longer had to use stacks of Hollerith
cards. The difference was like night and day.
Instead of using a manual keypunch, I could just type the lines of code
into a file, save it, compile it, wrap the proper JCL (Job Control
Language) around it, and run it as a batch job on MVS.
One of my specific tasks was to improve the performance on a
sub-product of ADF called the Auditor. Even though I now used
mainframes, resources were still scarce, and expensive, and computers
were slow in comparison to what we have today. I had a lot of
fun seeing how efficient and fast I could make the Auditor, and this
experience taught me a lot about performance benchmarking. I
excelled at this task, and within a year or so, I received a promotion
to the Staff Programmer
level.
While in my ADF job, I traveled some, including trips to Tucson, AZ,
and my first trip ever to New York City. On the other hand,
one of the things that I didn't like about that job was "the
hotline." The members of my department would rotate handling
the hotline, which meant serving in the role of customer support, by
fielding phone calls from (sometimes irate) customers. I
never felt like I had enough knowledge of all of the functionality of
our complex software systems in order to provide customer satisfaction,
especially when being put on the spot on a phone call.
I was a workaholic. I was so devoted to my work that when my
mother died, I only took two days off. She died on a Thursday
night, and we drove to Oklahoma after work that day. I took off
Friday; her funeral was on Sunday; I took off Monday when we drove back
to Carrollton; and, I went back to work on Tuesday morning.
That's really
sad.
Another Note about Retirement Planning
By 1985, I had eight years with the company, and I had made a big dent
in
my goal to retire after 30 years. In fact, the good news kept
coming about the retirement program. It kept getting better
and better, in the way they calculated the retirement benefits,
etc. They were now even offering something called Social
Security Leveling, for employees retiring before the age of
65. The idea was to balance one's income over the course of
their retirement years, instead of having a big disparity of income
once Social Security kicked in. IBM would estimate how much
one's Social Security payments would be once they reached the age of
65, and they would make up the difference such that one's income would
remain the same once they turned 65.
For example, suppose
that an employee retired at age 52, and his IBM pension was $1,200 per
month. They would then estimate what his Social Security
benefits would be at age 65; let's say $600 per month. So,
from age 52 to 65, they would increase his pension benefits to, maybe
$1,600 per month. The only caveat was that when the employee
turned 65, they would reduce his pension to, say $1,000 per month, but
he would then collect his $600 per month from Social Security, for a
total of $1,600 per month. So, it worked out good for both
parties.
In addition, a couple of things were starting to happen at IBM which
seemed like great news, although I just wasn't smart enough to see the
writing on the wall. Starting in about 1984, IBM began
encouraging many of its older employees to retire. IBM was
nice, right?--wanting to see its veteran employees being able to take
advantage of all the retirement benefits? In fact, year after
year, they were giving more and more incentives for older employees to
retire. By 1988, they were giving veteran employees as much
as two years’ salary for retiring. I remember one
man telling me, "They kept throwing so much money at me that I had to
retire. It just didn't make any sense not to retire."
Another thing that happened in 1984 was a new voluntary benefits
program called the Tax Deferred Savings Plan (TDSP). Many
companies were starting similar plans, and they're what we now know as
401-K plans, with at least partial matching from the company. So,
an
employee could even add to his own pension by saving some of his own
money, plus more from IBM. Everything about this sounded good
too: "Tax
-deferred" sounded good; "savings plan" sounded good; "voluntary"
sounded good; and, "matching" sounded good. (Retirement
Planning--To be continued, below).
ISEN
I had been in this job for nearly four years, and I was not really
looking to change jobs. However, as it happened, our next-door
neighbor in Carrollton, Ed Pitrucha, was a Director (executive level
manager) with
IBM. One day, his wife, Ann, invited Karen to a Tupperware
party at their house. While Karen was there, Ed mentioned to
her that he needed to hire a software specialist, and she indicated
that I might be interested. Ed had recently moved
back to the Dallas area from New York, where he had advanced so far in
the company that he was even rubbing elbows with the CEO, John
Akers. He now headed a department in IBM's Education Division
called the Interactive Satellite Education Network (ISEN). He
didn't need a programmer--just someone who could understand software
and act as a liaison with the vendor. In January, 1985, he
offered me a promotion to Advisory level, with my own private office
(which had been two of my goals since joining IBM), and I
accepted. Incidentally, that was the last promotion I ever
received.
ISEN was a sophisticated education network that IBM used for customers
as well as its own employees. There were four broadcast
sites in: New York City, Chicago, Los Angeles, and Washington,
D.C. There were 13 sites that could receive these broadcasts,
including these four broadcast sites, as well as nine other sites such
as in Dallas, Houston, St. Louis, Boston, Hartford, CN, Minneapolis,
etc. An instructor
would sit in a studio at one of the broadcast sites and teach a course
via satellite. At the receive sites, there was a satellite
dish on the roof and a number of 8-student classrooms, again all
equipped with the latest technology. At the front of each
classroom were two monitors--one showing the instructor, and one
showing his instruction material, foils, etc., along with a speaker
broadcasting the instructor's voice. So, there were video, audio,
and data signals being broadcast from the studio via satellite.
At each student's desk was an electronic device that would allow a
student to direct a question to the instructor. The student
would simply press a button which would send a signal back to the
studio, where a light would be illuminated, indicating that a student
at a certain site had a question. The instructor would
verbally acknowledge the question, and the student could then speak
directly to the instructor, with the audio of both the instructor and
student being broadcast to all sites. (This was at
the expense of temporarily blocking the data line transmission, because
that line was now being used for the student's audio.) The idea
was that the
education could be just as effective as if the instructor was
physically in the classroom, while reaching more students across the
whole country, and minimizing travel (expense) for both the instructor
and
the students.
Although the concept is simple, the implementation was not.
Our vendor was Hughes Aircraft, who supplied the communications
hardware, and their vendor for the required software was NCR, a company
based in Tokyo. I needed to learn how the software worked,
how to respond to software errors, etc. One of the perks was
that Ed sent me to Tokyo for three weeks in August, 1985 to meet
directly with the
folks at NCR. In addition, although I didn't need to write
any ISEN software, I did write a VM application for IBMers for the
scheduling of ISEN classes.
This was the time in my career when I learned how to travel.
Not only did I get a trip to Tokyo, but with broadcast and receive
sites scattered all around the country, I made frequent trips to many
of those 13 cities, including New York City, Chicago, Los Angeles,
Washington, D.C., Houston, Minneapolis, Philadelphia, and Seattle
(where I was actually responsible for the building of a new receive
site). As I now recall, it seems like I would go to Los
Angeles and Washington, D.C. most often. I probably traveled
between 25% and 50% of the time, making two or three trips per month,
for one to five days each.
I've always said that Ed Pitrucha
taught me how to travel. He was a big spender--one known to
splurge--and he had a big IBM budget to spend. I once traveled to
Philadelphia with him just so he could
eat at Bookbinders (a famous restaurant, and one of Ed's
favorites). On another occasion, he wanted to have
lunch in New York the next day, so he and I left Dallas at 7:00 AM,
went to the ISEN facility in New York just in time for lunch with
colleagues, and we were back home by 8:00 PM that night. This
was back before all of the metal detectors and other safety measures
were in place at the airports. I can remember sometimes riding
with Ed to
the airport, getting out of the car, walking straight into the terminal
directly to the gate, and boarding the plane at the last possible
minute. Sometimes it made me crazy, but I did enjoy the
travel, although I didn't like being away from my family in the
evenings. (Ed got onto me after my Tokyo trip because I had
racked up some $300 in phone calls to Karen.)
Incidentally, I do remember a particular day that will always stick in
my memory. On January 28th, 1986, a colleague of mine, Mark
Reith, quickly stuck his head in my office and said, "Hey, we lost a
Shuttle." The Challenger had broken apart 73
seconds after the launch of its tenth mission. I could
envision the roll, pitch, and yaw maneuvers of those main engines as it
exploded.
Back to Development
For whatever reason, in 1988, I decided that I wanted to get back into
software development. It was relatively easy for me to find a
job. I had a lot of contacts in that group, plus they were
expanding in an effort to directly compete with a competitor.
Microsoft was about to deliver a new product called Microsoft
Office. (Yes, this was the same Microsoft Office that so many
of us still use today, and that now has a monopoly on that market
space.) IBM was determined to steal some of
that business away from Microsoft (especially since the sale of DOS
to Microsoft had gone so badly). IBM had developed its own
operating
system for the PC called OS2, and it was now going to develop a
complimentary office product called OfficeVision/2 (OV2). It
would include e-mail, a word processor, a calendar, a library, etc.,
just like Microsoft Office, plus the family of OV products would run on
virtually any IBM platform, from the PC, to mid-range hardware, to
mainframes. So, the job sounded intriguing.
Furthermore, when I was looking for a job in my previous organization,
I found out that the software development organization was going to be
moving from Irving to Westlake. Then I found out about a
clause in IBM's Moving and Living Expenses policy that turned out to be
helpful. If a facility moves its location, and the resulting
move would cause an employee to have to commute more than 25 miles
one-way, then they were eligible for the full Moving and Living
Expenses package from
the company. (This was back when IBM was still making lots of
money, and willing to spend it liberally--more about this
later.) As it turned out, this policy also applied to me, as
an employee joining (or re-joining) that organization. Since
my commute from Carrollton to Westlake would be more than 25 miles, I
was eligible. This meant that we could move and IBM would pay
our moving expenses, and even buy our house if we had any trouble
selling it, etc. This was about a $15,000 perk, and it
allowed us to build the house in Coppell that we still live in
today.
So, I accepted the job, and we felt like we had it made. We
had built our own new house, just like we had always wanted, and I had
a job with my own private office
with an outside window and a view of the lake and the park. I
had the challenges of learning a new operating system (OS/2) and a new
programming language ("C"). In fact, OS/2 hadn't even been
announced yet, and our code name for it was "Winthorn." As a
result, the operating system was evolving as we were developing on it,
a situation which offered new challenges in itself.
Nevertheless, we were determined to beat Microsoft in this head-on
battle.
I worked in several areas of the new product, including the calendar
and the library, and my travel even included a trip to
Toronto. However, my diversification was not all good
news. A major part of the reason that I jumped from one area
to another was because we couldn't seem to actually get anything
developed and shipped. Our development process was too
slow. We
were stuck in the same development methodology of the old IBM, back
when it
was the only kid on the block. Now that we had competitors
who were cranking out new products and new features every day, we
couldn't keep up. We were used to releasing updates every six
months, but our competitors were releasing every six weeks.
Sometimes, by the time we were ready to
release something, Microsoft had already released something even
better. Or, sometimes the evolution of our own operating
system seemed to bring us back to square one. As a result, I
found myself working hard to develop software, and then (repeatedly)
just throwing it all away and starting over. Eighty-hour weeks
were common, and sometimes I worked over 100 hours per week.
That's hard to do without severely cutting into one's personal
and family time.
One of the old-time analysts that I knew at Houston, Dick Lemmon, once
gave me an apt illustration. He said that if IBM hired him to dig
a hole, he would dig it. If IBM hired him to fill in the hole, he
would do so. So, from the point of view of my relationship with
IBM--work for hire--this might be OK. However, when assessing
what a repeated pattern like this will mean for the company's bottom
line, one should always keep an eye out for how it's affecting
profitability, and what changes might occur as a result.
More on Retirement Planning
In about 1989, IBM announced the latest improvement in the retirement
plan: There was an extra bucket of retirement for
everyone--the PMP bucket (I forgot what the acronym stood
for). IBM was simply going to contribute an extra 6% of each
employee's salary to this extra bucket every year, and it would simply
be more money for us future retirees to retire on.
Reversing Course
Meanwhile, little by little, and somehow almost unnoticeably, IBM began
losing money. (This had been IBM's incentive for cutting costs by
encouraging employees to retire.) To employees, the quarterly
earnings statements
didn't mean much. Earnings might be down one quarter, or one
year, but there was always a reason to expect that they would turn
around the next quarter, or the next year. Life internally at
IBM remained plush, with unofficially guaranteed full employment, and
everyone fat and happy and spending lots of money on traveling, moving,
etc.
Well, suddenly, by 1992, everyone, including Wall Street, noticed that
IBM had been losing $5B
per year for the last three years. ($15B was a lot of money
in those days.) Well, suddenly an unprecedented series of
events began unraveling:
- The price of IBM stock dropped from $160 to $40.
- John Akers stepped down as CEO, as he couldn't stand to make the
changes that he knew were coming, and Louis Gerstner became CEO for the
new lean IBM.
- The PMP plan for future retirees, announced only a couple of years
earlier, was being terminated. IBM was simply not going to
carry through with what they had promised. Sorry!
- The cash incentives to encourage older employees to retire were
discontinued. If you hadn't retired by now, it's just too
bad.
- The Tax Deferred Savings Plan now made more sense. It had
been introduced as an "opportunity" for employees to "share in their
own retirement investment." However, now it was apparent that
things were quickly moving towards a point where employees would be
solely
responsible for their retirement pensions, with no help from Big
Blue.
- Less profitable divisions were sold, including the Federal Systems
Division, so IBM no longer had a hand in the Space Shuttle, defense
contracts, etc.
- Then came the bombshell--full employment was no more. In
one day, IBM reversed course, from full employment to the announcement
of the largest layoff in corporate history. IBM would soon
lay off 110,000 of its 400,000 employees. We were told
that on the following day, every IBM manager was going to call each
employee into his office and let them know whether or not they still
had a job. (There were few good nights of sleep that
night.) Although I was told that I still had a job, four of
the ten members of my department were laid off immediately; in some
departments, 70% were gone. I knew one man with 18 years of
service who was laid off (I had 15 years at the time), with no pension
or anything. It was all just gone for him, and that could
easily have been my fate as well. I called it "The Purge of
1993." Ironically, this was the same year that Thomas Watson,
Jr. died. He had been a driving force for "full employment"
throughout IBM's history.
These events remind me of the squabbles in the press today about states
going broke, municipal bankruptcies, public unions and pensions,
private and corporate debt, the federal deficit, etc. People
who have been promised a pension may not get the full pension that they
were promised. Future Social Security recipients may not get
the full amount they were promised. And, people are
outraged. How can they not get what they deserve--what they
were promised? Why is this the case? Well, it's
because things change,
and sooner or later, everything
has to be paid for, in one way or
another. If IBM fat cats and retirees spent all of the
future
retiree's money, then that retiree simply doesn't get his
money. If public unions keep pressuring our government bodies
for money they don't have, then it has to stop somewhere. If
debt gets out of hand, then somebody, somewhere, sometime, has to pay
for it. Is it fair? No, certainly not in terms of
honesty and integrity. Is that the way it is? Yes,
it's called "change," and sometimes we just have to learn to live with
it.
Software Testing
Well, about this time, my career took a change as well, and for the
better. I moved out of software development, and into
software testing--Quality Assurance (QA). I was really
having trouble with continually writing software only to throw it
away. As a result, my performance evaluations were suffering
(for the first time in my career), and I thought I needed a
change. As a brief explanation for those not familiar with
it, (the "waterfall" methodology of) software development includes
several phases which may be
generalized as follows:
- Requirements - Gathering the requirements from (perhaps potential)
customers as to what they expect the software to do.
- Design - Business analysts produced the high-level specifications
from the requirements; and, developers produce the low-level
specifications from the high-level specs.
- Coding - The developers write the code and perform unit testing on
their own code.
- Testing - The Quality Assurance team performs function, integration,
systems, performance, and regression testing, creating necessary
defects and testing
the fixes for those defects.
- Support - The support team supports the customers who buy the
software. They field questions from the customers, and
provide feedback on defects and enhancements for repeating this whole
process for the next release.
I have worked in every phase of the software development process, and
in 1992, I discovered that my real calling is in software
testing. I love trying to break software, and I think that my
experience as a developer adds value to my testing.
I'm very
detail-oriented, and that's critical in software testing.
Paraphrasing from what I once heard a baseball player say, "God made me
to be a software tester, just not a very good one."
I recall hearing a story from some IBM veterans early on in my career
at IBM, and it really stuck with me. The story had to do with
the development of the IBM 360 system. As with most new
products, the development team kept having trouble--finding too many
defects, missing deadlines and dates promised to potential customers,
etc. Well, management finally made a decision:
Whenever the number of open defects dropped below 1,000 known software
bugs, they would release it, and they did. This always amazed
me, that they would take such a risk. I believe that this
story always motivated me toward the software testing side of the
business--to help ensure the utmost quality in our products.
Software Patents
During the early 1990s, I also became heavily involved in writing
software inventions and patents for IBM. IBM provided
financial incentives for employees to come forward with new ideas,
although, according to an agreement when I was hired, IBM was the owner
of all resulting inventions and patents. I was just the author.
I had a lot of new ideas, and I
had some 300 articles published in IBM Technical Disclosure
Bulletins. In
addition, I had the following patents granted by the U.S. Patent
Office:
Patent
Number
Title
- 7,155,493 Method and apparatus for improved internet navigation
- 6,321,378 Automated code replication during application development
- 6,230,121 Measurement and validation of interaction and communication
- 5,878,230 System for email messages wherein the sender designates ...
- 5,787,231 Method and system for improving pronunciation in a voice control system
- 5,761,420 Method and apparatus for telephone proof of documents
- 5,694,616 Method and system for prioritization of email items by selectively ...
- 5,682,475 Method and system for variable password access
- 5,664,063 Automatic user notification of certain meeting attributes
- 5,600,828 File specification wildcard
Anyway, from 1992 to 1995, I stayed in the software development
laboratory as a software tester, although, during this time, the lab
moved from Westlake to Southlake. I exceled in software
testing, including successful testing of products such as Address
Synchronization/2. However, I faced a couple of big
problems:
- Because I was at the Advisory level, I was called upon to be the team
leader for testing teams, and I did not excel at team
leadership. My strength was in software testing, but I wasn't
allowed to do what I was best at, and what I enjoyed. (See
more on the Peter Principal below.)
- Microsoft was clearly beating us. We were still creating
software and just throwing it away.
My Escape to Nowhere
In late 1994, I made a business decision. In my view, the writing
was on the wall for the Southlake lab. Microsoft had defeated us,
and the company
would not be able to afford to keep throwing money away on OV/2.
I decided to look for another job, internally within
IBM. Although the course I took had problems in itself, I
will always look back on my decision to leave the Southlake lab as the
right decision. Shortly after I left, later on in 1995, the lab
was indeed closed down, abandoning any further efforts on the OV set of
products.
More on Retirement Planning
Throughout the 1990s, IBM continued to cut retirement
benefits. They made cuts in the way pensions were calculated
and in how one's number of years of service contributed to the
calculation; they simply cut the amount of one's pension; and, they cut
other retiree benefits such as health care. As these
announcements were made, year after year, I couldn't help remembering
back to a time in the mid-1980s when IBM would distribute brochures
boasting about all of the improvements they had made to the retirement
plan, year after year.
The Beginning of the End
There had always been another perk about the deep traditions at IBM.
Each employee was given considerable flexibility in defining his
own career path. Upon taking on a new job within the company, he
was expected to spend a reasonable amount of time in that job.
Then, upon doing so, he was free to look for another job within
the company. So far, I had been changing jobs within IBM about
every four years, probably about the average for most employees.
My new job was in Irving, just down the street from my
house. I was the team lead for a small, but growing, software
testing team. Our software product was one used only
internally by other IBMers (marketing and sales personnel) in tracking
hardware and software sales. The demands of my job were once
again more for leadership than for the software testing that I enjoyed
so much. My duties included building a team of testers
(mostly contractors); i.e., interviewing, and recommendations for
hiring, firing, and performance evaluations. Still, my job
rolled along pretty well for about a year, with very little interface
with management, which was a break in the normal tradition at IBM,
where each employee developed a close relationship with his
manager. I really didn't even
think that anyone noticed me much, but that was all about to
change.
One day in 1996, I was told that I had a new manager, in another
division of the company, and I was told to report to her office the
next day. Well, OK. I had often had managerial
changes, and they usually came by way of a seemingly abrupt
announcement, but there was usually
very little change in my day-to-day duties and expectations.
I reported to my new manager's office on a Thursday afternoon for what
I thought would be a get-to-know-you meeting. Instead, the
whole meeting was a surprise, and a blur, from the beginning.
The best word for describing my new manager's attitude was
"curt." She didn't politely welcome me into her
office. She simply laid down the law to me, without
explaining the reasoning behind anything she said, and without
welcoming any
questions.
She simply told me that I was no longer the test team leader
on my current project, because I was needed more urgently on another
project. This was effective immediately. (This
was another anomaly because changes within the company had usually
been by way of smooth transitions.) I was now a testing
consultant on a marketing and
sales team, and I was to prepare for life on the road. I was
to meet up with my team on Monday morning, in California, and work with
them there for the next three weeks on our first
project. It was such a blur that
I cannot now recall whether it was in the LA area or in the Bay
area. I remember asking whether or not I had a choice in the
matter, and being told that I didn't. In other words, I
believed that my only recourse was to leave the
company. Looking back, I still don't know for sure what I
should have done, since one's
first-line manager was always his go-to person at IBM. I
probably should have taken the issue to upper management, but I didn't
want to make waves, especially in the "new" IBM where full employment
no longer prevailed.
Well, I did as I was told. I was already in California before
I even figured out what my job was. The IBM Services Division
was creating software for utility companies, and our first customer was
PG&E (Pacific Gas & Electric). I was on a
team with five other people--a marketing guy, a sales rep, etc., and I
was the testing consultant. Now, I wasn't sure what a testing
consultant was supposed to do, and I didn't know how utility company
software was supposed to work. Nevertheless, I was supposed
to help sell it to PG&E by showing them how we were going to
perform integration and system testing on our software, in their
shop.
Now, imagine yourself, whether an IT person or not, in my
shoes. As you're reading this, you have about as much information
about my new job as I had. I was
absolutely clueless. I had no training in how to be a
consultant, in the utility industry, or in our (potential) software;
and, I knew that I wasn't a good salesman. Yet I suddenly
felt like a country dog in the city, either giving a (clueless)
presentation to the customer, or locked in a hotel room with five IBM
sales people working on a "team" proposal.
Well, I don't remember it all too well, but I believe that the travel
part turned out not to be as bad as I expected. After a few
weeks (and I don't know how many customers) later, my job somehow
materialized into staying in our Dallas office and supervising dozens
of people that I didn't know who were either testing or actually using
our utility-related software that I knew nothing about, with no support
from management.
Occasionally I would get freed up from supervising long enough to look
at the software and try to find a couple of defects. However,
most of my time was spent just hating my job and not wanting to come to
work in the mornings.
I guess I'll never know what really went on with all of this.
All I know is that it jolted my confidence in IBM. I knew
that I had to change, or I'd go crazy. However, I just didn't
know what to do. The IBM culture had been turned upside down.
It was no longer a place where I could enjoy my job. It's
like I couldn't think straight, and,
looking back, I was probably suffering from depression (and the year of
1995 had been an incredibly tough year for me in my personal
life--emotionally draining--from just about every perspective). I
was desperate for a change, but there seemed to be very few options in
the new IBM. In early 1997, I
made all of the internal contacts that I could think of, I had a couple
of interviews, and I ended up accepting a job in software support,
working for an old friend.
Software Support
Now, you heard me right--software support.
Remember? That's where I had to: "... support the
customers who buy the software, and field questions from them,
etc." That's in addition, of course, to being a team
leader of other support folks. Does that sound like
me? I also think that my depression kept me from learning the
software that I supported. It was a nasty and explosive
situation, and it seemed to be feeding on itself. How does one
answer questions
from customers (to their satisfaction) concerning software that he
doesn't understand? How does he leverage the knowledge of his
subordinates without looking like a fool himself?
Furthermore, how does someone without real leadership ability actually
lead a worldwide team of 14 support personnel scattered from Dallas and
Austin to Belgium and Tokyo? Notice how the first part of
this article is much more detailed than this last part. That's
not
intentional. It's just that depression was preventing me from
knowing, learning, and remembering the details of my own job at this
point like I did
earlier in
my career, and there simply aren't many of those details to recall.
One of my problems was that I was just too good at
"faking it."
So, what was the problem? First, all of our products
were now being written using object-oriented (OO) programming
languages, such as C++ and Java. Now, remember when I mentioned
that I exceled in using "top-down"
structured programming languages? Well that's about the
opposite of what OO languages are. They just never made sense
to me, and I either never had the proper training for them or my
depression was preventing me from learning. To me, OO languages
were like good programming languages gone
bad. As a result, most of our customers who called me with
questions already knew more than I did. How much less
comfortable do you suppose I felt when my subordinates would ask me
questions? So, what should I do? My answer was,
"Travel." If you're on the road, then nobody can track you
down to ask you about something that you know nothing about.
I was so out of my element. In June, 1999, I even had to
serve as the moderator for an "All Things Java webcast. I
broadcast the event from a satellite center in Dallas. There
were 681 attendees, and I fielded live questions from many of them (by
myself), and
somehow I got through it, but not without much pain and anxiety.
So, I began leveraging my situation as best I could, basically by
"leaving" instead of by sticking around to be embarrassed about
all the things that I didn't know and couldn't do. Although I
couldn't justify international travel, I did keep the airways busy
every week, mostly to Austin (where most of my team members were) and
Rochester, MN
(where the software was being developed). I also attended all
of the seminars I could (like useless Java One road shows in San
Francisco, and marketing events in Las Vegas), just to get out of the
office.
The End of a Chapter
Well, if you think this is where the story gets better, think
again. I was suffering from anxiety and depression, and IBM never
reached out to me. I felt helpless, and I couldn't stand the
stress any more. On July 17th, 2001, after 24-and-a-half years of
service, I took early retirement from IBM with a reduced pension for
the rest of my life. I was 44 years old at that
time, and my pension was approximately equal to my starting salary 24
years
earlier.
The Peter Principle
So, what had gone wrong? Well, there's an old axiom called "The
Peter Principle," but I had never taken it seriously until this point.
It says that one tends to get promoted to his level of
incompetence. In other words, we all have limitations in what we
can do, but we keep striving for promotions. We become so good at
getting those promotions that we suddenly find ourselves promoted to a
level where we can no longer perform our job duties.
At about this time, I had a friend who worked for the Post Office.
Like myself, he was detail-oriented and technical, but he
received a promotion to a management position. After just a few
days in the job, he asked for his old job back, and they chose someone
else to take his management position. Now, this is probably what
I
should have done that first day in the late 1980s when I was approached
about being a team leader. I should have said, "No, please just
let me stay in my technical job that I enjoy. In fact, you can
take back my latest promotion to the Advisory level, and the salary
increase, and I'll just be a Staff programmer for the rest of my life."
However, I was not as wise as my friend.
Curing Depression with a Career Change
Well, you can't retire on $13K, so
what do you do? My answer was: You have no other
choice, so you cure your own depression. You haven't reached
your goals, so you set newer ones, with lower expectations, which is
the
best you can do. You pull yourself up by your own bootstraps
and start fresh; i.e., at a lower level. First, I filed for
unemployment, and then the truth struck me: I was 44 years
old, didn't have a job, and didn't know how to look for one; so, I
started learning.
Resumes
First, I had to prepare a resume. Come to think of it, this
was the first time in my life that I had ever really needed a
resume. I had always maintained an internal resume within
IBM, but I had probably never sent an external resume to anybody.
Even
when I applied to IBM, that was just a matter of sending a letter, a
college transcript, and a completed application form.
I sent my resume (with the appropriate letters and applications) to
about 150 companies. Then I started driving around the city
where I lived (Coppell, TX), finding large and small businesses and
knocking on doors. One day I saw a "Now Hiring" sign in a strip
center. I carried my resume in and
inquired. I found out that the company was called HNC, a
small medical (Worker's Compensation and Auto) bill review company
(although I didn't know what that meant) with about 1,000
employees. The HR rep seemed impressed with my resume, and
she quickly got me two interviews. Within a week, they called
me with an offer to be their EDI Coordinator. Again, I didn't
have a clue what this meant--just something related to IT.
They offered a starting salary of
$40,000. Now, I'm not a hardball negotiator, but I was coming
off a job that paid more than twice that amount. I somehow
asked if they could raise that a bit. They offered $45K, and
I accepted. I had received unemployment for only five weeks.
So, I had found both jobs in my career (with IBM and with HNC) without
the benefit of nepotism. Although there is much value in
networking (in which I have very few skills), I have always been proud
that I was able to find my jobs simply by approaching strangers in
companies where I had no inside contacts.
EDI Coordinator
I began my new job on September 10th, 2001 (yes,
the day before 9/11). I remember taking a trip to St. Louis
within the first couple of weeks because we were transferring an office
from there, and the current (leaving) EDI coordinator worked
there. Due to 9/11, there were hardly any other air travelers in
the airports or on the planes.
Here's how medical bill reviewing works: Bill review
companies or insurance companies buy or lease our SmartAdvisor software
(named CompAdvisor at the time), or they hire us to do their medical
bill review for them, for their Worker's Compensation and/or Auto
claims. Insurance companies send in their claims
and related bills. The SmartAdvisor software applies all
appropriate fees/discounts according to each jurisdiction (state laws),
PPOs, etc., and it returns an Explanation of Review (EOR)
or Explanation of Bill (EOB) to the insurance company. In
some
cases, the bill review company may also handle invoicing and payments
to providers (doctors, hospitals, etc.) Most claims and bills
are automatically scanned into the system, and many bills are processed
completely automatically by SmartAdvisor. In some cases,
pended bills, or audited bills, need manual attention from a bill
review specialist or a nurse. In return for our software and/or
services, our company receives
a fee for each bill reviewed, or an amount for the sale or lease of
SmartAdvisor.
At the end of each day, data is exchanged between our company and the
insurance companies through a process called EDI (Electronic Data
Interchange), via FTP processes. For us, this includes
importing (receiving) claim files and bill files with the latest
information, and exporting (sending) payment files to the insurance
companies. In addition, imports and exports are also required for each individual PPO.
My new job with HNC was to coordinate these imports and
exports. The intent was that I would initiate these jobs in
the evenings and they would run automatically overnight.
However, there were a lot of caveats (shortcomings in the software,
etc.), so I often needed to write Java programs to fix mistakes, add or
subtract fee amounts, etc. In addition, I created automation
programs to launch the EDIs automatically. I exceled at this
job, and received above average performance evaluations.
Back to Software Testing
In 2002, Fair Isaac bought our small company, but my day-to-day duties
remained basically the same. I enjoyed the challenge, but I
often worked long hours, well into the evenings and nights, probably 60
to 80 hours per week. In
2005, I transferred into the Quality Assurance department for testing
SmartAdvisor software. The SmartAdvisor development
organizations were based in Irvine, CA, so I made a couple of trips
to Irvine. I was now (finally) back into the area that I
loved--software testing. In 2006, I had another stroke of
luck. We developed a new product called SmartReports, and I
became the primary person for testing SmartReports. This was
exactly what I loved doing. SmartReports generates reports
from the SmartAdvisor SQL databases--the same relational database SQL
query language that I had used some 25 years earlier on the IBM ADF
project. I love testing the reports and comparing the results
to SQL queries against the databases. I create defects as
necessary, then test the defect fixes. As the last group to
touch the software before each release, QA is ultimately responsible
for customer satisfaction with the quality of our products. I
take pride in my work and I believe that I'm very effective at it.
In 2008, Mitchell International bought our SmartAdvisor division from
Fair Isaac. SmartAdvisor is a better fit into the Mitchell
organization, and we're growing and thriving there. In 2011,
I had my 10th anniversary with Mitchell (/ Fair Isaac /
HNC). Although I had worked for three different companies, I
stayed basically in the same place for these ten years. In 2009,
I began working from home, and I also enjoyed this perk
tremendously. Travel for Mitchell included trips to Irvine, CA,
and a trip to San Diego for a software development seminar.
Brink's, Inc.
In April, 2012, Mitchell converted their software development from
"waterfall" to "agile." (I had been used to the waterfall
approach where the Business Analysts (BAs) prepared specification
documents from which to test.) The adjustment was awful. (I
called it DSP (Developing by the Seat of your Pants). There was
no documentation, but plenty of meetings: daily stand-up meetings
(30 minutes to an hour), release planning meetings (4 hours), sprint
planning meetings (2 hours), sprint retrospective meetings (2 hours),
demo preparation meetings (4 hours), demo meetings--for all scrum teams
(4 hours), etc. The daily standup meetings drove me crazy.
We were supposed to stand up, tell what we did yesterday, tell
what we were going to do today, and list any roadblocks we had.
It was like I was in grade school again. It made me so
nervous that I had to rehearse what I would say. I often wanted
to say, "Yesterday I went to meetings, today I will go to meetings, and
my roadblock is too many meetings.
I found that instead of working 40 hours per week, I was working 55,
including an extra 15 hours per week of meetings. I know to never
say "never," but I will do my best to never put myself in that
situation again. I don't like meetings. I don't like the
boredom of the meetings and I don't like having the attention of the
group focused on me (because of my fear of embarrassment, etc.).
I'm a software tester--not a meeting goer.
So, after suffering through a few iterations of two-week sprints, I felt
desperate to find another job. I left Mitchell on June 29th,
2012, and I joined Brink's, Inc. as a software engineer on July 1st,
2012. They had tried agile and gone back to waterfall. I
had fun testing and I felt productive for about a year-and-a-half until
a new sheriff came to town in the form of a QA director. He
basically brought all of his own people in (dozens), and tried to run
the existing team off by making life miserable for us. He was
successful, as nobody wanted to work for him anyway. One-by-one
we started peeling off.
I had several interviews with Thomson Reuters until the QA manager
confided in me that he was leaving the company. My only other
lead was through a former QA person at Brink's. Her husband was a
development manager and he had recently moved to a startup company
called HealthSparq, a subsidiary of Cambia Health Solutions. They
develop software to inform and empower health care consumers through an
online shopping experience that helps them understand their options and
make better choices, and to learn more about our advanced solutions for
health plans and employers. They're based in Portland, OR.
I had a phone interview with the QA manager there, and then an
additional interview with the development manager and team members at
their new location in Lewisville. The job sounded like a match
except that they used agile. However, they convinced me that
their agile approach had been honed down to be more efficient and have
less meetings. I took the job, partly because I looked forward to
it, and partly because I was so miserable at Brink's.
My last day with Brink's was on October 3rd, 2014, and I started
with HealthSparq on October 6th, 2014 as a senior quality engineer.
My first month there was brutal. The learning curve was
steep and the onboarding process was lacking. Furthermore, my
father-in-law went into the hospital on October 13th, spent three weeks
in the hospital and a nursing home, and died on October 31st.
My new job included testing web services (APIs) which I knew nothing
about. Finally, one of the QA people in Portland tutored me for
an hour or so, and I was on track. I have learned a lot, I enjoy
my work, and I get to work from home two days per week.
Certifications
Throughout my years as a software engineer, I earned the following
certifications:
- 1997, IBM Certified Professional, Integration and Test Specialist,
IBM
- 1998, Certified Java Programmer, Sun Microsystems
- 1999, WebSphere Application Development Certification, IBM
- 2008, Certified Software Tester (CSTE), The Quality Assurance
Institute (QAI)
- 2010, Re-certification as a CSTE (through 2014), QAI
In 2003, I began suffering from cold and painful hands whenever I used
the computer. I was diagnosed with Raynaud's Syndrome, and I had
to cut back to part-time for a couple of years. However, for the
past five years, I've been working full-time again, controlling the
Raynaud's by wearing gloves while I work, by limiting my time on
the computer, and through medication.
More on Retirement Planning
Meanwhile, back at IBM: In 2007, IBM discontinued its
retirement plan (like so many other companies); i.e., employees joining
IBM in 2007 or later were no longer eligible for a pension from IBM
upon retirement. This seemed very ironic; as 2007 was the
year I should have retired from IBM.
Summary
So, where am I on achieving my goals?
- I did make the Advisory level with IBM after just eight years, but
that was probably a (Peter Principle) mistake, and I've never had
another promotion since then.
- At one point, I attained the private office that I had always wanted,
only to give it up when times got lean at IBM, working instead in tiny
cubicles, or in large "bull pens" with 25 other people. (My,
how things do change.) I never had a private office again
until I started working from home.
- I wanted to be a member of IBM's Quarter Century Club, but I fell
short of that by only six months.
- Most of all, I had wanted to retire after 30 years of service with
IBM, but I fell short of that goal by five-and-a-half years.
I worked so hard through those years, and made it over 80% of the way,
only to fall short. Instead of writing about working in a
second career for the past fifteen years, I should have retired from
IBM
nine years ago with full benefits. Now I find myself still
making less money than I did fifteen years ago.
So, I had hoped to be fortunate enough to retire at the age of
51. How do I feel instead? Well: Fortunate.
I've come to realize that the most important
things in my life are faith and family. Concerning faith, I
know what I believe (in Jesus Christ), I'm comfortable with it, and I'm
ready for the afterlife. Concerning family, I have a wife who
has loved me for 38 years, two loving children and their spouses, one
granddaughter and two grandsons. Maybe I was just too focused
on the wrong goals.
Outside of my career, I traveled to Hyderabad, India in 2000 for a Gospel Crusade, where I preached three times a day, having never preached before in my life.
I also maintain a website: https://www.christiandataresources.com, where I write Christian articles and answer readers' questions.
Owen Weber 2015 |
|