joshAg
Joined 15 years ago
Joined 15 years ago
The problem comes when no one is actually minding those details anymore. If those details aren't actually minded, then the work at the higher levels will be much less useful and effective, and in the worst cases won't matter at all.
But, especially as code gets flung over the wall faster and with less care, I do think they are getting to be pretty great at reviewing code for specific things that a linter can't easily catch and for looking for security, implementation, and architectural flaws before I have to look for them. A couple examples of what i mean: 'does the code use knex.raw with a template literal?', 'does the code do n+1 db lookups instead of something better?' 'do all the added/modified tests follow the test case template defined here?'
My personal "favorite" was when the lead engineer who onboarded me half a decade prior forgot the written policy he'd put in place of "no raw js dates. use this library for everything date related instead" and sent up an MR that not only used javascript dates, but did complex operations on them (incorrectly at that, because it didn't account for timezones, daylight saving, years that had a leap day, and months that weren't 30 days).
From what I can tell, it's the exact same reason people drive faster than is prudent or use their cellphone while driving. It feels safe and good right up until it isn't and you crash. And because most places don't have anywhere close to adequate specification detail, test coverage, or review coverage, the broken bits aren't even noticed until much later.
> We're left to hope that courts agree that just because something is okay for one police officer in one place to do, that doesn't mean the police department can perform that same task a thousand times in a thousand places with a thousand machines and still have it be okay.
There are multiple court cases that have done this exactly this. Carpenter v. United States and Chatrie v. United States are the ones you want.
It's absolutely cool to see this sort of validation process get cheaper and easier, but it means nothing if no one cares enough to do it. EAL1 certification can be as cheap as a beefy server, but it's not commonly done because effectively no one cares.
As microsoft learned with the zune just because it's cheaper or better at the same price doesn't mean anyone will use it. Culturally, we have to make the effort of verifying code worth it.
When you're learning/internalizing existing knowledge, you tread a defined path skipping unnecessary stops and diversion and heading instead directly to the destination. The destination, not the journey, is the point.
When you're discovering new knowledge in the form of proving/disproving, there's no defined path to follow, so there can be quite a bit of backtracking and diversions and detours into other areas you weren't planning on going initially and while there might be some well-defined paths to follow, you might have to cut your own path through uncharted desert or jungle.
All those diversions and detours make the journey just as if not more important than the destination because they create new destinations of their own for future travel that would not have been spotted or noticed for a while longer (if ever) otherwise.
So to bring it back to math, transitioning from having to develop proofs for theorems to validating/learning extant proofs completely changes the scope of future discovery. Everyone will tread the exact same path to a proof/theorem and then stand in the same place to look for future destinations and then use AI to build them a path to that new destination and then everyone will follow the same path to the new destination and repeat the process, so the chances of finding something curious along the way plummets. And something curious could be an entirely new field of math, or maybe just a new problem that isn't relevant to the intended destination but gives a view of many new never before seen destinations for future trips.
That way you can tell at a glance of the test file change just how bad it is. Seeing new raw mocks (eg sinon in the test file at all) instead of the existing mocks is an instant no, and seeing an existing mock getting added requires at least investigation for necessity.
If you're reading this, feel free to contact me at [email protected]