Power, immediacy and correctness. As we learned in my Why I love programming (then); those were the three critical ingredients that caused me to fall in love with programming.
It took me a couple of months but I landed my first programming job with Albany Savings Bank and I immediately lost one of the critical ingredients. Yep, back to keypunch. The bank was too afraid of OLPD (On-line Program Development) to allow us to use it. We did it all by keypunch cards, handed them in to an operator who would then run it (eventually) and give us back our output (along with the keypunch cards).
I learned NCR’s (formerly National Cash Register) mainframe language called NEAT/3 and there was 2 levels to it. Neat/3 Level 1 was like cryptic COBOL with only 8 character names. Level 2 was basically NCR’s assembler.
I used Neat/3 for my first 3 years of programming. For the bank I did mostly report generation, for Victory Markets it was mostly inventory tracking and for Shoney’s South it was mostly General Ledger and Tax Tracking and Payroll. I’ve always enjoyed meeting new people so moving once a year into a new situation was part of the fun.
In each job, I quickly became the main debugging expert because I’ve been doing puzzles since I was in kindergarten and debugging is just puzzle solving. While in Memphis, I also started leaning Basic and I wrote my first little game that allowed to people to play Othello easily. It was crude but fun. I also did some consulting on the side in Memphis (for Peachtree Software, again mostly debugging other people’s programs).
Moving to California and working for Triad Systems; I became the only non-COBOL programmer in a COBOL group. I learned some COBOL but mostly learned Texas Instruments JCL (called “procs”). I ended up becoming a data conversion expert and eventually wiped-out Triad’s field service organization by making installation and maintenance of it’s systems so easily.
I was just starting to get bored with the COBOL and non-COBOL stuff when Unix appeared on the horizon. Unix, Pipes, Awk, Vi, E-mail, Grep; it was all an amazing new way of computing. Shortly thereafter I started hearing about C and realized that was the language I needed to learn.
In my spare time from about 87 to 91 – I decided to learn C on my own and I wrote my first shareware game called Modern Problems. In the middle of that, I switched jobs from Triad Systems to Tandem Computers, working in their TMF QA department. Writing programs to test and break their Transaction Monitoring Facility.
With Modern Problems, I got my first taste of Graphics Programming but it was Dos based and their weren’t a lot of helpful libraries. As much as I resisted the Windows trend, that was the next big paradigm shift for me.
And that’s a good place to get to the point of this blog. There is always something new to learn, especially new languages, new libraries, new paradigms, etc…etc…
And that’s why I’ve continued to love programming for these past 30 years.
I’ll close with a bullet list of things I’ve left out.
- Direct-X and Full Screen game development.
- SDL and iWin’s Framework of CastMembers (almost like sprites) running around.
- Fake C++ (just used as “A Better C”).
- Real C++
- Upper Memory DOS (can’t even remember what we called it).
- Interactive Network’s proprietary C masquerading as Pop-Code/Assembler.
- The joy of Sockets
- Creating Mah Jong from scracth.
- Creating Small Games.
- Creating larger Casual Games.
- Designing a complete User Experience.
- The Joy of creating my own Art – especially the Joys of Bevel in Paint Shop Pro.
- Front Page 2000
- Java + Java Beans
- Word Press
- Word, Excel, VPN, SVN, CVS, Vim, MKS Toolkit, etc…etc…
I’m sure I’m missing stuff here. On the horizon is Unity, Android, iPhone, iPad or all of the above. Working with real 3-D instead of 2.5D (I will enjoy the day I start doing Camera tricks with real textured surfaces).
Still to come – Why I love programming (now) (only hinted at here) and What have I learned about non-programming business related stuff in the last 30 years.