Software Subtitles Link to heading
What am I good at? Link to heading
In my 15 years of software development, I’ve had a penchant for variety. For a good portion of my career, I’ve worked for my employer as a software consultant, which means I ended up with a wide range of experience across languages, frameworks, and business domains. I’ve worked on consumer and commercial products and services, from Ag to Air Conditioners to Consumer Bluetooth Devices to Robotics, and many more. Working at that level has had me hand-rolling bit-banging display drivers in assembly, re-architecting desktop and mobile applications, and developling cloud architectures in support of all of those things.
Despite what some might feel is impressive sounding experience, I don’t feel like I’m good at any of those things. Sure, I can eloquently describe technical data relationships between disparate software. Yeah, I’ve created unique and novel solutions to difficult customer problems. And I’ve absolutely helped provide distinct value to my customers. But what am I good at? I’m not a Python Dev, a C++ Dev, a C# Dev, a React Dev, a JS Dev, and yet I’ve developed and deployed production code in all of those languages (and more). How do I sell myself as a software “jack of all trades, master of none?” What “subtitle” can I use that distinctly describes my expertise?
Where I Started Link to heading
When I first started in professional software development, I didn’t know much about the web. I started at a company where I was largely working at an embedded application level. The platform was WinCE on a TI OMAP35x platform. It communicated to specialized control boards over RS485. It was a highly customized and adaptable system, with a huge range of digital and analog IO, with expandables buses for large banks of high powe relays. It was a system that would have taken several banks of PLCs to replicate. I learned a lot from being in and using that architecture. It was the 3rd generation in a line of controls that went back 30 years, so it was full of hard learned design decisions from which this junior engineer gleaned. In that role, I also had the opportunity to do some embedded development,
Full Stack? Link to heading
After serving in that role for a few years, our customer wanted to make a mobile interface capable of communicating with that system. Over the course of the next 1.5-2 years, I helped technically lead and architect a solution that taught me even more, from specialized networking solutions to unique challenges to mobile and web dev. It was around this time that I first heard the term “Full stack”. Because I wasn’t really in the web world, I wasn’t familiar with it. Without knowing the context of the term, I actually assumed that what I was doing was full stack. I was working from embedded code to cloud and mobile - surely that was the full stack?
As any experienced dev knows, that is not what that means. For the uninitated, full stack, in the web dev world, means that you can work on code for either the frontend of the backend of an app/web property. Now I certainly don’t mean to diminish the experience needed there - software can take many different forms, and both the frontend and backend of web development can both come with immense complexities.
But as someone who enjoyed broad technical architectures, I was bit miffed - if I’m not full stack, what am I? Sure, I can describe myself as full stack. I’ve now worked on both backend and frontend code, and I can definitely find my way around a database when the need arises. But I’ve never felt that captured the breadth of my experience.
Unnecessary personal anecdotes Link to heading
When I was younger, my mother helped me “customize” my notebook for my papers. I honestly don’t remember why, but we decided on a lightning bolt on the front. I’ve also never had excellent handwriting, and when I’m writing my name quickly, I’ll scribble an “S” that can often look a lightning bolt. It’s such an oddly shaped S that I’ll now just put that one letter in lightning bolt form on my cup at parties and it’s enough for me to identify it.
Conclusion Link to heading
Eventually, all of that lightning bolt themed nostalgia led me to the term I’d been missing for the development I do: “cloud to ground”. It works on a number of levels: “Cloud”, of course, being the general term we use to refer to managed software service platforms and various hosting providers; “Ground” gives the sense of connection, of physical things: “Down to Earth”, “Grouned in reality”. What happens in the middle, “in the air”, is what the human sees: The apps, the websites, the analytics, the data, what is visible to the naked eye.
I’ve thought about making that term my own, making it some part of my unique branding, and I might still do that. But for now, for those out there in the same boat as me, feel free to use it for yourself. Maybe it’s too “cutesy” to catch on, but it’s only one more syllable than “full stack”, and I like it for its simplicity and cleverness and maybe you will too.