views: 1172
Programming and the Fear of Being Wrong
03-01-2022
The Programmer's Disease
Imposter syndrome, fear of failure and fear of ridicule are all common plagues of the human condition. Software developers are not specially cursed in this regard (though I believe that every programming course should at least mention imposter syndrome before sending its students out into the wild). However, the easiest and most insidious trap for a programmer to fall into is probably the Fear of Being Wrong.
Fear of Being Wrong means not voicing your thoughts during scrum, not commenting on a forum. Not contradicting a senior developer. Fear of being wrong stifles and silences, causing missed opportunities for learning and growth.
Of all the "little phobias", I believe that it is also the most difficult to overcome. Imposter syndrome eases with time and accomplishment. Fear of failure becomes laughable when half of the stuff you write doesn't compile on the first attempt anyway. Fear of ridicule doesn't stand up in the face of respectful coworkers and good company culture.
But Fear of Being Wrong, for me, has been a constant battle during my professional career.
Its roots are deep. Many of us -- the programmers of today -- were the geeks and nerds of yesterday. We got the grades, we got the scholarships, we got the accolades and the degrees. During our early years, we were used to being the smartest people in the room. Our self worth became tied up in that facade, and being wrong EVEN ONCE threatens that position.
For many of us, saying "I don't know" fills the mouth with sand. "I was wrong" is even worse. Yet, until we can admit when we don't understand something, we are stunted. Bluster and certainty don't cover up bad thinking or bad code. It doesn't make bugs disappear. Pretending to know exactly what you are doing at all times and ignoring people who say otherwise only guarantees that bad habits and bad thinking become ingrained.
Growing past the Fear of Being Wrong
The good news is that Fear of Being Wrong can be overcome with effort and introspection. It is as easy as asking a coworker for advice when you are stuck. Or, when someone asks you about a part of the codebase you aren't very familiar with, admitting that you don't know how it all works. It is harder when someone asks you about your own work and you must say that you forgot what something does (it was five years ago, OK?), or admit that you missed an obvious solution. But take it one step at a time. The sooner you are able to own your mistakes, the faster you can correct them. The more you acknowledge your own ignorance, the more room you leave for yourself to learn.
If you are worried that your colleagues will look down on you for being ignorant or admitting mistakes, don't be. Just trust me on this one. I have worked with many developers over the course of my own career, and I can promise you that the ones I respected most were not the blusterers or the chronically right. The most valuable coworkers were the ones who would tell me, "I'll get back to you" when they didn't know the right answer.
Because I am a nerd who loves lists, here is a short set of exercises you can try if you see yourself in this article.
- Go back and look at your old code. I guarantee you will find dumb mistakes and bad decisions.
- Mentor a new software developer, or teach a kid to code. Resist the urge to say something off the cuff if they ask you a question you're not sure about. Instead, say "I'll get back to you on that."
- Ask a coworker about something they're working on, especially if it's nowhere near your wheelhouse. Don't pretend to know more than you do. Say, "This may be a dumb question, but..."
- When you catch one of your own mistakes, write it down. Take notes. It's a good way to stay humble, and can be an invaluable resource for you in the future.
- Participate in discussions on sites like Stack Overflow! You can leave disclaimers like "as far as I know", if it makes you more comfortable.
Above all, never stop learning about your field. Read programming books. Question everything and everyone. Gaining experience and knowledge aren't guarantees that you will never be wrong again, but you will be less likely to be wrong in a flagrantly dumb way around people you respect. If you're still wrong, you're in a better position to have a discussion and arrive at the right answer.
Just remember -- being wrong isn't bad. It isn't a moral failing. It is simply making a mistake, usually out of ignorance. Embrace that and you will be a far better programmer than you could be otherwise.
If I can do it, then so can you.