I find taking criticism pretty painful. Does anyone have a good strategy for dealing with this?

Edit: I can see this is going to be voted down, but I'm not going to delete it as an exercise in "taking criticism" ;)

+1  A: 

I take criticism in my stride, so long as it's not a slagging.

Speaking of criticism, this is going to get voted down, you'd better get used to taking criticism :)

Omar Kooheji
+6  A: 

Growing a thick skin. As long as it is 'constructive criticism' you should try and learn from it.

This. I'm going to take something like "Don't do foo, because bar, and you really should get in the habit of doing baz instead because qux." a lot better than something more along the lines of "Well, THAT'S a stupid way to do that."
Adam Jaskiewicz
+22  A: 

Well, if you're in a good environment, work or otherwise, and you're being criticized, that's a good thing.

It shows that people still care, and want to help you improve.

It's when you mess up, and nobody cares, that's when it should become painful.

Lasse V. Karlsen
Amen. Criticism is what makes or breaks a developer's ability to learn and grow. Without it, you won't learn what you're doing wrong. Knowledge is power, and power without wisdom is dangerous. ;)
Abyss Knight
Criticism is a chance to hone your listening skills and practice humility.
+1  A: 

Assume the other person is trying to help you do better next time. It's only criticism if you take it that way.

Dan Goldstein
+4  A: 

I just came out of my first code review at a new job. Besides repeating "it's not about you, it's not about your ability to code, it's about how well you know the new system", I don't know what to tell you.

Paul Tomblin

I just ignore criticism and write off the critics as useless and all the criticism as groundless. Don't let it get to you - they are all wrong...

+2  A: 

I don't know, I never make mistakes.

That's not sufficient to never be criticised :)
Jon Skeet
I know, I am married too ;-P.
+2  A: 

Don't take it personally, it is just someone's opinion/view of your work. Try to figure out if what they are saying has something meaningful that you can learn from. Basically, it's just your ego that's hurt. So, don't completely tie your ego to your work. :)

+8  A: 

i take criticism to heart, because it usually means that i'm about to learn something:

  • sometimes i learn something about myself that i can use to improve myself
  • sometimes i learn something about the person giving the criticism

in the latter case, i can usually either learn to avoid the thing they were complaining about, or learn to avoid the complainer

Steven A. Lowe
+6  A: 

Every good programmer I've ever met is crappy compared to the programmer he will be in 2-5 years--if you don't improve at least a little in that amount of time, you probably aren't a very good programmer. I don't think anyone, even the best of us, have nothing left to learn.

I've looked back on code, concepts and discussions from the past and almost always found that I would have done it differently if I did it again now--even the stuff I've been proudest of.

Looking at it this way helps a lot.

However it's in our nature as programmers to get butt-hurt whenever someone else criticizes our stuff.

I just try to control my immediate reaction, then try to understand their point of view. Why did they feel I had done it wrong. What are their metrics.

You can then decide if you want to start taking their reasoning into consideration or not.

Bill K
+1  A: 

Being my own worst critic, I have no problem with criticism. What I do have problems with are compliments. I tend to think that the other person either doesn't see the (to me, painfully, blindingly obvious) flaws in the code we're reviewing, or that they do see the flaws in it and they're trying to "spare my feelings" or some such.

Sherm Pendley
+1  A: 

There is a lot of forms of criticism, but if it is ground on a solid reasoning, it is always welcome. Then it has 2 results: You learn something new (new point of view, more knowledge, etc) and also you learn to respect the person that criticezes you.

+1  A: 

After working on a project using psp/tsp where all of my strengths/weaknesses were exposed via a spreadsheet which tracked things like my task time (est vs actual), loc/hr and defect inject rate; and living through many design and code inspections; I welcome criticism. Facing your weaknesses can only make you stronger.

+3  A: 

How do I take criticism? Badly. I've improved over time, though - but it is hard work. In that spirit, here are some things that I have found that work.

I find that if I consciously dissociate "me" from "my code", or "my job", it makes it easier to handle criticism. A criticism of my work is not a criticism of me. Repeat that until you believe it. At the very least, it should help you survive until you're alone, and then you can punch the wall or kick your garbage can, or whatever.

Another thing that really helps - if you think the criticism is valid, then agree with the person, and collaborate with them to fix the problem, or come up with ideas about how to fix it. I have found that my anger goes away after I do that...because mentally I have switched to being on the "right" side of the argument.

In one specific case, i.e. a code review, criticism is meant to be "I wouldn't have done it that way, did you try this?" or "This is going to get you in trouble, try doing it this way instead". It may not sound that way due to the problems people have criticizing, but that is the intent. Again, try looking at the code - not your code - and consider what people don't like.

Incidentally, that gives a hint about how to criticise code - say "the code is wrong" instead of "your code is wrong".

Good luck.

Mark Krenitsky
+2  A: 

When it comes to online criticism, there are three ways I handle it, depending on my mood at the time. I should add that this is mostly applicable to "You're wrong (about a technical issue)" criticism rather than plain "You suck" criticism.

1) Respond in kind. Flame away.

Result: Both parties look ridiculous to observers. No winners, although both sides usually claim victory.

2) React with an extremely polite but absolutely undeniable response. Go into excruciating detail, cite specifications everywhere feasible, Leave no room for any doubt. Do all of this without ever making an ad hominem attack against your opponent. Leave any attacks on you in the material you quote, but don't respond to them. Make sure everything in your post is pristine: spelling, grammar, netiquette.

Result: You are widely hailed as the victor, and your opponent looks foolish and immature. Then you realise about a day later that it's a really mean thing to do.

3) Wait a day, post a response which is purely technical but doesn't actually try to make your opponent look bad. If it's really not important, don't post a reply at all, or just post a simple one saying that you'll have to agree to disagree.

Result: No-one looks particularly bad, although you probably look better than your opponent. You can come back to technical points at another time, and there's nothing on your conscience.

I usually manage to just about drag myself as far as the second response, but obviously the third is the best way in most situations.

EDIT: I've just realised that the above all assumes that I didn't deserve the criticism, which I most certainly do quite often. If your critic is right, then admit it and take any appropriate corrective action (if any is required).

Jon Skeet
+1  A: 

just keep repeating...

It's more important to be right in the future than it is to have been right in the past..

It's more important to be right in the future than it is to have been right in the past..

It's more important to be right in the future than it is to have been right in the past..

It's more important to be right in the future than it is to have been right in the past..

It's more important to be right in the future than it is to have been right in the past..


Charles Bretana
+5  A: 

Einstein used to talk about keeping a beginner's mind at all times.

That isn't easy.

But if you're open to input, actually going out and asking people to help you improve and trying to ignore the competition that most of us brainy guys are drawn towards, you can absorb criticism gracefully and improve rapidly.

Whereas, if you try to pretend that you're perfect and spend all of your energy denying your inadequacies, you will be paralyzed. And there will be suffering. :)

Brian MacKay
+1  A: 

Depends if I can respect the person doing the criticising.
If I can't then I'm probably in the same boat as you. But you got to listen and see if you can sort out the wheat from the chaff.
Good luck, it's a tough road.

+1  A: 

You know, maybe I'm weird, but not only do I not mind criticism (or being told/show that I'm wrong about something), but I really don't get people that do. I don't like being wrong and I want to be a good programmer, so if I say something that is wrong and you point it out, or if I code something and you give me constructive criticism and show me a better way to do it, you are doing me a favor. Why should that bother me?

People who say "I hate being wrong" and then get upset when you point out to them that they are wrong about something make me want to scream, "NO, you don't hate being wrong. You just hate having it POINTED OUT when you ARE wrong!!!"


take it, thank the person with a big smile. it will mess up his or her mind.

take some time to think about it. usually there's some truth to the criticism even if the person really hates your guts. then it's up to you to consider what action do you what to take.

the more you get em, the faster you grow, so that's why i always encourage them

+1  A: 

As an intern I find criticism to be an opportunity to learn. Usually this means I might be doing something wrong and someone else has a better way of doing things. If they take the time to explain to me why their way is better and we have a discussion about it, I don't take it personally. I've also had to review documentation and am encouraged to speak my mind if I don't agree with or have questions on how things are worded. This is also why I like doing peer reviews.


With a smile on my face.

+3  A: 

The most important point about criticism is: The other cares about you. If they didn't, they wouldn't care to invest the energy to talk to you.

I think my most important change was that a long time ago, I decided to openly admit any mistake I have made. I don't waste any time to explain them or find excuses. I just say: "Yes, you're right, that was a mistake." That takes a lot of heat out of any argument.

After that, I haven't wasted any of me precious energy and I can concentrate on the fix. If I have no idea how to fix it, well, gee, there is someone just in front of me who might be able to help: The person who found the mistake! So I ask. It's the most simple thing in the world ... or rather would be if we hadn't been trained so thoroughly to cover up.

But of course, sometimes, the other person is just too upset to talk. They just want to vent some steam and reason is the last thing on their mind. In this case, try this:

  1. Swallow your pride and stop trying to defend yourself. Just don't say anything and listen. Or say "Yes. I see. Okay." Take notes. Just don't take it personally. That will only distract you from a chance to become a better you.
  2. When the other has stopped, say "Thank you. Please give me some time to think about this. I will come back to you tomorrow." Remember this sentence. Just say it, no matter how you feel. Chances are that you can't think clearly anymore when this happens, so you must make this decision now.
  3. Walk away. Really. Walk away! Get some distance. Find a calm spot and take notes what you just heard. If the other person follows you, leave. If they threaten you, leave! Go home if you have to. No one can force you to take abuse.
  4. After you calmed down, check the notes and try to find a way to improve yourself.
  5. If you can't, think why not. Do you need help? Do you believe there to be reasons that the other person didn't take into account?
  6. For every point of critic, note down how you will handle it.
  7. The next morning, check your notes once more. Put on the hat of the critic and imagine someone coming to you and saying these things. Do they still look good? Or does it suddenly sound like whining? If so, try something else or accept that this is a weak spot of yours. If it's a weak spot, admit it. If you can, think of a way to improve this weakness and note that. No one can expect you to change in 24 hours but they can expect you to know how you want to improve.
  8. Go back to the person who criticized you and make an appointment to talk about your results. Don't rush it. You have the notes and you can always come back to them.
  9. During the talk, keep an eye on the tension. If reason is replaced with abuse again, stop. Say clearly that you feel the discussion is turning down. Don't allow it to deteriorate. If that doesn't work, get a third party involved.

Important: This only works if you take the criticism seriously. People will quickly discover when you're trying to dodge the actual work of changing yourself. But if you do, not only will you become better at whatever you're doing, you will also earn the respect of the people around you and the next criticism will be much easier for both sides.

If the situation doesn't improve, find a new job. It happened to me once and I was wasted after getting the sack but in retrospect, it was the right thing to happen. I just didn't fit into the world of my boss and staying would have just prolonged the suffering for both side.

Aaron Digulla

Theres two types. The good kind and the annoying kind. The good kind is said by anyone including ppl who you dislike and dislike you back. They have some truth to it. You should note it, think about it just for a few mins to make a decision of how you should tweak w/e your doing and move on.

The annoying kind is when someone says your doing it wrong, downvotes you for no reason and says dont re-ask your question edit the original. Those are not helpful and often make you explain yourself and are stupid. Dont explain yourself, its not important (AT ALL, i should say never explain). I try to forget these ASAP. One example is when i asked a bad question then ask a new DIFFERENT yet similar question and another guy complained. Its not a big deal to ask a question, my old question was terrible and actually two questions and this new one is more concise. thinking about it is something that waste your time so just ignore the guy and realize it isnt as big as a deal as you or he thinks. did i mention it is annoying? you'll know if its a bad criticism if you feel annoyed ;)