Listen to this post
In the article Death by 1000 Cuts, I summarized the current state of software quality. I mentioned that we are all experiencing issues daily, and it’s wearing us down.
Technology Know-It-Alls are not pleasant company. Sure, it’s nice that they are a wealth of information, but they can stop with the nitpicking already. Knowing everything is impossible, and especially in the software industry. There are so many languages & frameworks that you could spend your entire life learning. In the end, they are tools, and tools are learned based on need.
I Know Everything
If you’ve worked in the software industry for any length of time, you have run into a person that acts like they know everything. Not only that, but they do seem like they know everything. In reality, they know when to say something about things they know and shut themselves up about things they don’t. It’s an art form, really. Acting like you know everything is hard work, and takes a lot of energy.
It’s not helpful when people act like this. Having the humility to know your limits, a willingness to voice them, and knowing how to say “I don’t know” are all great traits. It shows a willingness to learn, and it shows other people that it’s OK not to know everything. I’ll take someone great at finding answers over know-it-alls any day of the week.
Don’t Say Anything
The result of know-it-alls being in a room is a room full of dead air. When you say something, you’ll get an instant compiler run against you to parse and find any errors in your statements. If there are any errors, the know-it-alls will immediately throw a syntax error at you.
Allowing this know-it-all culture to creep into your daily activities creates an environment of fear. People with great ideas will keep their mouths shut for fear of the know-it-alls shooting down their statements because they had small syntax errors.
If you’re married, you know being right isn’t always the best outcome. Fighting with someone to prove them wrong is both childish and ridiculous. Looking at the facts to get a problem solved correctly is important, but it doesn’t need to be an adversarial situation.
Software engineers love solving problems, and the only thing better than solving problems is solving them as a team. Sure, it feels nice to take all the glory and be the one that solved the difficult problem, but do you know that your solution was the best? Oftentimes the problem you solved didn’t even need to be solved, and you could have sidestepped it by simplifying your architecture. Having another set of eyes on problems will lead to better architectural designs, and solving a problem together adds those extra eyeballs.
Being right about every technical detail of a tool won’t win anyone a prize. Telling people they are wrong about how a tool works won’t fix the person, nor will it solve any problems. Nitpicking will build resentment, and you will find that people won’t want to work with you.
Balancing It Out
Being correct is important when it matters. Making a mistake while deploying your products to production should be avoided at all costs. If you make a mistake, learn from it, find a way to eliminate the possibility of a mistake in the future, and move on with your life. We’re all human beings, and to err is human.
Suppose you’re programming tools where lives are on the line knowing everything about what you’re doing and why is important. Take the time to learn every detail about the software you’re building, and know everything you can about the tools you are using. If you’re not risking people’s lives, you can relax. Even when you know it all, keep it to yourself and correct people when serious consequences will arise if you don’t interject. It’s not an easy balancing act, but you’ll find that you’ll get to the other side of problems easier with less unhealthy conflict.
- Allow reasonable mistakes to fly by the radar.
- Help people realize that being perfect isn’t a job requirement.
- Chill out if you’re a know-it-all