Knaackbuilt.dev
I hate all my systems
Another pretty straightforward article here: I hate all the systems I work on or work with. They are all awful. Riddled with incoherent code garbage (much of which I wrote), technical debt, inconsistencies, and just general tech rot.
To be fair, I hate all your systems too. Don't tell me how awesome Rust is or that Deno is great or why I need to switch to blonkerflap either. I'm already on a legacy version of Curmudgeon with no intent of migrating.
Let's start with the big three (in any order):
- Drupal
- Agile
- Everything else
Drupal
I absolutely love making websites. I can't explain to you why - even after 20+ years - writing just some basic html and saving that file, chucking it onto a server and accessing it via the connected system of tubes known as the interwebs is still just fascinating.
Then some magnificent bastards thought of content management systems and specifically Drupal. Well not just some magnificent bastard, Dries. I've met Dries. He's awesome and even has a webserver running on a raspberry pi powered by a solar panel on his roof. Dries is good in my book.
Drupal on the other hand is practically a Schedule II drug. It exists with a wide possibility and risk for abuse and very limited clinical value. I'd like to make the formal complaint to the Chief Orchestrator of the internet that software development for the modern web is a form of abuse, but they are currently tied up in a never ending pitch meeting for "AI-native" software presented by Synergy Greg (trademark of Hermit Tech founder Nikhil Suresh, I am going to be mean to Synergy Greg).
I've worked with Drupal websites for 10+ years, some of which get quite a lot of traffic and people consider to be important or something (see ny.gov). These websites leverage the power of drupal and schema-oriented structures to...oh sorry I'm not desperately trying to explain why we shouldn't ignore all the fundamental and foundational concepts of the system we use to manage web content in favor of YOLO-ing a brave new world.
Drupal is great provided that we build our flavor of it with sensible, normal, software constraints. This is clearly what every software developer has said about every tool ever, but this time I actually mean it, I swear. Drupal is extremely customizable; yet you must customize almost everything. Open source software inherently means that we rely on the good graces of very smart people who are massively overworked to help fix things at scale. It's honestly incredible how that ecosystem has stayed intact and evolved over the last 15 or so years.
Every time I dive into my stump speech about what a taxonomy is or how we should use structured content types or reusable content or use the word bundles - among other words - I see the souls leave everyone I am speaking to. Their eyes gloss over and the slow methodical nodding of someone who could not fucking give fewer shits about the architecture of web systems is clearly in full swing. I can't really blame anyone because sometimes I catch myself in an endless synergy loop discussing content and media types and views and oh god I'm part of the problem.
I drank the damn kool-aid. I'm the problem I was looking at ten years ago. How did this happen?
This is an inherent struggle in all good superhero movies (shameless Harvey Dent quote): "you either die a hero or live long enough to see yourself become the villain." I have decided to just die as the villain instead, it's way more fun.
We can blame people all day long, but people are fickle and flawed. Software on the other hand should have a fucking spine and stand up to a lot of scruitny.
So what is wrong with Drupal?
Nothing. It's fine. Of all the php-driven CMS's it's the okay-ist of both of them. The problem isn't necessarily the system itself, it's everything built around it and the sad nature of the modern web as maintenance-as-a-service. I think the rest of you refer to this as backend development. I refer to it as hell on earth.
I've spent probably 68.65% of all my time working on Drupal websites doing what I would consider as maintenance. Updating modules, fucking around with dependencies, security updates, version updates, migrations, planning for major version upgrades, why the fuck did composer change that, why did anyone want to use docksal, why are my containers fucked, why the hell can't this install find drush, why should we need drush, which asshole cache is the problem now, and I hate that I know what a uuid is. Every problem ends at the key_values table or cache tags.
We could blame MYSQL, or PHP in general, or start screaming at shaking our fist at CDNs but instead let's zoom out a bit and blame another system: Agile.
AGILE in any form
I actually wear hats at work. If anyone ever reads this and I've worked with them in real life they will chuckle and maybe think about what stupid hat I had on that day.
I wear a NASA branded hat quite a lot for the primary reason that I'm pretty sure I could fix a spaceship if I had to. That sounds incredibly arrogant, but it actually comes from a place of utter stupidity and bewilderment: any of the systems you see around you, no matter how awe-inspiring or complex, are at some level built on a foundation that follows some version of the keep-it-simple-stupid philosophy.
My thoughts with the spaceship are best read as a caveman engineer: spaceship is box, box keep air in, people no die. Box has hole? People die, no air, or fire, or cold, or all. Close box up.
Electrical systems are the same: wire no connected? bright light no work. Wire connected but no fire? fix fire, white fire go in wire, light work. Light still no work? Plug and unplug, jiggle, then hit with hammer.
I want to be clear here: I have to boil complex systems down to literally the dumbest, simplest thing so I can even begin to comprehend them because I'm probably dumb. Turns out, this is really effective at troubleshooting why they don't work sometimes.
The central philosophy to crisis management in complex situations under duress is that you can absolutely disregard every single thing except the most basic safety or survival concept and then build from there. Maslows hierarchy of needs or something. This is actually what Agile is. It's a brutal system that doesn't play nice with friends and wouldn't get an invite to the holiday party. Fun fact: if you plan your office holiday party with an agile management tool I will report you to the Hague for crimes against humanity.
Caveman engineer does not give a shit about standup, or retro, or points, or your goddamn roadmap and burndown charts. He wants to hit rock with club. Hunt mastodon.
You can't boil the ocean into agile that has a waterfall of deadlines and tasks and also has a data tracker and an hours chart and a bowel movement tracker and a three slide powerpoint for the most disconnected, disinterested, and data-hungry executive to understand why you chose to upgrade a minor version dependency this sprint vs. next instead of "optimizing the workflows to sync with the zeitgeist of structured needs in an AI-native, data-driven..." ::Synergy Greg has entered the chat::
I've mentioned this before, but boiling the ocean will kill everyone. This is not the change we need in the world.
Am I telling you that you are doing Agile wrong?
No. I don't care how you do agile, I know that you are doing it wrong. It's not your fault, the entire system you shoehorned aglie into itself is wrong. The deliverable is ultimately profit, value, speed, deadlines, transformations, data points, or something else that gets in the way of "is the thing we made useful to anyone?"
Agile's fundamental principle is just trust. Trust that with some limited structure and information we can let good people build good things. Let's just make sure to keep talking to each other about if it's still useful to anyone or otherwise we'll end up building Microsoft Excel or any chatbot ever.
Every single project eventually falls into one of two categories:
- we tried a scrum-looking method and basically ended up just trusting people to do work with very limited oversight and instructions and hope for the best.
- we're actually doing waterfall with pretty color tags! How many minutes did you work on that ticket Greg? I need that info for data-synergy reasons.
The bottom line is that I can't trust drupal and I also can't manage building things with drupal using agile-as-a-waterfall.
I wrote this on a train, seeing the detritus of the manufacturing age of America decay out my window. Those dilapidated factories have rusty pipes, but those pipes probably still fucking work for their intended purpose. Also you can't optimize that with AI: it's a fucking pipe Greg. "Have you tried Agentic Plumbin..." ::sounds of being strangled::
I also asked AI to spell check this article. Our economy now depends upon technology that couldn't identify that I had spelled "villan" wrong, but suggested that my mispelling of the "Hauge" was intentional due to my sarcastic tone. It also invented words I didn't write, mispelled them, and then suggested other made up words that were spelled incorrectly as the fix. I hate this timeline. I gave up. You apparently can't strangle Gemini.