Writing

Feed Software, technology, sysadmin war stories, and more.

Saturday, April 28, 2018

Optimizing your talking points

Internet, we need to have a little talk. It's come to my attention that some of your nodes have a pat answer to any little bit of story telling that I arrange. There are holes in the logic and they need to be brought into the light.

"People shouldn't write crap code"

I agree. People shouldn't write crap code. However, despite our powers combined both wishing for this, it still happens. A lot. I even do it myself. I'll assume you are better than me at this, whoever you are, because you said this. Therefore, you do not write crap code.

That's pretty awesome. However, you still have to work with the rest of us. We're going to do dumb things like disabling the first 100 accounts on a system instead of disabling the first 100 entries in a list on occasion. We're going to use a string as a key and then hand it an int sometimes.

If your programming organization is bigger than just you, then yes, eventually you are going to cross paths with one of us, and then you have a decision to make. We'll come back to that, but first, another line from the nodes.

"You shouldn't hire bad programmers"

Wouldn't that be nice? I mean, it kind of would, since none of us would have jobs, because we all suck. Except for you, of course, since we already established that you're better than the rest of us. If a "bad programmer" is someone who makes mistakes sometimes, then I dare say that everyone else in the world will eventually sort into that bucket.

This kind of solves the earlier problem, right? If this held up, then you might in fact be the only programmer on earth. Then you wouldn't have any teammates, and you wouldn't have to worry about crap code. Pretty solid!

"I've never seen this happen, I've never done it myself, and I'll never see this in any code I write for the rest of my life"

Well, yeah, because you are THE ONE. You're the one who climbs up onto the tower at the end of the movie and starts kicking ass on all of the exiles who only see you as "fresh fish".

Naturally, you won't do this bad coding. But the rest of us will.

"This is so easy to test for"

Is it? Testing is as much a human thing as it is a technical thing. If your people don't buy into the notion of testing, what happens then? How about the fact that tests are also just code, and therefore tests can suck just as bad as the actual program, if not worse? Keep in mind that the rest of us peons are the ones writing both the program and the tests, so what are the odds that both will be correct at the same time?

"I hope this didn't run in prod"

Most of my stories are tales from the trenches: real stuff that's happened at one place or another. Sometimes, I've filed off the identifying marks so as not to give a giant flaming arrow pointing at a certain company, but it usually doesn't matter. It seems like a lot of these places eventually make the same mistakes anyway. Because we all suck. Because we're not you.

So yes, the uid thing ran in prod... somewhere. The string-map-int stuff ran in prod.... somewhere. strftime with %G happened... somewhere. The processor bugs happened... somewhere. std::string and bad vectors happened... somewhere. Exfiltrating via SMTP and DNS happened... somewhere. IPv6 badness crossing a router happened.. somewhere. malloc("HTTP") happened... somewhere. Because we are not you.

Finally, I have a suggestion for you. Instead of posting all of those indirect messages which dance around your actual point, try this instead:

"I am THE ONE. You only need to know me. I am better than all of you."

Then you can bow out of the conversation and let the rest of us figure out how to get the job done with our shitty sub-par abilities.

Sorry about wasting your time. This is not for you.