The a codebase I work on is approaching the few-years mark.
Which is great, in terms of… its ability toward stability, supposedly. But when was the last time you’ve incidentally made a monster?
Right now I’m working through a “hot path” in the application, and this function is roughly 200 lines, and its domineering presence snake coils around many parts, and we’re not even counting all of the function calls to weave into its body. It must fire at least ~15 queries to the database to the horror of any database aficionado. When I look at it and wonder what I could do differently, I think about it for awhile, and then decide that I’d just rather finish the feature than to reevaluate my life choices.
But when you work with a codebase over a few years, it almost takes a form of its own – to viscerally feel which parts are sturdy, and how rigid it can be to extend, and I just see that, for the last few months, I just keep scooping slime after slime upon the Jenga-bot creation it’s morphed into, still teetering around until another feature stretches it to its limit in a dashing form of Dadaism.
In a prior world I may have been revolted by the state of things, the same kicking-in-chair about the legacy codebases I maintained at the big corps. But you see, the frustrating truth of maintaining any software system is that, paradoxically, the more you optimize it, the more optimizations you’ll keep doing, until you’re wadding around not in sludge, but in haywire. You could make it all pristine pretty and lego-bricky as you want. Go ahead. But another feature will demolish everything, and require you to solder on new lego-bricks in the process until, of course, you’re left with the Jenga monster I’ve been nurturing.
One time I was able to remove one subquery wrapping because we discard the results from it anyway, but it felt like digging deep into a ravine you’d rather forget. Cross referenced its calls across the codebase at least three times, but when you’re almost powerless since the creation siphons out a life of its own, so one develops a superstitious procedure, assured that, if you don’t touch the joints and if you just keep attaching appendages for a mecha-Kali homage then you can keep adding your features.
Remember, features are all that matters… until you’re writing asinine remarks on your pseudonymous blogposts, perhaps, but even then, I’ll persist and wait until the monster strangles me before I rearrange its organs and unfuse the shoulders from its eyes. These functions are beefy, and mildly intimidating, and I wonder why we support at least a few options too, but it’s encapsulated at least. It still somewhat threads together, and let’s not even talk about the Web Platform, nor the App Store, nor nothing else.
Software development and maintenance is a game of endurance, more than anything. Why do we reference this field everywhere? Because we always have. And why is the data structured this way? – you aren’t ever supposed to ask this question, as it’s roughly the same as protesting God’s plan. It Just Is.
When I try to imagine some Platonic ideal as many “crafters” of any profession are wont to do, well, I can’t imagine anything anymore. I used to, sometimes I get caught, but then I inevitably run into The Chasm to where it’s unapproachable. To where you writhe at its altar, wondering why things are this way, until you become the ardent defender of its ways. Of course it’s supposed to work this way.
To imagine an ideal, so in its place all I see are the twitchings of insane asylum inmates assuring me that, if we just put Kubernetes within Kubernetes for a Matryoshka doll hardening – to double-stack the clusters for a triple redundancy across three cloud platforms all the while dodging vendor lock in – all I know is that I feel the spiders crawling into my mouth to resist any protest, any thoughts at all. My voice box gets sewed up and you can only laugh that anyone would try anything at all.
You think you’re controlling the computer, and that’s what makes it so seductive. Developer, user, scrivener – dazzled while the cords penetrate one’s veins to nervous system.
You think you can be this smug software sorcerer… only to find oneself as the homunculus, whipped into the menial tasks the computer demands of you. I’m not sure what will happen next, but I just pray that I can scoop another batch of slime.