Published: 2024-12-09
I don't want to turn this space into a tech blog, I want it to feel like social media, where I might post about how the world is steadily turning to fascism one minute, and the next one I'd be sharing one of my favorite jokes from Seinfeld, I want this space to be an extension of my online persona, not some kind of curriculum vitae for companies to assess my worth as a software developer, but the matter of the fact is I do work full-time as a software developer, which means that when I'm not attending some useless meeting I'm writing some useless software, therefore it's only normal for me to have opinions about software and the industry as a whole.
I recently created this blog and probably the first thought I had was "Let's write about what tools I used to get the job done", which is actually a common practice, in fact, I dare to say there are more blogs out there with one single post detailing which tools were used to create said blog that ones showing regular quality posts. But I didn't want to just show which tools I used to make the blog, no sir, I wanted to tell the story of why I decided to use these tools and why they may be "better" than most other tools in an unexpected way, not because they are the most cutting-edge, fast, or innovative ones, but because they may be the most reliable ones.
Be running of that downhill
Have you ever been in the market for a new TV? Or computer? Maybe a new internet plan? It doesn't matter where you look, it doesn't matter what you want, it doesn't matter if you are a company, software developer, or regular user, everything seems to be trash nowadays, so much so that a term was coined to describe this very same phenomenon: enshittification, and what is enshittification? Well, it wouldn't make sense to describe it in detail after linking to the Wikipedia article, but essentially is taking something and making it worse, especially in the software industry.
Let's talk about this for a minute. Companies under capitalism have one, and only one main goal, and that is, as Lalo Salamanca put it so eloquently in Better Call Saul's season 5, episode 7, "JMM": just make money. All the stuff you see in TV commercials like white men in suits serving soup to homeless people, or a group of employees from different backgrounds, ethnic groups, and sexual orientations smiling to the camera while sharing a pizza is just a PR stunt to make you think that there is actual people behind these brands, Coca-Cola means family and Chevrolet means tradition, they cannot be evil, they have Santa Claus in their commercials! The reality is companies are profit-driven, not people-driven. So these companies put out products that do one thing, and they even are very good at doing that one thing, but that's not enough, how could it be? If the goal is making money they have to appeal to everyone from single mothers to LGBT+ members, because even if these companies are financing the biggest bigots' campaigns, gay money is still green. So what do they do? They add fancy names to the same ol' products, this is not a cellphone, this is a smartphone, sure you're gonna want one of those — it gets worse, some companies would throw a letter in front of the word "phone" and charge a premium for it. They also add features you didn't know you needed — maybe because you actually didn't — sure your "smartphone" can phone and text your friends and family, but now it's also a pedometer, it comes with an accelerometer, it has a bigger diameter, and if you stick it into the right place it works as a thermometer! That's a lot of bang for your buck I'll say.
These last examples refer mostly to hardware but software enshittification it's no different, sure cutting the cord made sense when Netflix had the HBO, NBC, Paramount, and Disney catalog, it was cheap and convenient, not so much now, these four companies have created their own streaming services and taken most — if not all — of their catalog with them, now we are stuck with multiple streaming services with smaller, less-varied catalogs that appeal no one, how are companies going to combat this? They won't, they will just start pumping original "content" into their catalogs as fast as possible, never mind the quality, customers will bite after seeing the amount of stuff they're getting, but that doesn't make a profit big enough to satisfy greedy CEOs and shareholders, maybe taking the money from customers AND advertisers is the solution, so showing ads it is! But you know, password sharing is getting in the way of even more profits so let's restrict that too, if your cousin wants to watch Squid Game they better pay for their account, plans start at just $4.99.
But you are a software developer, you are smarter than that, you are part of the resistance, you know better! There's just no way companies are getting you, right? Well...
Made by developers, for cult followers©
Is easy to look at products or services aimed at the masses and point out when they started going downhill, but what about products and services aimed at software developers and other people in IT? What about languages, frameworks, libraries, databases, and infrastructure as a service? They couldn't be getting worse, we wouldn't allow that! Right...? The reality is, that not only are they getting enshittified, companies are building more and more enshittified products from the ground up every day.
Frameworks are being built not on top of standards, design patterns, and best practices but on what they call "developer experience", that's to say they are being made so even the less skilled of developers could get easily up to speed and writing code with the tool, which is good, right? Wrong. These frameworks are made to trap junior developers and companies into using them, thus providing cheap labor for companies, and work opportunities for less experienced developers, which is good, right? What do you think? IT'S NOT GOOD. Third-party companies, and more often than not, the very same companies behind these tools start offering bootcamps, and certification programs that cost hundreds of dollars, ripping off college students and working-class young men and women with the promise of a good-paying job after learning the tool. But these developers are a menace to society — I know I was, and still am one — they are learning to fly a jetpack way before they learn to crawl, they are getting familiar with abstractions before learning the underlying language, standards, design patterns, and best practices which the tool was built on, they are living and dying by the tool, in other words, they are cult followers — and again, I know I was one.
Since these frameworks are rarely built on design patterns or best practices, much of what is learned when using them is not transferable, and why would they be built on best practices? That's boring! The secret sauce is using adjectives like "bespoke" or "forward-thinking" or cliché tag lines like "for rock stars" and people will be getting hook up to that thing as if it were heroin, after all "The web framework for competent professionals" just doesn't have the same ring to it. But competent professionals are the ones that end up dealing with the biggest piles of lasagna code — like spaghetti code, but with more layers — built with these frameworks, and their challenges are always the same, "How can I make this use properly injected services instead of global static classes and functions?", "How can I introduce automated tests?", "How can I introduce a better architecture?", "These ORM-produced queries are not efficient, what were these guys thinking?", "Wait, why are we using a million non-descriptive CSS classes instead of plain CSS like a normal human being would?", etc. You get the idea.
This obsession with making everything new and exciting is just contributing to the enshittification of the software industry, the thing is, these shiny new tools that offer to make you more productive or stay up to date with the current trends pray on the gullibility of companies and developers alike, even in the open source space it's not uncommon to see a whole ecosystem built around paid services and addons for these kind of tools, because at the end of the day their only goal is to make enough of a following to secure making a profit. That doesn't mean that making money makes you evil, there are great paid products and services out there that will deliver on their promise of making you more productive — or whatever they're selling you on — with little to no enshittification.
Be the resistance, choose boredom
It's said that when the Spaniard conquistadores arrived to the island La Hispaniola — which is now shared between the Dominican Republic and Haiti — they were carrying little mirrors with them, the natives, fascinated by these artifacts, gave their gold — which they didn't have a use for — away in exchange for the mirrors. I can't vouch for the veracity of this story but I can firmly say that the tech industry has been exchanging gold (standards) for mirrors (novelty) at least for the past one or two decades.
If the industry is giving away its most precious resources, how can we as individuals, and as a group fight back? Simple, reject novelty, embrace boredom. Standards and not-so-novel tools aren't attractive, there's no tagline or fancy adjectives attached to them, they are not for "rock stars", "ninjas", or "forward thinkers", they are boring, but they are for everyone, and as a competent professional you are gonna need them the most. You don't need a convoluted process to create your personal website, at the end of the day browsers only interpret HTML, why then feed it a pile of JSON and let the client do the heavy lifting? Choose a tool that is good at generating HTML and you're done. I chose Cecil, it's boring and I love it! But you don't have to, you could even just manually type your content into a .html file and that's OK too. You don't need a load balancer and infinite replicas for your web apps, stop it, you definitively don't need Kubernetes and Docker, you don't even need an AWS EC2 instance or Digital Ocean Droplet, you could host your static site or web app using Surge like I did, deploying your site takes literally one command and configuration is minimal, boring!
That is not to say that:
- These tools don't have their place, because they do but not in 80% of cases, and yes, I mean that even if you're building something more complex than a static website or small web app. Although there are also tools that I simply don't think have their place.
- You shouldn't stay curious, try new things, and form your own opinion. Because you should.
What I'm trying to say is that you can accomplish a lot by focusing on standards, design patterns, and best practices, tools that have been available for decades and have been proven to deliver results time and time again. If a framework, library, or any other tool — including programming languages — goes against those standards reject it, why would you choose to use CSS in JS or a "utility first" framework when there's already a tool that does the job? What you need to do is actually learn how to use CSS. Yes, CSS has its shortcomings but it's the standard that browsers agreed to use, it's constantly improving, and updating a website to use new directives is way simpler than trying to replace a "utility first" framework after scattering thousands of small classes across your project — as you might have noticed this is one of those tools that I don't really think have a place in this industry.
Tools that are proven to work, to be efficient, tools that follow standards, those tools should be the foundation of the software we build today, they shouldn't be cast away but embraced, improved, and celebrated.