March 03, 2020
Originally I was looking at naming this “A Decade Long Retrospective”, after listening to Software Sessions Podcast - A Decade Long Retrospective with Ben Orenstein. Then I realized that if I limited it to only a decade, I would be cutting out half the journey. Oh. My. God. This is a long time. Checks Watch by my calculation I’ve been doing the programming thing for about 23 years if you count the early years. If you count professionally, then it’s been since midway through college so about 18 years give or take a few.
When you put it in those terms, and break it down into…sigh…two decades by technologies this is what my story looks like:
I have some honest questions to ask myself here, because that is a long time to be doing something. Although before I jump into those questions, I think it’s worth noting that my career took a particular path, and it’s mine, and it has some interesting properties. Firstly, it’s very web-based, meaning, very very early on, the Internet, and the Web (there is a distinction, which I’ll get to), were very much weaving through everything I did. Servers, browsers, requests, and how computers talk to one another. An interesting property of a long career, but non unique. But I think it’s worth calling out, that it can be very different than other careers, and if you don’t stop and think about it, you could miss it.
It could very easily have been that I had pursued a career in Computer Networking as I spent a lot of time in college working with the Network Administrator in networking closets fixing things, going on dorm-room calls to fix broken ethernet jacks or fix some other random networking issue (re-install TCP/IP on windows! renew the lease on the IP address! Fiddle with DHCP settings! Turn on the hardware switch on your laptop that controls your wireless! Press up slightly on your wireless card dongle on your PCMCIA slot on your laptop so the proprietary connection makes contact with the wireless card!) What if I had struck up a conversation with my C++ professor, and he’d gotten me a connection doing embedded C++ programming. Or maybe I’d get my A++ certification in computer hardware, or maybe I’d get interested in compilers, or assembly, or VR, or AI.
Really the amount of choices one could have in their technology career is staggeringly large. Under the umbrella of “technology” there is a huge amount of choice. It’s a vast ocean of choice, all of the possibilities of technology careers. Even as a practitioner, the amount of things you could try to be an expert in are mind-boggling. So non-technology friends, you can imagine why one of us technology folks gets a chuckle when in our job we may do one thing, and asking us to “fix your computer” may be right in our wheelhouse, or thousands of miles away from our expertise. Either way, we usually give it a shot. (Like I did this last visit to my parents re-installing that dang wireless card driver that got hosed after a Windows Update on Windows 7. Yes I told them it was end-of-life, and no, they didn’t care about the implications of that. Yes I spent half a day doing that, and yes they had spent already $150 at Best Buy with the Geek Squad after it had gotten “a virus”. I digress.)
So I landed on what is now called “Software Engineer”, or recently “Fullstack Engineer”. See What does the term “full-stack programmer” mean? What are the defining traits of a full-stack programmer?. I like these two lines:
In general a full-stack developer has knowledge that is a mile wide, but not necessarily very deep, and has core competencies in the pieces of the stack in which they work most.
Typically these skills are developed over many years in the contexts of different jobs, so as Ian mentioned being a full-stack developer means being pushed outside of your comfort zone to constantly learn new skills.
So in this ocean, and in this locale of “software engineering” my expertise is apparently a mile wide. Seems reasonable considering the size of the ocean in which we swim I guess. But that’s another conversation, around the current a la mode term we use these days “full-stack”.
Back to the reflection on the decades!
It’s been a long journey. A metric ton of fuck-ups. Some wins here and there. After this much time, you do start to see cycles, things coming into fashion, and then leaving again. I think my experience is starting to show. I care more about people now, than the technology. I know that the people using technology, and the people creating the technology are the 10 most important groups in this whole thing (binary, amirite?). The thrill of creating, of building is still there. I still get really lit up when things work, and I know why. Also I get lit up seeing something not working, and then fixing it, and knowing why. I still like to learn, trying to stay curious.