Hard to believe I've been doing this for 4 decades and not only can still be successful at it but still enjoy it.
I was 15-going-on-16 starting as a junior in high school. A teacher had decided that the school needed to offer a computer class and found a grant. Me and most of my friends were all what today you might call geeks, we all hacked on calculators and belonged to the chess club. We had a room near the library with a teletype that had access to a mainframe somewhere. For the next year we learned Basic and Fortran II, listened to speakers, I think went on field trips, and generally learned both how to program and how computers worked. We worked on a big project (a school wide carpooling app no one used) and an individual big project (mine was a carnival of games). If not for that class my life would have turned out quite different.
Until I bought an Apple II+ after graduating from college getting access to a computer required a lot of "imagination" and "creativity" so my programming was a bit sparse for a while after than one year. Once I actually owned one I doubt there have been more than two weeks since that time I haven't written some kind of code.
In October, 1981, I got my first programming job. During those first 3 years I gradually moved down from a mainframe to a super-mini finally to Apples and PCs. I had two startups during the following 9 years, both working on Mac desktop apps. Since then I've mostly worked for other folks. Today I build native mobile apps (mostly iOS).
Everything that I knew or worked on since that first year of class has changed many times except for one thing: I still write code the same way I did then. I had no idea what was coming, but for whatever reason it made sense to me and continues to work despite all the radical developments in programming and the wildly changing platforms. A sort of test-concept, write-code, validate-code iterative system that remains the core of what I do. It isn't Test First Development or modern Unit Testing but a little of each and stills serves me well today.
So what are the biggest changes since that first line 40 years ago? How did I manage to stay relevant despite it being 210 dog years as a programmer?
In no particular order other than vaguely historical:
The Personal Computer - when I learned how to program no one had a computer a home, they hadn't been invented yet. Hard to imagine today, I learned to code during Neanderthal times. Once everyone had one at home and every desk at work had one programming changed a lot. People needed way more programmers to fill up those new computers with something to run. Most programmers during this era did not get a CS degree. Mine was in Chemistry.
The Windowed, Bitmapped, Mouse driven computer - particularly the Mac, although I briefly had a LISA on my desk. This created yet another mega change in programming, essentially the advent of the modern computer. Note that in the early days from 1984 until the end of the decade Mac was the platform where everything new was invented; Windows only appeared at the end of the decade. My two startups were writing Mac software. There's a lot more stories there for later. Eventually Microsoft almost became the only choice here but I remained a Mac programmer until the advent of the Web.
Note that until the Internet software was generally sold in stores and mail order only and you had to have a computer to run software.
Object Oriented Programming - a fundamental shift in how programming was done. Despite the inroads of functional programming today, nothing changed how coding more than this. I was mostly introduced by the famous BYTE magazine issue which discussed Smalltalk. Even with no language I added some OO features to C for Deltagraph in 1988 so I could gain some of the advantages. I had briefly seen Object Pascal in the Lisa but it didn't register in my head until later. After that time most languages were grounded in OO concepts. Even today the majority of languages are OO.
The Internet - obviously a massive new platform. For the first time you could write software that people could use on their computer without you having to send them anything. The first time I saw a browser was a command line one and I was singularly unimpressed. I worked in Silicon Valley for one year and saw Netscape go public but still it didn't register that a huge shift was about to happen. But it happened and again there was a huge demand for programmers in yet a new area with new languages, environments and opportunities.
Free and Open Source Software - if you had told me 40 years ago there would be a huge industry of people writing stuff for free with source code, I would not have believed you. Software seemed like a thing you had to get money for, everything you needed to develop with cost a lot of money and the idea of mass giving away free stuff would have seemed bizarre (yes I know it's a pun). Yet it happened without a lot of thought, individuals just started to share more and more things including Linux, and with the internet making distribution virtually free unlike my startup days when we had to sell to distributors who sold to stores who sold to customers. In those days there was no distribution without cost unless you sent tapes around. Not only was the stuff free and had source but you could use it to expand your ability to write whatever you were doing (once licensing was made a little clearer).
Google - with all the free stuff on the internet and all the information available to anyone you needed a good way to find what you needed and Google was really the first search engine that made it work. Now for the first time since I started programming I could expand my brain with the knowledge of millions of other programmers. Where I started you could only learn from people you worked with, the library, a user group or maybe a conference. A lot of what we did in the early days was invent it ourselves. Now with the whole world available as a brain extension you could become a lot more productive. Of course you could also get a lot more distracted!
Mobile - namely the iPhone, which was the realization of a real computer in your pocket, a dream we had back then in the class where we wished our calculators could do the work of a real computer. Once again programmers had a new area to work in. Now the dream of writing code you could distribute to people all over the world could happen anywhere at any time. I had no idea back then what this world would look life, or that I would have the opportunity to be involved in it. My friends and I were all avid science-fiction readers but even the authors didn't seem to have grasped the details of what today would be like either.
There was not a single computer in the world back then as powerful as the iPhone sitting next to me is today. Not even close. Yet everyday I write code for something that was unimaginable back then. It's pretty amazing that that kid banging away on a teletype can still write code today at all!
How have I stayed relevant? You have to learn how to change continuously. I've worked on almost every kind of software over the years, in a dozen different languages, in more kinds of businesses, on more platforms and I've always wanted to learn more. I still read about new stuff every day. If I ever lose that hunger then I'm done.
What will the next 40 years bring? Change. Count on it. Maybe in 2053 programming will be done in your brain while you sleep. Or maybe the world will collapse and we will all be coding with sticks and stones. I have no idea, the world of programming has changed so much during my lifetime, yet each change came seemingly out of the blue. I doubt we can predict where this will go or even if it will keep going.
For now, back to work!