I find the thesaurus helps a lot with this. Actually more than just naming, because often a word in the synonym list will stand out as a more accurate representation of the concept you’re trying to add to the code, in a way that reveals subtasks that will substantially increase the value of the feature.
In short I use it as a form of rubber ducking. No it’s not like this word, it’s more like that one, but most of all like this one.
I’ve seen this enough now to consider it a trope instead of a coincidence. There’s that one or two guys on the team who may be noteworthy in their math clever but only high school reading level, who use the same word in three parts of the code but use a different dictionary definition each time. They don’t see the big deal, they can keep it straight in their head, they insist. And if you can’t then you must be dumb instead of what you really are, which is sick of his bullshit.
Given enough time and rope, these parts of the code start to encroach on each other and the cracks start to show. There are definitely bugs the smart guy introduces because no, in fact, you can’t keep them straight in your head either.
So it does matter if you use, as a top of my head example, the word “account” for both the user and group management features of the app and to describe an entry to an incident report in another part. It will bite you in the ass, and it’s easier to change now when there are three references instead of 23.
The noise is often what hides the bug in the first place. Aim for more straightforward code and the bug will often surface.
For a while when Node was switching to async from promise chains, people would bring me code or tests that were misfiring and they couldn’t tell why. Often it was because of either a bug in the promise chaining or someone tried to graft async code into the chain and it was an impedance mismatch.
I would start them by asking them to make the function fully async and then come back. About half the time the code just fixed itself. Because the intention of the code was correct, but there was some subtle bookkeeping or concurrency issue that was obfuscated. About a quarter of the time the bug popped out and the dev fixed it. And about a quarter of the time there was a legitimate bug that had been sleeping. The function was fine ones own, but something it called was broken.
There are a lot of situations like that out there. The code distracts from the real problem, but just fixing the “real problem” is a disservice because another real problem will happen later. Make the change easy. That’s always the middle of the solution.
I’d like to see someone try AI guided property based testing. The random walk could take a long time ti notice problems with code. I’d trust AI more if it brought proof instead of speculation
What I’ve found is that, particularly with internal customers, they’re fine with an hour a month, possibly several, as long as not all of your eggs are in one basket.
The centralization pushes make a situation where if I have a task to do that needs three tools to accomplish, and one of them goes down, they’re all down. So all I can do is go for coffee or an early lunch because I can’t sub in another task into this time slot. They’re all blocked by The System being down, instead of a system being down.
If CI is borked I can work on docs and catch up on emails. If the network is down or NAS is down and everything is on that NAS, then things are dire.
Gzip will make most line protocols efficient enough that you can do away with needing to write a cryptic one that will just end up being friction every time someone has to triage a production issue. Zstd will do even better.
The real one-two punch is make your parser faster and then spend the CPU cycles on better compression.
Ethernet is usually two pair, but cat5 has four. When I moved into a new apartment building I found all the phones were cat5 wiring so I was able to redo three of the outlets to do phone and an ethernet jack, then put a switch in the coat closet, which is where the wiring guys put the junction box.
I can’t recall if I put them back when I moved out. I must have, but I’ve no recollection of doing so. I think I left the junction box in the closet though.
> If you don’t think Intel put back doors into that then I fear for the future.
If that’s what you’re worried about, you shouldn’t be using computers at all. I can pretty much guarantee that Linux will adopt SoC based hardware acceleration because the benefits – both in performance and security – outweigh the theoretical risks.
My ex didn’t go to her own father’s funeral because the company said she couldn’t have that much time off. Six months later when she talked about it at work they were horrified she hadn’t felt she could go, but how could you possibly make that up to someone? I think they might have actually worried she would sue them.
I told her to go and we’d sort out her work situation when she or we got back.
It kinda came out of the blue so we didn’t have time to hypothetically it out so we could just operate on autopilot.
Since then I’ve had bosses who heard of a death/critical illness in the family just say, “Go.” No discussion or details needed. Just go. Because being petty or precious about the whole thing just makes you public enemy. And when clever people work for you they don’t always come at you straight on. They come at you sideways and you don’t even know it’s revenge. They just passive aggressively let something slide that made your life miserable.
In short I use it as a form of rubber ducking. No it’s not like this word, it’s more like that one, but most of all like this one.
reply