What still fascinates me about software dev 15 years into my career
That being said, 15 years is a long time for anything in life to still have its upsides - the only other thing I can think of that I enjoyed 15 years ago is, surprisingly, driving my car. It has never lost its appeal to just have an empty stretch of road ahead of me, and a solid car under my butt, the steering wheel in my hand - I don't even need music when I drive, just the sound of tires on asphalt keeps my mind at peace.
Programming is in many ways like that, so it makes sense that I would come up with those two together - and today, I want to write about programming, coding, software development, and what about them still fascinates me to this day.
The tiny improvements with tiny impact
Don't get me wrong, I enjoy the small or large improvements that have substantial impact, that is where I earn my paycheck. But honestly speaking, I find the really tiny ones the most fascinating, where I save five minutes per day, or an hour per week, with a little script that I wrote, a workaround here, or an hour spent cleaning up data in the database.
Last week, I wrote a single line of code that fixes a recurring error by simply making the data flow into another path, and that will save me roughly ten minutes every time this somewhat rare bug comes up. It's based on faulty input data that we don't have access to, and the manual fix doesn't take long - but it just feels soooo nice to know that I had the system insights to understand the issue, the source, the workaround. 15 years of my life went into this single line of code, and I find that fascinating.
The freedom of information
I have this same fascination with other tiny things that I didn't build myself. The next time you write a line of code in VS Code and it autocompletes, take a moment to just sit there and think about what all had to happen for that line to auto complete. Thousands of people worked, many for free, on things you'll never know about, facing issues that don't even come to your mind, just so that you and I could sit here and type single letters and end up with whole lines of code.
There is a direct line of descendants you could follow from this moment in time to like 1970 or whatever, just of people using the work of others to create work that then again other people could use to build more stuff, faster, and with less errors. I started my life in development writing VBA macros that called endpoints using a deprecated method to then fill a spreadsheet with data. Today, nobody in their right mind uses that workflow because we can just call the exportAsSpreadsheet() in our proper code.
A lot of times, I just find myself sitting to pause and think about this, the tiny impacts that we or others make every single day, and the way you can't even be sure who the strangers are that we help online. Two countries might be at war with each other, but the programmers in either country would still happily help each other fix their targeting algorithms on StackOverflow because it provides such an interesting challenge.
Many people who worked on the tools we use are dead, others are murderers. Some have had accidents, others haven't written a line of code in ten years. Some people you'll never met have held talks about the functionality that you use everyday, and have dedicated large portions of their lives to it.
Not a lot of industries are like that - if any, even. Good luck trying to find a typical craftsman who willingly shares the secrets of his trade with complete strangers. Many of my friends who work office jobs find the concept of having fun at work completely foreign, and live their whole lives at work in hiding and fear of their boss without ever once having the chance to build and improve things like we can every single day.
I find all of that fascinating.
The way people find gray areas in booleans
It will never cease to amaze me how two people can look at 1==1 and come to different conclusions about it. In tech, pretty much anything can be distilled down to a boolean - either the system works, or it doesn't. Either the code compiles, or it doesn't.
For something where pretty much anything is in one of two states, there is a fascinating amount of leeway, room for argument, and political and personal opinions that flows into me finally being able to write the single line of code that I could have written last week.
Not always for the worse, actually - a lot of times, these discussions make sense, and input from other developers, teams - even your boss's concerns can occasionally be viable past the point of him being afraid to admit to other afraid people in suits what everyone can see anyway.
I have risen the ranks just about as high as I care for, and a good bit of my life these days is the people side of software development - but thankfully, still from a position where I am the one who knocks codes. I can sit here looking forward to the time when other people finally see the light and give me permission, and honestly often enjoy the whole process that goes into keeping me supplied with work, and doing the occasional thing to influence things my way.
People make software development more interesting than it would otherwise be, I'll say that much. And now please leave me alone, I want to write code because code doesn't care about office politics.
Middleware
A lot of my recent work has been in making two large systems talk to each other - and you know what, that stuff is fun. Understanding the output of one system, understanding the input of the other, and understanding the core concepts that make them both similar, and the edge cases that make them different. Sure, in many ways, middleware comes down to passing data through - but there is so much to it that offers room for proper software design and implementation work.
Monitoring, hosting, stable code, input data validation, data transformation where necessary, normalizing it, encoding problems, firewalls and proxies to call or consume endpoints - the most boring middleware has enough topics to keep my head occupied and my brain active. After 15 years, it's those neural activation units that I crave more than the money - and designing and building middleware is not the worst in that regard.
I think the best part is that one human can reasonably overlook all of it, there are some cases that I have written completely myself, three years ago, and they still function. Not because I am the world's best coder, but because the inputs and outputs are so reliable, and I had that critical mass of production data with every possible quirk imaginable to test and filter, and improve my validation until it was bulletproof.
There aren't many places in our world where you can really find unmaintained code that still works. It feels a bit like watching fish swim in an aquarium, with less worry about the inhumane treatment of the living beings inside of it. A self-contained ecosystem is interesting to waste time with occasionally log into to see if the automated error reporting was right in being so silent.
How loud people are about the latest trend in tech
I promise, I have just two things to say about AI:
Y'all still remember the noise that people made when Low-Code was the topic of the day?
Curiously, I never heard a single programmer complain about automating people's work while they were the only ones automating it. I won't call everyone hypocritical, but a good few people sound surprisingly desperate as of late.
In general, I find it interesting how vocal people are about things we don't have to be vocal about, and aren't really threatened by. The world of tech moves on, so do we, and if I do the same exact work that I did last year, I feel like I did something wrong. I notice this a lot now that I get further into my years: A lot of people suffer from trying to make a dynamic job static. We all laugh about for utmost job security - but honestly, the people who actually see that post and go "that's my jam" are subhuman, and I don't care if you judge me for being judgmental here.
I find applications for using ChatGPT every single day in my job and in life, and I probably get more out of it than anyone who surrounds me. I can build, tinker, experiment, and I have lots of room in my job for tiny automations, up to big process steps and features that I can only build because the machine can do stuff that I know in principle, but would take me hours to research instead of minutes to prompt and a little while to make things work with my unique inputs and outputs. People who act like LLMs are completely useless are weird to me, maybe more weird than the people who insist on spamming r/programming with LLM-generated posts about LLM topics that nobody cares about.
As always when things get loud, the quiet spot by the roadside is pretty comfortable, and I can just be a casual observer and prolific user of this latest trend - and you know what, low-code has its place in the world, a few years after the hype. It's a bit like pumpkin spice latte, I tried that for the first time a few months back, like ten years after the hype. Surprisingly tasty.
How interesting the "boring side of coding" really is
I spent most of my career in what many would likely call boring: Industrial scale software development in existing system architecture. No matter if I fixed tiny bugs, built small features in a tiny subcomponent, of designed whole steps in the architecture - all of that happens in established infrastructure, limited by the existing monolithic solutions that are unlikely to change just because one guy has issues with a part of it.
But you know what: After 15 years, I am still fascinated by exactly these restraints, because they are what makes software development interesting to me. With how rigid and unmovable a lot of flawed systems are, there is always room for custom development, pragmatic solutions, completely self-built code that builds a bridge between two large rocks. There is room for "we have DevOps at home" solutions that may not be as fancy as established tools would be, but they give you 80% of the results with 20% of the work.
What I really enjoy about this kind of custom development is that there are clearly defined parameters, requirements, inputs and outputs - and there is immediate demand. I never need to do any product-market-fit because the market begs for my product, and usually tells me exactly what they need instead of me having to go around asking "anyone want this or no?".
For me, working inside of these time, budget and architectural restraints is honestly what keeps me going at this point, because I have written enough for-loops and if-statements to make most of regular software development kind of repetitive. But you can't just design systems all day, or you'll lose touch with what they are meant to achieve and the tiny struggles that you miss from a birds-eye-view, so I need some kind of actual coding in my life - and I would rather have that be fun and challenging in some way that isn't just fixing my own typos on a line I have written a thousand times before.
The boring side of code is really quite interesting.
Takeaway: Software development is the least boring part of life
Anytime I feel a bit down about my job, my day, or my progress - all I really need to do is to go grocery shopping. Just observing other people and their complete NPC behavior makes you realize what a luxury it is to sit at home and be left alone - heck, even an in-office job is better than standing at one of my friend's parties and realizing that the friends of my friends are all bonkers, batshit, utterly insane.
On the worst of days, we get to interact with a world filled with immutable truths, with freely available information, and people who are commonly intelligent enough to see reason - not always, don't get me wrong. But I really notice this sudden and steep dive anytime I venture out into the real world, it really makes me feel like a solid half of people I meet have major subsystems shut down for maintenance at any given point in time.
Add on top how software development is so varied a field that no single human can understand even a tenth of it, and you end up with a profession that starts to pay more than just money past the ten-year-mark of our careers, in unexpected ways that many people around us don't have access to.