A career comes to a close
TL;DR: Long rambling post reminiscing about a 47 year career.
I’ve done it. I’ve now entered the stage of life known as “retirement”.
I’ve been working in a variety of jobs and to various degrees in the computer industry since 1978.
My last major task is, ironically, quite similar to where I started. Right now I’m doing low-level work in “C” to decode and interpret packets along a communication channel for diagnostic purposes. (Back then it was work done in assembly - there was no “C” compiler available for that platform.)
Working with “computer communication” has been a recurring theme. Whenever I’m asked what I do or what my specialty is, I tend to respond “I move bits”.
I’ve had the pleasure of working in and around an amazing (to me) number of platforms, systems, languages and industries.
The first “computer” that I personally owned was a TI-57 programmable calculator. It had storage for 8 numbers and 50 program steps and operated at a 5 KHz speed. The laptop that I am using at the moment has an i9 processor with 14 cores and a base speed of 2.7 GHz, 64 GB memory and 2 TB SSD storage.
My first mass storage devices were punch cards, paper tape, and audio cassettes. Now I’m sitting in a house with more than 100 terabytes of storage.
I’ve used dial-up services like Compuserve (72437,351!), GEnie, and Delphi. I started out with a handset-based acoustic coupler running at 110 baud (10 characters per second.) Now, my Comcast connection is 2 gigabytes per second down and 300 megabytes per second up.
I’ve participated in usenet newsgroups and BBSs when they were the way to communicate. Now it’s email, social media, online forums, and video chats.
And I’ve had the opportunity to experience every technology change along the way.
However, there are very few cases where I would have been considered on the leading edge. The companies that I have worked for weren’t of the type to select unproven technologies. Most everything selected had been chosen because it was well-established in its market. (This wasn’t true for “consumer-grade” equipment that I was buying for myself. I was much more willing to risk my money for something new or different.)
I can sit here now and say overall it has been very rewarding and great fun! Challenging at times, stressful for sure, aggravating and frustrating when things aren’t going well, but I wouldn’t give up those experiences for anything. I am truly happy I fell into this career and thankful for the sequence of events that led me along this path.
I’ve also had the great benefit of working with some truly brilliant people who had inspired me and taught me more in ways that they might not even realize.
Just as important were the “people persons” that helped shape me into the person I am today. They were just as inspirational as those referenced above. Their contributions to my career cannot be overstated - for without their guidance, there’s no way my career would have been as successful as I consider it to have been. Perhaps, their role was more difficult because those lessons were needed, but not necessarily wanted or well-received.
What did my career look like?
I’ve only been employed by 4 organizations. (I have done some work on the side at different times, but not enough to be significant.) I’ve tried counting the number of different “jobs” that I have held, but that’s a bit of a nebulous number because both the Air Force and Monumental were very flexible regarding the job duties assigned to an individual without being particularly concerned with job titles. I frequently found myself placed into assignments in situations where management thought I was the best fit at the moment.
I’ve written code throughout the years. A lot of code, but not what I would consider a huge amount. I’ve spent more time “solving problems” usually needing a creative solution than just cranking out lines of code. Many of my roles involved designing solutions for others to implement rather than coding them myself, or not doing anything more than producing a “Proof of Concept” that someone else would turn into a real production system.
I’ve also written a fair number of “one-offs” - code needed to perform a translation or migration of data from one format to another, sometimes in concert with other tools intended for that purpose.
I’ve taught - formally and informally. One of my roles in the Air Force was as a Technical Training instructor, teaching assembly language (GMAP) programming on a Honeywell 6000 GCOS system. I’ve also hosted more informal 1-hour to 3-day training sessions than I can possibly count.
I’ve debugged a lot of code. Being good at this is a significant benefit while teaching and helping students with their projects. I’ve also been told that I’m a good Rubber Duck
I’ve worked in a “Systems shop”, sharing responsibility for keeping a mainframe operational. (Applying patches and updates, Running backups, tuning system parameters to optimize workload, managing storage usage, and even helping the operators run jobs on as as-needed basis.)
Those skills translated to other “sysadmin” roles that I’ve had, but instead of managing one mainframe, I’ve had shared responsibility for keeping hundreds of servers operational.
I’ve supervised - been in charge of a team of developers in a couple of different situations. (I think I was ok, but that’s about as far as I’ll go.) In one of the cases my function was more of a “project manager” than an actual supervisor.
I’ve worked a PC Help Desk - doing what was necessary to keep people’s PCs working and answering questions as appropriate.
I’ve done bulk PC installation and configuration, including a small amount of running network cables through an office.
I’ve configured a lot of PC hardware - things like setting jumpers or dip switches on cards to prevent conflicts for IO Ports or DMA Channels in older PCs. This also usually involved changing configuration files for the device drivers to know how to use the card. Being cheap, I also would make some of my own cables, such as DB-25<->DB-9 RS-232 adapters or Centronics parallel cables or even Cat-6 ethernet patch cables.
I’ve been a manager of three teams providing PC support to the company. I won’t quite go so far as to say I was a failure, but I was far from successful in that role. Nothing ever really fell apart, but that was more due to the quality of the people working for me and not anything I was bringing to that role.
I was a member of an Enterprise Architecture committee. This role gave me a real appreciation for the complexities of managing software development in a large corporation. What I learned from everyone else there far exceeded what I was able to bring to the role.
I worked in an Information Security role at a couple different times. The first was in an administrative / policy role, working to identify standards and practices to be applied throughout the organization. These weren’t just technical requirements, but also addressed topics like document labeling and storage, and security awareness training. (I received training suitable for a CISSP certification, but never took the test.) The other role was a more technical role, where I was trained in computer forensics. I was taught how to analyze different aspects of a suspect system and how to identify likely malware. Truly fascinating, and gave me more of an insight into Windows 7 internals than I ever wanted. It was also where I learned more of how to think like a intruder.
Finally, I’ve written - a lot. Documentation, emails, on-line forums, articles, blog posts, etc. Most of it hasn’t been public, and that’s fine by me. The vast majority of this has been for very limited distribution, being done primarily for the benefit of my employer at the time of writing. There is no doubt that I’ve generated far more English text than computer code, and probably by an order of magnitude. (Of course I tend to be wordy when writing, preferring a more conversational style.) You could even make the argument that my career has been more of a “communicator”, author and speaker rather than “programmer” - and that’s not entirely incorrect.
Beyond the professional aspects, this has also been a major hobby throughout my life. There are a fair number of systems and languages I have used simply because I was intrigued enough by them to want to give them a try. This isn’t likely to change. As long as I am able to do it, I hope to continue to program for many years to come.
The specific details:
Organization | Tenure | # different positions |
---|---|---|
US Air Force | 6 years | 6 |
Monumental Life / Transamerica | 29 years | 9 |
CareFirst BlueCross BlueShield | 2 years | 1 |
Parsons Brinckerhoff / WSP | 10 years | 1 |
What operating systems have I written programs for? (This is a very rough order in which I started writing programs on them.)
- HP-2000F
- MTS
- GCOS
- CP/M
- Apple DOS
- OS/360 / MVS / z/OS
- Multics
- Atari DOS
- TOS / GEM
- AT&T Unix System V
- AIX
- AS/400
- MacOS
- MS-DOS
- Netware
- OS/2
- Windows (3.0 and newer)
- Linux (multiple distros)
- Android
Going through the list of languages I’ve worked with is even more difficult, so I’ve narrowed it down to those languages where the code was used to produce useful results. (This implies either regular and on-going use, or a one-time solution to a specific issue needing to be addressed.)
In a number of these, I was asked to make changes to an existing program in that language - these don’t all represent projects started from scratch.
In no particular order:
- Various assembly languages
- H-6000
- BAL
- 8080
- 6502
- 68000
- x86
- TI-57 / TI-58 / TI-59 (programmable calculators)
- BASIC (multiple flavors)
- FORTRAN
- COBOL
- RPG/II
- JOVIAL
- PL/I
- PIL II
- SNOBOL 4
- ALGOL W
- Pascal
- Dylakor
- C
- C++
- C#
- ASP / ASP.Net
- Perl
- PHP
- Python
- Java
- JavaScript
- AWK
- dBase
- Paradox
- R:Base
- PL/SQL
- T-SQL
- Lotus macros
- Actor
- ObjectVision
- Forth
- VBA
- Bash
- MS-Dos Cmd processor
- TCL
- Expect
- REXX
- SALT (Telix)
I’ve worked with a number of different communications technologies and protocols. Again, I’m limiting these to cases where I’ve had some degree of direct contact with the technology itself beyond just using it. In this case, it would be situations where I’ve had to install and configure hardware and cables or configure systems to use it.
Communications hardware:
- async dial-up modems
- bisync dial-up modems
- ArcNet
- Thomas-Conrad network
- IBM Token Ring
- ThinNet ethernet
- Twisted pair (both token ring and ethernet)
- Midi
Communications protocols:
- ArcNet
- Thomas-Conrad network
- Token Ring
- Ethernet
- SLIP / PPP
- SNA
- IPX/SPX
- TCP/IP
- NetBEUI