The Programming Steamroller Waits For No OneJune 02, 2013
Of all the things I do or use today, the only thing I have in common with my first job is that I still write code.
Everything else has changed and changed and changed again.
If you don't keep learning, keep reading, keep improving your skills eventually that nasty steamroller behind you will flatten you permanently. Then your career is likely over.
When I started in my first job I had no idea what was going to happen. In 1981 it didn't appear as if things changed at any giant pace. People were still writing batch applications on mainframes, there were minicomputers with terminals, and personal computers were not much more than toys. Few people had a computer at home, there was no email outside of big companies and even that was barely used. Of course there was no internet or web. There were only a handful of programming languages and most of them were originally created in the 1950's.
There were few magazines that covered programming and hardly anything resembled a trade show. Even the friends I had who got a CS degree didn't really get exposed to anything recently developed. People could even get a programming job with no experience or education, as I did. You either learned by doing it yourself, or maybe on the job.
Little did I realize on my first day that behind all of this was a lumbering monster that was just getting started.
My first two years were mostly writing Fortran with a little assembly worked in. I did keep working with Basic and various other assembly languages and even played with Pascal at home. I read anything I could find just because it was interesting.
Once I got into the microcomputer group life suddenly began to accelerate. After my foray into writing an Apple ][ app the IBM PC appeared and I got to write for that in Pascal. I was asked to evaluate a set of "portable" Unix boxes that were to be sent to prospective customers so that they could check out the F-16's specs. This was my first exposure to C and led me to order a C compiler at work. No one at work had heard of it. At the same time I played briefly with a Lisa but had no idea what Object Pascal was. I saw the Mac commercial but we didn't have one though it seemed like something I wanted to work with.
Once I left and did my startup (story to come eventually) and build a spreadsheet program for the Mac (Trapeze) we decided to build it in C even though Apple still seemed to prefer Pascal. It proved a good choice for the future, as C would rule for a long time (and still does on Linux).
Around the same time I read the famous Byte magazine issue about Smalltalk and immediately I knew that Objects were in the future and I needed to understand that.
By now I really began to realize that the pace of change in programming would never slow down again. Even during this time in the late 80's, without internet or email, the speed at which new things appeared started to be much more obvious.
After selling the startup and starting a Mac programming consultancy we eventually started Deltagraph (another story coming) and I built some object extensions to C. There was no C++ yet, at least usable, but I wanted the benefits so I built some cheesy extensions that let me build multiple output drivers but still keep only a single internal output generator.
Finally in the early 90's C++ appeared and I already understood how to design from an OO perspective. Of course I still worked in C as well sometimes.
I read about something called the web at one point and tried a little text based browser and was puzzled where this was going to lead. Eventually I worked in the Bay Area for a year in the mid-90's and remember the day Netscape went public. Yet even seeing that I still didn't quite see the massive change that was about to come.
Back home after my year I remember reading of a new language called Java and played around with it. By now the web had begun but it was still so primitive I wasn't sure where it would lead but by now I knew enough to get involved. When a huge change appears in the world you might not know where it leads but you have to get your foot in.
Around the same time I started seeing people talk about other languages as well. Compared to my first job I realized that I no longer could know about everything that people were doing in programming. I had to learn how to focus on a few things, and keep enough contact in other stuff to not miss something.
That big steamroller was starting to move.
During this first wave of web programming a number of my friends that had gotten CS degrees back when I started working suddenly found themselves unemployable as people began to give up on mainframes and Cobol and they had not learned anything in the interim. Unlike me, they were only focused on what they learned and work on for almost two decades and all of it suddenly vanished.
Flattened, they were.
Once Java and J2EE (now JEE) appeared I actually played around with it and then wound up introducing it to the rest of the company. I called it "Alien Technology". Pretty soon we switched to building web apps using Java J2EE, as primitive as it was at first.
Now that the internet was fully baked and open source became a popular concept all hell broke loose. I couldn't even peripherally keep up with everything anymore. Now you had to pick something to be good in, a few things to play with, and hope you at least knew the name of the latest thing. This has accelerated to the present day and is sometimes frightening today.
Every week there is yet another new language. Add to that all the frameworks. HTML5, CSS3 and more acronyms than anyone can remember. Today's world of programming is a maelstrom of new ideas. Some of them are powerful, some have enormous potential, many wind up meaningless. But out of all of this programming soup you have to pick the right direction!
Thinking back over my three decades in this keep-in-front-of-the-roller business I can't believe how much has changed from my first few days where I wrote Fortran on paper because we had 7 people sharing a terminal. Over that time a lot of change has happened and a lot of people have been run over and became managers or managed networks or flipped burgers.
What the hell will the next 30 years be like? Will there still be programmers or will we all wind up flat? I can't imagine a period in history where so much has changed at such an enormous pace in a single industry. There is no time to breathe without learning something new just in case what you know today will make you roadkill tomorrow.
It doesn't matter if you are 20 or 55 nothing you know or do today will likely exist 10 or 20 years in the future. I've seen it happen over and over. One of my favorite sayings is "The only thing that never changes is change itself". Except I think I would add just a little change: change keeps going faster.
And that clanky monster breathing down your neck has an endless supply of fuel.
Note: A reader pointed me to this article from 2001: The Law of Accelerating Returns by Ray Kurzweil. It will take you about 12 years to finish it though!