Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I wanted to ask this question so that I can come back to it and have it serve as a constant reminder for me.

Throughout my life, I've had milestones where I've sat down and really evaluated myself.

Every time I've found something negative I've striven to put it right.

One of those negatives is pride or arrogance. Sadly the nature of programming leads to plenty of fuel to endlessly fill one's own ego.

Can you give me any words of wisdom that can serve as a reminder for me to "eat humble pie"?

I want to keep my arrogance in check, even if that arrogance is the weight of a grain of sand.

share|improve this question
3  
No matter what you do, how hard you try, how well you excel... there is always going to be someone better than you. out of 6-7 Billion people someone will almost always best you. Stive to be better... strive to be in the top percentile... but always realize that you won't ever be #1. –  WernerCD Dec 21 '10 at 14:56
16  
@WernerCD - My question is, who the hell is number one? Someone has to be the best programmer alive... probably me but who knows. –  ChaosPandion Dec 21 '10 at 17:24
1  
@Scott, @WernerCD - I hope my sarcasm was not lost to you folks. –  ChaosPandion Dec 21 '10 at 20:09
6  
I thought it was clear that Jon Skeet is the best programmer alive or dead? Now I'm confused... –  deceze Dec 22 '10 at 2:37
2  
Is it arrogance if I really am that good? –  dietbuddha Dec 22 '10 at 5:55
show 9 more comments

closed as off topic by Yannis Rizos Mar 28 '12 at 21:06

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

23 Answers

Arrogance is just a common symptom. The root cause is personal and bound to your history.

Arrogance usually means you are unsafe. You need your daily shoot of pride to feel good. Many people criticize other people because it's a way of saying "I'm better than them, I'm valuable". Getting reputation points here contribute to your pride. You are seeking them.

But like anyone on this planet, you suck. A lot. Probably not in programming, but you certainly suck at many things. Maybe you hide yourself to avoid being exposed to those things by cutting all social interactions and staying at home with your computer.

How to become less arrogant? This is simple. By exposing you to much more brilliant people than you, in others fields, as frequently as possible. The technique is called desensitization.

It will hurt. A lot... but you will eventually learn that everybody suck at something. And you will understand your value in this world. And will use it with humility.

share|improve this answer
2  
Excellent answer –  Arcturus Dec 21 '10 at 10:20
1  
+1: Basic cure is to learn that there are people who are unarguably better than you for something important. In my experiences gurus are humble for exactly this reason. –  user1249 Dec 21 '10 at 10:25
7  
+100. This is wisdom you can take to the bank. "Arrogance usually means you are unsafe" is so very true. I didn't start to learn it until I was in my 40s, when my business failed and my marriage nearly did. –  Bob Murphy Dec 21 '10 at 16:51
12  
To quote Tyler Durden in Fight Club: "You are not special. You are not a beautiful or unique snowflake. You're the same decaying organic matter as everything else." There is always someone who knows more, can do things better/faster than you; to think otherwise is silly and shows lack of maturity or lack of exposure to the world at large. –  Will Dec 22 '10 at 14:40
show 3 more comments

In my experience, truly great programmers are humble and primarily interested in learning from others, not boosting their own self-esteem. Programmers with huge egos usually turns out to be mediocre developers at best. This helps put things into perspective. At least for me.

share|improve this answer
2  
@Martin: Chad Fowler wrote about that in his great book, The Passionate Programmer. Here is an extract of what you mention: media.pragprog.com/titles/cfcar2/worst.pdf –  user2567 Dec 21 '10 at 11:58
2  
@jiceo: Stallman doesn't because there isn't a GPL recipe for it. Torvalds doesn't because he hasn't gotten round to making a C program to make it for him. –  Alan Pearce Dec 21 '10 at 15:13
2  
@Thorbjørn Ravn Andersen: what a nice way to rephrase "ego" :P –  kizzx2 Dec 22 '10 at 16:33
2  
@kiZzx2, there is a vast difference from promoting yourself and having a strong opinion. –  user1249 Dec 22 '10 at 22:08
show 3 more comments

Read through some old code you wrote more than 6 months ago. If you've been in programming long enough (and stay at one place long enough), you will have the experience of saying to yourself, "Who wrote this crap...Oh, I did."

share|improve this answer
4  
Couldn't begin to count the number of times I've done just that. Funny thing is, I know I am a decent, if not very good, programmer - the problem is that I always find myself strapped for time and wind up cutting corners. Recognizing that I still do that, even when I know I shouldn't, is definitely something to keep the ego in check. –  Will Dec 22 '10 at 14:29
show 4 more comments

If you really want to find humility, forget about competition. It's the essence of pride: "I want to be better than you." That's a part of human nature, and you've really gotta work on consciously recognizing it and eliminating it from your thought patterns and your actions. Instead, learn to recognize the strengths of others, especially those you might feel an urge to compete against, such as coworkers, and try to value them for the contributions they can bring to the team.

Turn your competitive instincts inwards, instead. Replace "I want to be better than you" with "I want to be better than I was yesterday." Try to be as brutally honest as you can in your assessment of how you're doing at that, and you'll find humility in no time flat. ;)

share|improve this answer
1  
+1 Competition is evil, if only this could be reflected more universally. –  Orbling Dec 22 '10 at 14:12
1  
@Orbling: amen to that. It should not be about "I want to be better than everyone else", but rather, "I want to make this better for everyone else." I think that consideration of others, even when it comes to writing code, makes you a better programmer, not just a better person. Make your code a contribution to society and you will garner more respect than winning any programming "competition." –  Will Dec 22 '10 at 14:32
add comment

Arrogance isn't self-esteem; it's actually a subconscious cover for its opposite. My preferred cure is learning. You won't be arrogant if you realize that there's always more to learn and continue to seek out new things to learn. Doing that builds real self-esteem.

share|improve this answer
add comment

Keep reading stacks it will keep you humble.

share|improve this answer
add comment

Ego != Arrogance

While I despise working with egotists, I can't deny that a certain amount of "practical arrogance" is necessary to being a great hacker (a great anything, really).

Ego is about image -- trying to puff up how you'll look to others. It's usually a sign of a fragile sense of identity and/or a fear of failure. An ego-ridden coder brags, name-drops, and tries to bring the focus on his/her accomplishments instead of others'. He/she tends to try to hide mistakes, and acts threatened in the face of someone else being right.

Arrogance is the assumption that you can accomplish things, even terribly difficult things, sometimes in the absence of any actual evidence to support that assumption. An arrogant coder isn't particularly attached to being right (because he/she is so sure he/she can do great things that he/she isn't terribly invested in "looking good"), and readily accepts others' great ideas. He/she readily asks questions, and tackles hard problems, without fretting about whether he/she is doing it right.

Ego and Arrogance are antithetical to one another. You don't feel the need to bolster your image if you are already sure you are awesome. Arrogance, while occasionally annoying to the less-arrogant, is a pretty practical viewpoint if you think about it. If I were unsure of myself, I'd spend more time second-guessing, and less time doing; I'd be less likely to take on difficult projects; I'd be more likely to try to prove myself by getting my own suggestions accepted even when someone else's is superior. Arrogance is a great antidote to ego.

For a better-worded explanation than I could give, check out ESR's blog post "Ego is for little people"

share|improve this answer
1  
+1 I agree, arrogance is a practical aspect of the trade, same with doctors. It is the superiority complexes and the condescension that is abhorrent. –  Orbling Dec 22 '10 at 14:13
add comment

Find something bigger than yourself.

It is usually not all that helpful to compare yourself to other people for that task. Sure, there are programmers who are smarter than you (Turing Award winners, for example). There are people who are more benevolent than you (Mother Teresa). There are people who are better business people than you, better athletes than you, better musicians than you, and better artists than you. Comparing yourself to them, though, is a recipe for ending up saying I should be as good as that person. That's not going to make you humble, it's going to make you want to cover up perceived inadequacies in some way. One of those ways might be comparing yourself to programmers who are worse than you on your team, people who seem meaner than you, or someone who just can't catch a break. That in turn will make you arrogant all over again.

Instead compare yourself to something along the lines of:

  • The higher power(s) of your religion, if you hold to one
  • The universe, which is amazingly huge
  • The best conception you can come up with of a good which approaches or is infinite and eternal

The philosophical definition of true humility is honestly assessing your skills and then knowing that something or Someone out there is much greater than anything your skills could ever reach.

share|improve this answer
show 1 more comment

While this is taken from some great lessons that I took to heart, really:

Lesson 1. Model the Best.

If you want to be great at something, learn from the best. Find the best of the best. When I studied martial arts, I studied Bill Superfoot Wallace. He set a bar I never would have imagined possible. That’s what heroes do. They inspire and they prove a path. I learn from everyone around me. I find their super skill, and they are usually more than happy to share what they know.

Lesson 2. Be Your Best.

You can’t always be THE best, but you can always be YOUR best. You can’t ask yourself for more than that. Because I always modeled from the best, I always felt like I missed the mark. I had to learn 3 things: 1) When you’re just starting out, you’re the sapling. The might oak took time. 2) Enjoy the journey. 3) Your best is not the same as somebody else’s. I remember John Wooden saying in an interview once that the key to his peace of mind was knowing that he gave his best. I think the key to giving your best, is knowing where you have your best to give, and playing to your strengths. The thing that always keeps me going here is I remember that giving up is easy. Forgiving yourself is not. I don’t want to be on the rocking chair thinking, what if I gave just a little more.

...

Lesson 7. Version Your Perfection. When you try to be your best and you model from excellence, it can be tough to set the right bar at a given point in time. There’s never enough time and you can never be too good. Surprisingly, I didn’t learn one of my most important lessons until I joined Microsoft. version your perfection. Focus on “good enough for now” and improve with each release. Getting incrementally better over time is better than never being good enough, or never being ready. I get from idea to done quickly, and then I improve. Feedback is your friend. It’s a learning loop. I’d rather get the learnings and results from 20 dry runs, than one perfect run, that falls short. Good enough for today, means I’ll be back in the batters box, swinging better tomorrow. It’s this very lesson that let me have 10 life lessons for now, while I can refine again later, and this is a key concept behind my You 2.0 guide.

Source: My Top 10 Lessons in Life

share|improve this answer
show 2 more comments

Day to day with your coleagues, look to learn or teach rather than show off.

If you find something you're unfamiliar with, try to be enthusiastic about finding something new, rather than scornful due to your lack of knowledge.

Even those who you may consider below you in skill will occasionally come up with some really awesome solution to a problem. You just need to aim for "wow that's really cool, how'd you do that?" instead of "pfft I coulda done that if I'd thought of it..."

share|improve this answer
add comment

How about if you give everybody a break and simply stop thinking about yourself so much?

share|improve this answer
show 1 more comment

Start reading some blogs by smarter people than you.

Reading Eric Lippert certainly keeps me in my place. Especially when he says things like "those guys are far smarter than me".

share|improve this answer
show 1 more comment

The word pride actually has two meanings. One is being too proud to do something, the other means being proud of what you have done.
In the end, they do kind of mean the same, because the first means to be too proud of yourself.

A big problem is, that people take everything personally, because they are too concerned with themselves. This is one reason, why critisism is generally not well accepted, even if it an act of pure honesty.

There is nothing wrong about being proud of things you accomplished. But being proud of yourself can easily become one. Your self is not really an accomplishment. "All" you can achieve in that "field" is having tried to do things right and having tried to get better at that. And to "just" be a good person. You won't neccessarily always get credit for it, but it is something, you can definitely be proud of.

I am proud about some things I did, satisfied with some, sorry for some and some I am ashamed of. But apart from a few exceptions, I use none of these to measure my personal value. I use quite a few of them to measure my competence (or incompetence), which is at best losely coupled with my self-esteem.

When it comes to professional conflicts, it is important to have a clear picture of ones skills and experience. Not about how you'd like to be or would like others to think of you. It is important to try seeing your competence and that of your peers the way they are. Being overly humble risks your competence being unused, which can effectly mean a negative impact on the final result. Being overly confident goes just as wrong, but I suppose that's no news.

The ego is a weird thing. It is a picture of ourself, built up for us and others to believe in, to achieve higher social status. This is a very instinctive process, that can do a lot of damage. It is a simple drive evolution has given us (that appearently prooved fit). There is nothing wrong in satisfying such "lowly" needs, i.e. pleasing your ego, having a good meal (or doing the kind of thing that happens rarely to programmers :D).
What you must not do, is letting such drives guide your decision against your conscience and the best of your knowledge. You should not satisfy your need for social recognition at the cost of others or the community in question. But you shouldn't feel bad for longing for it or for accepting it, when you deserve it.

What I am trying to say is, I don't think you should try being a coding monk. The idea is nice, but I don't think it can work, especially in a world as ours.
Thrive for excellence and superiority (over yourself and even peers and mentors), but not by attributing less value to the work of others, but by becoming better youself. Understand people in your entourage as a valuable source of knowledge and as a fine measure to reflect upon your own personal progress. The more people you truly respect, the easier it is to get feedback that you can rely on.

And don't forget, that above all, we are human beings. Our life is short, our knowledge limited. Don't take things too serious.

share|improve this answer
add comment

I am not sure how much of a counterbalance it is to arrogance, but I find in programming I am always having to learn new things. I see myself as more of a perpetual student always asking others questions and trying to overcome my ignorance of various subjects.

Also as a side note, letting other programmers see your code can be a vary humbling experience. If you listen and take an objective view points instead of being hyper defensive, you will see your errors and flaws, and more importantly learn how to over come them.

share|improve this answer
add comment

In my experience some programmers tend to be selfish (usually the arrogant ones). At the end selfish ones create a lot of problems, usual situation is: when everything is OK, they say "Yes I worked hard" and when something is wrong they say: "It is not my problem its yours". They are "unpopular" and you have to remember that you are working with you team 8-10 hours a day and that you may run into a problem and the first stop is your team member.

share|improve this answer
add comment

Unless you write perfect code, every day, you should already have a constant reminder not to be arrogant. Bugs trump ego.

share|improve this answer
add comment

Humility, they say, is like Zen. If you think you have it, you don't. Wanting and striving to be humble is where you have to stay. Once you swagger around saying how humble you are - you aren't.

A practice that serves me well is 5 whys. When someone in my life does something I see as wrong, asking why 5 times keeps me from feeling superior to them (as I would if said they make mistakes and I judge them) and also leads to improvements in whatever part of the world we share.

share|improve this answer
add comment

I agree with justkit's solution, Find something bigger than yourself, but not on the implementation.

My suggestion is: try to debug Perl.

share|improve this answer
3  
The question is how to be humble, not how to cry yourself to death. –  Trevoke Dec 21 '10 at 20:43
add comment

Expose yourself to things you don't grasp at the instant.
Don't ignore things as "that's simple to learn". Once you try you often figure it's not.
Watch people doing lowly, underappreciated jobs.

share|improve this answer
add comment

TDD some code / project. Open-source it. Ask people to comment on your tests.

share|improve this answer
show 2 more comments

If I'm really any good, I'll keep improving. If that happens, my future self will look back and see my present flaws. If I am arrogant now, I will look back and call myself a fool. If you think about it, I'm my own best defence against conceit.

share|improve this answer
add comment

I do not know if you know "The Ten Commandments of Egoless Programming" at http://www.codinghorror.com/blog/2006/05/the-ten-commandments-of-egoless-programming.html ?

While ego != arrogance I think a few apply to arrogance as well: - No matter how much "karate" you know, someone else will always know more. Such an individual can teach you some new moves if you ask. Seek and accept input from others, especially when you think it's not needed.

  • Treat people who know less than you with respect, deference, and patience. Nontechnical people who deal with developers on a regular basis almost universally hold the opinion that we are prima donnas at best and crybabies at worst. Don't reinforce this stereotype with anger and impatience.

  • Fight for what you believe, but gracefully accept defeat. Understand that sometimes your ideas will be overruled. Even if you do turn out to be right, don't take revenge or say, "I told you so" more than a few times at most, and don't make your dearly departed idea a martyr or rallying cry.

  • Critique code instead of people – be kind to the coder, not to the code. As much as possible, make all of your comments positive and oriented to improving the code. Relate comments to local standards, program specs, increased performance, etc.

share|improve this answer
add comment

All code is disposable. Don't get attached. That's the negative, but if you want to put it right, another way to say it is that every piece of code has a life. You create it, its life has a purpose, and then--well, almost always--its life ends. It's life may be long and inspire others or it its life may be brutally short and simply add to your personal experience. Either way, accept it.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.