Long time no see.
Here, have a seat, and let me ramble about a bunch of things in this long and nonsensical rant. I hope this will be as interesting to you, the reader, as it is to me, the tired programmer in need of venting out.
Why do I even bother?
There’s a big chance that no one here will read this, so why bother?
I want to take things off my chest and writing in this dark corner of the internet might be a good way.
Furthermore, there’s a big chance that in the future this remains long enough to be relevant to another person.
Enough, get started already
I’m in this weird position where I am old enough in the industry (nearing 20 years of experience) but still relatively young of age, in my mid 30s.
I’ve always been the young guy of the places I worked until recently, so I’m starting to phase out of that age group. I’ve also collected a sufficient amount of knowledge through empirical, practical, theoretical and observational experiences. Thus I can humbly conclude that it’d be fair to say I’m experienced.
Yeah, I know. I haven’t said a thing yet, just kept saying nonsensical stuff like the (truly) old people do when they start telling a story.
And I know this is terrible for the SEO and the user retention (insert elaborated complaint about short attention span of tiktok generation and how dopamine rush dooms the humanity, etc..). But this wouldn’t be a proper grumpy complaint if I’m don’t make you believe I’m an old guy with back pain reminiscing of the glorious old days in a day dreaming narrative full of nostalgia partially constructed on things I have never experienced if I didn’t set the stage appropriately.
Well, where was I? Yes, the years of experience and stuff.
Although I managed to achieve all that (I mean, survive two decades of turmoil in an ever-changing industry), I feel like I’ve achieved nothing. I feel like I don’t have an identity. And this is something that bothers me.
Please, don’t pity me. I’m pretty sure among the three people that will read this text, excluding me, at least one will relate to this.
It’s the idea that the industry is moving fast - too fast - and there’s little for you to cling to and identify yourself with.
Sure, among your interests, there will be things you could reach and stamp onto your resume.
I could come here and state that I’m a functional programming guy. Technically, I was (see my articles about monads and stuff, that’s enough proof isn’t it?). But it’s been ages since I’ve professionally worked with FP.
I could also claim my thing is infrastructure, observability, DevOps and the likes, but similarly, I’ve only properly tackled that in my last job. That’s 7% of the places I’ve worked and 15% of my career. It could be something I’m doing now but that’s not what defines me.
I could say that I like optimizing things and that’s been something I’ve been doing for long, but that’s like the superset of the superset of things, as that entails cost optimization, performance optimization, process optimization, deployment optimization… You get idea.
And why is that? Is it my fault? Have I been too careless with my career? Have I accidentally hurt my hireability and made my LinkedIn less appealing to the market by pursuing joy and fun?
Not so fast, kiddo (instantly aging 15+ years with this one), as it ain’t that easy.
There’s a tribal nature in this industry, where we’re led to believe technology, practices, processes build our cultural identification and in order to belong to that clan you have to defend it against the ills and wrongdoings of the others.
“No rust shall touch my C codebase! We MUST do TDD! Defend our rite of mobbing!”
It all boils down to must and must not commandments.
Yep, that identity thing I started talking about you’re thinking of now, aren’t you? We’ll, don’t listen to me, I’m an old guy behind a keyboard ranting about life.
But I never said that your identity is about dismissing what’s not within that. It’d be stupid to dismiss hammers if you’re exceptionally skilled with screwdrivers.
Same way that it’s stupid to force the wrong tech or to argue what’s the objectively superior tech.
Of course you can write your performance sensitive app with thousands of layers of carefully constructed abstractions, go, be happy. I won’t waste my breath trying to explain you what experience will do a better job teaching. It’s the inability to learn from experience that’s the problem. Because treating your favourite tech as your social identity builds this cognitive dissonance that forbids you from learning.
You see? I told you this would be a nonsensical rambling. Maybe my own identity forbids me from stopping writing this kind of garbage.
So I (well, I think all of us, but I can only speak for myself) am walking a fine line between clinging to something that I can say identifies me as an engineer and avoiding at all costs being blinded by tech sects and cults often inadvertently built. The tragedy of the generalist I could say.
And likely this was trailed by walking a path I mostly didn’t concern too much about, because I was focusing too much on the end result, the ideal of grandiose engineering practice.
But as a software engineer I’ve also sadly come to the realization that our craft is letting go of all the layers of complexity that the title engineer used to bear.
When I got to university (which I thankfully dropped out of, but that’s story for another rainy day), I remember picking computer engineering precisely to satisfy the arrogance of my teenage mind that desperately demanded a ladder to climb out of the mediocrity I thought I was stuck in. Because engineers solve complex problems through use of a myriad of different tools, such as theoretical mathematical knowledge, analytical skills, statistical comprehension, and all sorts of meticulously trained abstract foundations to decrypt and understand complicated problems.
But we’re stuck in an era of stalling development because jira tickets are poorly written, product owners are drowning in meetings and the specs are incomplete.
Not only they took away - and we let them - the analytical part of our job, but we also lost the artistic, creative part as well. Components are shoved in systems like prefab walls build a house.
We could’ve been pirates sailing in problem space land, claiming to ourselves the responsibility of building the digital wonders of our time, but we’ve become leashed pets of the solution space, incapable of sticking our heads outside our safe spaces.
In part because we’re too geek to talk in public, let alone be autonomous enough to drive the solution from inception to production. But also because we’ve passively allowed what defined us as engineers to be taken away from us while we were all excited with toys and gadgets like AI.
I hope you’re not breaking down in tears as this is not a sad story, it’s just a rant. About myths we chose to believe in and only the true knowledge of hands-on experience can help us unveil. Oh, look at me, preaching gospel. I guess as we turn old, we become more religious towards some things and more atheist towards others.
And I guess I became a little atheist on the idea of Open Source. Don’t get me wrong, Open source is a fantastic repository of great ideas, implementations, knowledge, source of learning and inspiration. It is also, at the same time, an inhospitable, frightening, scary, muddy and infertile soil and paradoxically the foundation of thousands of profitable businesses, mundane gadgets and everyday processes that we ungratefully ignore. As developers, we are protagonists in this abusive relationship where either we develop the open source tools that hardly ever get the financial support and recognition they deserve (by technical merit, more than marketing) or we’re exploiting their benefits without giving back (or worse, a bizarre superposition of both).
And is precisely because of the human component of this relationship that I’m turning bitter. I feel like we’re trapped in a carefully constructed maze where there’s no win for us developers. We’re not paid well enough to be founders, we’re not esteemed high enough to drive the products or we’re not free enough to command our industry. If we set the bar too high, we’re gatekeeping. If we set it too low, we’re jeopardizing. We did this to ourselves.
We put trust high enough in companies that profit off of marketing instead of tech. We prouded ourselves of being good with systems, numbers, computers, machines and not on people. We should’ve gotten good on people. We messed it up by not getting good on people.
Our “people are too complicated” approach led us to it.
Led us to be mesmerized by snake oil tech, by carefully hidden complexity wrapped in fancy paper wraps, by impractical ideas and by smooth talking fake gurus.
No finger pointing, I guess everyone knows their own sins. If you don’t, come back in ten years. I surely know mine, and bear my regrets with me at all times, in a box called lessons learned.
But then it matters too little when I collect those mistakes, hop on top of that box and, as a doomsayer preacher, announce we’re going off to a bad direction only to be met with skepticism, disbelief and disdain. I get it when it’s from managers, but from fellow developers? Why is that? Have we become too attached to our software to the point we can’t collaborate and learn from our collaborations? Oh, yes. We suck at dealing with people.
And this doesn’t play to our favor. I remember watching some Erik Meijer talk on engineers being worth football player’s salaries and thinking that’d be good and hopefully that the market would make it truth. Fast forward a decade and what I’m looking at is the rise of vibe coding, no code apps and a desperate rush to build thousands of apps in fractions of weeks.
(As the old man I’m trying my best to portray, let me hop to a seemingly unrelated topic just to merge it further down just to confuse you) I remember during my school days the old rebel professors complaining about the capitalist consumerism and the frenzy to buy new goods all the time. This is a gross misunderstanding of what capitalism is. I don’t expect less from a generation that feels inspired by stories of communism and socialism, and I’ll try my best to keep this article apolitical (although some might claim everything is politics and we live an torn society anyways, oh well). What irates me is those who believe in consumerism and the frantic idea of extremely fast turnover. And a generation of naïve people, building off the idea that consumerism is good, got under the sheets with venture capital and so was born the idea of releasing apps and digital products as quickly as possible, by any means necessary.
So, trying my best not to be pedantic, let me explain a core principle of capitalism (at least one I believe in): we must deliver value. Value. Services, apps, products that don’t deliver any value are just diverting capital from where value truly is.
And this is devaluing the software engineering profession. To the dismay of my younger self that believed in Erik Meijer. You see, there’s a ton of value in open source, a net of exponentially synergic interconnected value-bearing projects sum up to unfanthomable amounts of value. Yet we barely recognize that. Those are, or should be, the wonders of our times, but we’re so short-sighted and narrow-focused playing with our LLMs that we’re unable to contemplate the colossal magnitude of what software engineering has brought us, and we’re content with code-spewing mathematical models producing subpar systems and apps. We let that happen. We devalued our craft.
I don’t know where I’m going with this and I sure hoped I would come up with an uplifting comment to counter balance this apocalyptic cloud of negative bitterness I logorrheically jotted down in this unnecessarily prolix excerpt. But I couldn’t, because perhaps I find myself in a very similar apocalyptic storm and this is me rationalizing the demons that surround me through the lens of my analytical skills. One may say I’m subconsciously trying to put everyone in the same chaotic grounds that I’m currently in to feel better, but I chose to believe I’m actually just an old man complaining at the things that went wrong in my life, disguised as constructive (but perhaps not polite, as old people comments turn out to be) criticism.
It is, undeniably, a conversation between my current self and my past self, where I point out the things I’m smart enough to realize now but wasn’t back then, and how they impacted me. Weird thing to do in public, but I guess old people just lost all their shame.
:wq