For the first 10 years of your computer programming career, a feeling of profound disbelief is common. Disbelief that your code is not working. On some level you realize that computers don't make mistakes, but you are positive that your code should work.
"It was working a second ago and now it's not. I didn't change anything. It must be a problem with the computer or the internet or global weather patterns. Maybe a warped floor tile."
Four hours pass, filled with internet searches, wild theories, and following cryptic comments in forums by people who sound like they had the same problem.
And then it happens.
"Ooooooohhhh, I forgot to put the variable back to
false after I tested this other thing that I thought was unrelated. God damnit."
I cannot stress enough how weird it is to have your certainty in your perception be undermined so completely, so often, by a cold, uncompromising, always-right, I-don't-care-about-your-feelings computer.
It shows you – perhaps better than anything else – how often we are wrong and at the same time absolutely certain we are right.
In normal life, forgetting to type a semicolon or confusing two similar words that are both correctly spelled doesn't cost you much, if anything. In programming, these 'mistakes' can cost you hours or days of mental anguish as you try to push forward on a project but you can't because this absolutely has to be fixed first.
Ten years ago I thought these little typo mistakes would be a thing of the past. And it's true that now I know how to put an arsenal of tools in place to help catch most of them. They happen less often, but they still happen. Because I'm still human.
And I still have some hubris left whenever things break in mysterious or not immediately obvious ways. My brain immediately blames things that I'm not responsible for, even though on some level I know it's almost certainly my fault.
At first I thought this pattern was unique to me. That I'm a bad, over-confident programmer. But I've heard these stories again and again. During my time at a software consultancy, every day there would be maddening accounts of how fighting with machines had sapped so much time and sanity from coworkers. They all ended the same: We were wrong and the computer was right.
Granted, this is a symptom of the complexity of the systems we were working on and the fact that our brains can not model them perfectly. What's important to note is the feeling we all had over and over again, despite our experience, that there must be something wrong with the system, and not our assumptions about it.
It's Happening to You All the Time
If this was confined to the domain of computer programming, I wouldn't bother writing about it. But it happens to you everywhere, all the time. Programming is just the place that it gets corrected and where your certainty does not, cannot, effect the outcome.
How you feel about the program you're working on is irrelevant. But the certainty reflex is immediate and unavoidable. After a while, you start to realize how often we must feel our way out of everyday problems, because your mind expects it to work in programming as well.
I recommend everyone try some coding exercises for this reason, even if you have no interest in programming itself.
If you want to viscerally experience how deep the biases of your perception go, there's nothing like it.
Even when following a tutorial with three lines of code, and all you have to do is type it out the exact way that it is in the book, this feeling will likely come up. The code won't work. You'll feel certain you did it correctly. You'll be convinced that the author of the tutorial made a mistake, even though she is a 30 year veteran of programming and this is literally your first attempt. Your brain will do anything it can to avoid blaming itself.
But ultimately, if you keep at it, you'll see that you were wrong, and the computer was right.
In Life There Is No Computer
The problem with this insight is that outside of working with computers, we are rarely forced to see that our feelings and assumptions are objectively and completely wrong.
So how can this revelation make our lives better?
I recommend applying a high level of skepticism to your feelings about what is happening to you, and what other people are thinking or feeling. Did you really see that? Did it really happen that way? Are you sure that person meant what you think they meant?
For me, bringing this level of humility and doubt into my daily life has been a huge improvement. Mistakes get fixed more quickly. I apologize more readily. I give people the benefit of the doubt. I state what I "know" to be true as simply and carefully as I can. I try to separate out facts from the feelings of anger and frustration I'm being bombarded with. Communication clarifies. Things get better.
It's the story of technology itself. Humans progressed slowly until science gave us a way to correct for our own internal biases. Then the exponential curves began.
The experience of forcing yourself to admit you were wrong is present in other professions. Medicine, biology, law. But unless you've gone up against a computer and have seen exactly how wrong you were again and again, I believe some level of hubris and rationalization about your own perceptions can still squeak through. Even after decades of being beaten down by a computer, I still get it myself.
If enough of us bring this level of doubt to our everyday lives, perhaps it will give us some form of herd immunity to pathogens like conspiracy theories, propaganda, and tribalism. Assume you are wrong until you are proven right, and maybe we can fix this broken world that was built on certainty.