3 Negative Qualities Of Programmers (And How To Rise Above Them)

I’d like to be the best person I can be.

I’m certain you do, too. Deep down inside, we all do.

In my own lifelong quest of self-betterment – both as a software developer, and as a person – what’s often helped is when I become aware of some negative habit I didn’t realize I had before. Some kind of error in thinking, or trait I’d adopted into my personality, which isn’t helping me achieve my highest, best goals in life.

Because recognizing them is a bazinga good first step to changing them. Awareness, followed by new intention.

A few qualities I’ve recognized in myself, all worth changing, that seem to be common among programmers:

1) Dismissiveness

I’m evaluating an idea. Someone’s opinion, as they share it with me.

And I think: That’s stupid. Or: that could never work. Or: that’s just (equate it to something else I can easily dismiss).

Which is convenient, because if it’s stupid, etc., I don’t need to think about it any more. After all, I’ve got too much to think about already.

Of course, that’s a trap. Maybe it IS stupid. But I didn’t investigate enough to say one way or another.

I don’t have to accept it. But I don’t have to dismiss it either. I can just choose to have no opinion on it, for now.

I’m still working on this one. I catch myself dismissing something a dozen times a day, and probably don’t catch it even more.

Question for myself: What have I been dismissing?

2) Over-Precision

As engineers, we’re trained to think precisely.

That’s essential for civilization. We’d still be hurling sharp sticks at animals for our dinner, if humans weren’t capable of thinking precisely.

All technology in history was created by people who think like we do… from thinking with precision, with the engineering mindset.

All of it. ALL OF IT. Every last bit.

Be proud of that.


The precision of thinking needed to derive the backpropagation algorithm…

Or to keep track of registers in a virtual machine…

Or resolve a hairy merge conflict…

That precision isn’t always helpful in conversation with other humans. Or seducing that person you’re attracted to. Or cheering up your kid when their favorite toy just broke, and they’re so, so sad.

Or, oddly enough, even in a project meeting with other engineers, where you’re hashing things out on a whiteboard.

Because that’s one of the world-shaking secrets of psychology – and pay attention, this is the most important sentence you’ll read today:

Vagueness – the opposite of precision – lets people fill in the blanks, according to those details that matter to them… but which are not important for the end goal.

Deliberate vagueness is a tool for coming to agreement; for working together productively… in wonderful ways that, otherwise, could never happen.

There’s a time and place for exacting, uncompromising precision. And times and places where it’s not helpful at all.

The success that precise thinking has given me in software development, has sometimes led me to mis-apply it.

Question for myself: Where have I been over-precise in my thinking, or my communication?

3) Dumb Tribalism

By this, I mean devotion to something that isn’t worthy of your devotion.

Such as, a software package. My favorite framework is Foo. And its competitors, the Bar and Baz frameworks, are inferior because (insert some rationalization).

My mind is great at inventing reasons to back up the opinion I already have.

This sometimes comes from being overfamiliar with one of the options. For example: I used to be all gung-ho for Django. Because I knew it really well.

Then I started learning about Flask, and the great things it’s got going for it. That seemed to reduce my Django jingoism.

Tribalism ain’t all bad. If you’re on a team, and you’re working hard to support its success, that’s a positive form of tribalism. And when you’re devoted to your family – that’s the most positive form I know.

It’s just smart to direct this human tendency towards what really matters.

Question for myself: Where have my actions been unhelpfully tribal?

There are other negative qualities I’ve noticed in my thinking, that I could write about. Such as being overly literal, falsely equating different concepts (which warps my reasoning), et cetera. Many others.

But the ones I’ve mentioned above are all things I’ve observed as common in other programmers, as well as myself.

“Negative” isn’t a reason to self-judge. It doesn’t make us bad. It just is. Part of being human. And improving how we think, when we can – that’s also human.

Are any of my questions above helpful for you as well?

If you already know the basics of programming in Python… Writing simple scripts using functions, dictionaries, and lists…

And you are ready to learn the most important “next level” tools, tricks and powerful strategies used every day by the world’s top 1% Pythonistas…

The Powerful Python Newsletter is just for you. Like reader Charles Hayden puts it:

“I have seen a lot of books, articles, and newsletters over the years and yours is one of the best. Not just what you say about Python, but how to go about learning.”

Sign up here:

Leave a Reply

Your email address will not be published. Required fields are marked *