Banishing "Random" for Better Software Communication
“I’m still getting this random 404.”
Want to sound pro? Banish “random” from your software engineering vocabulary.
Considering the Modern Usage
“Random” has a modern usage; let’s consider it. Take this example:
“I got a random bill from my dentist.”
We hear: “This surprising thing, a bill from my dentist, happened.” It works. So what’s my issue?
Merriam-Webster defines “random” as “lacking a definite plan, purpose, or pattern.” And so, this usage is imprecise, because the bill isn’t random: someone at the dentist’s office sent it to you because they believe you owe money.
I’ve said this word in software engineering, and it can be a hindrance. Why? Because the thing we’re seeing can’t be random, and saying so might signal that we’ve stopped being curious.
Issue #1: Computers Can’t Be “Random”
The thing we’re seeing can’t be random, because computers are instructions-following machines. They can’t be random.
To get that 404, we took an action, sent instructions, and then the computer sent instructions:
- We asked for a thing
- The browser sent a request
- The server routed the request to a controller
- The controller determined that the thing couldn’t be found
- The server returned a 404
It’s a functioning process.
Issue #2: “Random” Can Signal Incuriousness
Saying it’s “random” might signal that we’ve stopped being curious.
The best engineers are unreasonably curious. They view any problem they encounter as something they could understand. When I hear “This random thing is happening,” I think: “And? What’s actually going on?” Great engineers shake off the “random” concept and start digging in.
Solution: Reframe and Attack!
The solution here is to reframe and attack the problem.
To reframe, we could say: “This thing is happening; I don’t understand it, but I will.” That’s always possible! Computers can be understood.
Or, we might say: “This thing is happening and I don’t think it matters.” When justified, that’s fine.
Suppose we want to understand this event; how could we do that? Attack it! Ask:
- What was the system doing right before?
- What changed?
- Can we reproduce it, even once?
- What do we think is happening?
Soon, randomness vanishes, revealing computers exchanging messages.
Conclusion: Banishing “Random”
“Randomness” banished! Congratulations! We’ve leveled up as software engineers.
What are your thoughts on “random”? Are there other words, like “just” or “try”, we should reconsider?