Unimportant?
Another Saturday, another opportunity for confirmation bias. The YouTube algorithm popped this video into my feed. I’ve seen a few others by Mo Bitar and, in general, have rather enjoyed his content. The timing was interesting because this morning I posted a question to friends on Discord that was related.
Exactly what code do you work on that isn’t important?
I ask because I still far too many comments like this:
- “Well, of course I don’t let AI code the important stuff.”
- “Oh, I always review everything, especially the important stuff.”
- “AI is great for handling all the boring (i.e. unimportant) stuff.”
That sounds great! What’s unimportant? Seriously.
If you’re executing code on your local machine, what part isn’t important? With your family photos, private documents, bank info, credentials, and all other manner of personal data hanging out on your computer, is there anything that’s unimportant? What about on your smart phone? I’m sure there’s nothing important there.
If you work on a SaaS system where you store customer data or are paid for a service, is there anything that’s unimportant?
Is there some kind of code that:
- Doesn’t pose a security risk?
- Can’t leak data to a client?
- Can’t destroy data it works with?
Even something like CSS can make a product unusable.
All code that is part of a system or executable on any machine with important data is important.
Yes, All of It
In the main codebase I currently maintain there is a core factory module that produces data for our test cases. A couple years ago I had to add a chunk of documentation to it that was basically a rant saying, all code is real code and all code is important. That includes factories and test cases. This was written after I torched a Friday evening cleaning up a ton of test cases and refactoring a bunch of copy pasta in to reusable factories.1
Senior members of my team were the worst offenders (why is this so often the case?). They were in too much of a hurry to do the right thing which saved them time in the immediate term but, as is tradition, it cost me time. It’s been many, many years since I wasn’t the most valuable member of my teams. One of the main reasons isn’t any sort of wizardry either. It’s a willingness to do exactly this sort of unimportant grunt work.
Except it is important. It’s very important.
I care about the correctness and flexibility of a project. I care about this much more than “just getting it done” or even about a given feature. I don’t even care about deadlines most of the time because they’re a joke. And besides, deadlines include all of the important work. This is why teams I work on understand that sometimes I’m gonna go off script and spend a couples days refactoring a dump heap that has more and more trash piled on top.
Work like this—work that makes it easier to write tests and produce reliable state—means more tests get written. It means when a time crunch comes or a bug is found, testing is easier. This is exactly the stuff I think of as technical investment and it is important for the health of a codebase and a system. It’s extremely important.
Are we just now noticing?
The whole AI code thing must be one hell of a drug.2 Seeing people who were or are otherwise rational go down this rabbit hole really has me thinking that drugs are the right analogy. More than one co-worker has described it as such to me. Is there really safe or responsible use of heroine?
Do you really want to engage with technology that is being being made intentionally addictive? (Just get off social media. Please)
Mo Bitar’s video is strange to me in many ways. I’ve seen and read others say some similar stuff and I just don’t get this awakening.
Is it ethical to pass this on to customers? No.
Is it safe? No.
Is it good work? No.
Can we really vouch for it or that we understand it? No.
This isn’t new. These are the questions and conundrums we should have had well before AI started shitting all over everything.
We’re already many, many layers deep as it is as programmers. We’re using compilers and libraries and system calls and all sorts of things we have to trust does what it says it does. We have to trust that at least someone has reviewed and taken some degree of responsibility for it.
Closed source vibe coded (or agentic, it’s just another word for the same shit) SaaS sounds like a recipe for disaster.
The Trifecta
Corporate Leaders Are Greedy Fucks
Corporate leaders have become particularly hostile even to their customers in recent years. I’m not saying there was a golden age per se, but this has been getting progressively worse in the last fifteen plus years. They don’t care. As long as they can get a lawyer on their team to convince them that they aren’t liable or that it doesn’t really matter because no one will fight it, ship it!
Programming is a Trash Trade
Software engineering is a shit discipline because there’s very little discipline involved. This is in part because of the aforementioned corporate leaders but… this is an industry that’s often more obsessed with the tools of the trade than the actual trade. Perhaps the nature of automation disproportionately imbues us with dispositions leaning toward avoiding work. I don’t have a clear answer, but anyone with more than a year of experience in software industry knows this.
Responsibility Isn’t Part of the Trade
Finally, there’s very little responsibility in software—not for the programmers themselves and certainly not for most of the companies. This is a huge problem.
Data security is a joke. If you’re giving your codebase to Anthropic or OpenAI and you’re allowing agents to run on developer machines, you are a joke. Full stop. You do not take security seriously.
The penalties for breeches or violations of law are typically not enough to scare the most egregious offenders.
The penalty for bringing down half the internet, costing hundreds of companies millions of dollars, is writing a postmortem blog post.
People make mistakes. It happens. Disciplined process is there to reduce those mistakes. This is, unfortunately at odds with hockey stick obsessed corporate leaders, monkeys chasing metric bananas, and “engineers” who are more interested in the current development fashion than in understanding the core of their trade or the business domains they touch.
Code is important people! We’re entrusted with sensitive data and critical tasks. Maybe keep that in mind when you work.
I keep thinking programmers need a fucking union but do we deserve one? Do we deserve to be taken seriously when we don’t really take our own trade seriously? While it doesn’t apply to all individuals, I’m starting to feel like our industry deserves this right now because as a whole, we suck.
I’ve had Jamiroquai’s Virtual Insanity on repeat a lot lately.
It is a wonder man can eat at all
When things are big that should be small
Who can tell what magic spells we’ll be doin’ for us?
And I’m givin’ all my love to this world, only to be told
I can’t see, I can’t breathe, no more will we be
And nothing’s going to change the way we live
‘Cause we can always take, but never give
And now that things are changin’ for the worse, see
Woah, it’s a crazy world we’re livin’ in
And I just can’t see that half of us immersed in sin
Is all we have to give theseFutures made of virtual insanity
Now, always seem to be governed by this love we have
For useless twisting of our new technology
Oh, now there is no sound, for we all live underground
Useless twisting of our new technology… yeah, that about sums it up.
There is nothing worse than a foolish man.
Virtual insanity is what we’re living in.
-
Total side note, why is it so awful to work on setting up test state? I hate it. It’s the dishwashing—probably my most despised chore—of my work. I know I’m not alone in this. I love tests. I love when tests are easy to cook up because I can quickly and easily generate the state I need. Writing factories? Kill me. I have no reasonable explanation for why I find this so distasteful. ↩
-
Rick James sounds surprisingly like an AI coder in these skits. ↩