Ask HN: How do you not take criticism of your work personally?

667 points by molly0 ↗ HN
I’ve come to realize that I often take constructive criticisms personally. Everything from an unintentionally snarky comment in a PR I’ve made to someone highlight a mistake I’ve made that I probably couldn’t have known about.

I see this as one of my major flaws and try hard to mask how I feel. But I just hope to learn to stop feeling bad for honest mistakes.

648 comments

[ 0.24 ms ] story [ 409 ms ] thread
(comment deleted)
Increase your life experiences over coming adversity and also releasing greater volumes of work with various numerical measures. This won’t stop other people from being stupid, but it will increase your tolerance for it.
Kudos on the realisation and desire to improve. There are a couple of tricks you can use, especially when it’s asynchronous textual communication:

Assume positive intentions from the other person. Imagine them as having written with a genuine smile on their faces. Don’t think of it as them versus you, but you and them together against the problem. That defaults ambiguity to the more pleasant side and allows you to reply in a kind manner in turn. In general you get out of a conversation what you put into it, so add kindness.

That doesn’t mean you have to take abuse. But even if someone is unambiguously disrespectful (e.g. name calling) you can generally be respectful when pointing that out or simply not respond. Instead of wasting brain cycles getting more angry as you write the perfect zinger, let it go and you’ll forget about it soon enough. Focus on feeling better, never on making the other person feel worse.

If you do have to reply, don’t do so immediately. Let it marinate and respond when your initial feeling has subsided. That allows you to get some emotional distance between yourself and your work, thus seeing (and fixing) the problem in the thing not yourself. Waiting has the secondary effect that another person may reply in the interim, shifting the burden away.

When you feel bad, stop to think. Observe your own reaction and calmly try to realise why you’re feeling that way and what’s your goal. The introspection alone can make you see that the situation is unimportant and thus taking it personally is disproportionate.

The first few times might be hard but eventually it becomes second nature as you adapt and find the approach that works best for you.

Thank you for such a thoughtful answer! I’ll definitely see the point of trying to always assume good intentions, making it my default view should be my main goal.
(comment deleted)
Stopping myself from replying immediately has saved my bacon more than a few times.
Another good approach: Write down that email/ message in a text editor but just leave it there for a day.

Often, I'd realize that I don't want to send it at all. The emotion was processed and now it's fine.

Sometimes, there is a valid point (e.g. because someone was rude in tone) and I'd just give that as feedback in a non-violent manner.

I do this with Twitter/Reddit comments and occasionally HN. 99/100 I write the comment and then close the tab. Writing helps me process my emotions and then I can leave it "unresolved".

Most of the time if someone is being intentionally rude on the internet, they're also being a troll. Don't feed the animals!

This is my go to method. Write/vent it down somewhere(privately) and just forget about it(you usually feels much better after write it down anyway) I often found that the things in my head that I got so worked up a week ago is just mostly my made up thought.
If you must, write the response then delete it. I believe that was an old Lincoln trick. He wrote mean response letters to people and then put them in his desk draw and never sent them.
> That doesn’t mean you have to take abuse. But even if someone is unambiguously disrespectful (e.g. name calling) you can generally be respectful when pointing that out or simply not respond.

Simply not responding leads to this person bullying you and/or the entire team eventually. Unless this happens really once, which in my experience now is not the case. Some people are just bullies, not the type they come and hit you in your face, but do snappy comments, or shaming you, etc., and they should not be allowed to continue with their behavior. If your manager doesn't do anything about it, you have to do something about it. It takes bad experience to realize that, but once you understand "the game", you will never let this happen again. Just learn to distinguish between personal attack AND "PR comment" on your code, though.

I think this is a very good answer and trying a similar approach and similar methods has helped me a lot in my life. Few years ago I was very easy to get angry over work and code (especially other peoples code!) and I could stay in this state for several hours. I would also often be not very nice when responding to PR comments.

Also wanted to specifically comment on

> When you feel bad, stop to think. Observe your own reaction and calmly try to realise why you’re feeling that way and what’s your goal. The introspection alone can make you see [...]

That sounds very close to mindfulness meditation - or any kind of meditation really. In my opinion that is also a great way yo get better understanding of oneself and it can help improve quality of life overall a lot.

>f you do have to reply, don’t do so immediately. Let it marinate and respond when your initial feeling has subsided. That allows you to get some emotional distance between yourself and your work, thus seeing (and fixing) the problem in the thing not yourself. Waiting has the secondary effect that another person may reply in the interim, shifting the burden away.

>When you feel bad, stop to think. Observe your own reaction and calmly try to realise why you’re feeling that way and what’s your goal. The introspection alone can make you see that the situation is unimportant and thus taking it personally is disproportionate.

I think those two are the core of the good advice. I'm also quite bad at not getting emotional by criticism and this is what I usually do too.

I would add that it's better to throw away the idea that "after some training, eventually you won't react badly to criticism" is something you'll achieve. Some people (like me) didn't really stop reacting badly to criticism, but just found a system/coping mechanism to channel that emotional reaction in a healthy way.

Another practical advice is to write down the criticism you got when you got it. Even if you got the criticism over text, the practice of writing (summarizing) the criticism received when you're under your emotional reaction will slow down your thought-process (you write slower than you think) and you'll also have material (something you wrote) later when you're more calm. Re-reading the criticism later from the person that gave it to you, might stir the negative emotions again and start a vicious cycle, so something written by you is a good intermediate to stop that, and detach the message from the person.

Wise and well worded response here.

Only addition that I might make is that if the reviewer has taken the time to deeply understand your problem space and reply, they have given their time and energy and in a very real sense that is a gift. (Depending on their motivation of course - maybe they do it to lord it over others... but that is not your problem - it's their problem), I try to be thankful and this for me also contributes to the sense of togetherness in a 'us vs the problem' sense.

> Assume positive intentions from the other person.

This works well in professional settings, but falls apart in certain online communities. How do you deal with people that don't have positive intentions, but actually have the precise opposite intentions, i.e. they want to attribute any perceived problem with your work as it meaning you are a bad programmer. Not taking that personally is far tougher.

Short answer, you don’t.

If folks are not providing constructive feedback there’s no reason to pay any attention to what they’re saying.

Sometimes this makes it easier to deal with them. Do I respect this person's opinions? No. Is there any value in what they've said? Also no. So it's just another piece of spam, garbage, or trolling that we all wade through regularly with the delete key.

(The downside of internet fame to anyone is that you will attract far, far more of these people, regardless of what you do.)

> The downside of internet fame to anyone is that you will attract far, far more of these people, regardless of what you do.

Yeah... I don't consider myself to have "internet fame" but I suppose I'm well known enough in certain large communities that I've managed to attract these people. I've ended up leaving the communities where these people are active, but I have seen evidence that they continue to spout lies about me there. I often wonder if people just take what they say at face value. The urge is to stay in those communities and correct the record at every opportunity to defend my reputation, but that takes a huge amount of effort and sanity to deal with. Is the advice in these situations to simply ignore and forget?

It seems to me that there are two cases here.

In the first case, the community is healthy. In that case, someone spouting lies about someone who isn't even there anymore is going to look rather odd, especially if you had a history and a track record there. It has a good chance of not getting much traction, and it might get some pushback from the community. In this case you have a fair chance of being able to successfully leave your reputation in the community's hands.

In the second case, the community is toxic. The lies are believed, and even amplified by others. Your reputation there is toast. You could go back and fight for your reputation, but if you did, you'd be likely to lose, and the attempt would eat up your time and emotional stability.

In either case, just walking away and ignoring it is about as good a strategy as you can find.

Note well: I am a random nobody on the net. I don't have a reputation online, except under pseudonyms, so I am talking about what I do not actually know. (Yes, I am aware of one person online who defamed my real-life identity. They were obscure enough, and their rant was obviously unhinged enough, that I felt no actual harm from just ignoring it.)

What you say makes sense and matches what my own thoughts around this subject have been. It definitely helps to hear it reaffirmed by others, so thank you.
> i.e. they want to attribute any perceived problem with your work as it meaning you are a bad programmer. Not taking that personally is far tougher.

I know enough that I can tell if it's preference (say, linting style) or misguided (for example there's some wrong advice floating around that multiple returns are inherently bad) or something I actually missed, and in that last case usually how much of an issue it actually is and whether it's a new topic to learn or something I forgot or something I deliberately didn't bother with.

> This works well in professional settings, but falls apart in certain online communities.

If you’re part of an online community where bad intentions are the norm, I’d recommend moving on to another. Why spend your time with a group that frequently makes you feel bad on purpose?

> How do you deal with people that don't have positive intentions, but actually have the precise opposite intentions

You move on to the third paragraph. Either ignore it (that can be tough, but the sooner you let it go and continue with your day the easier it becomes) or respectfully point out the problem. Try to have them not take it personally lest they become defensive and double down. The goal is deescalation. Speak specifically to the content of their message instead of them as a person. Use a variation of assuming good intentions: assume they are normally a good and reasonable person who is having a bad day and lashed out once. Empathise. Give them an out to apologise for their behaviour and they often will.

When that doesn’t work, reread your reply. Was it respectful and imbued with good intentions? Is it clear the goal was to improve the discourse? If not, learn from it and try again in another situation. But if you feel you did the best you could and the other party is being intransigent, let it go. Feel good about your effort. Even if you were unsuccessful with that particular individual, other people reading the exchange may take something positive out of it.

Be sure to never reply in anger. That only generates more conflict and ruins your day further. There’s no point to that.

> If you’re part of an online community where bad intentions are the norm, I’d recommend moving on to another. Why spend your time with a group that frequently makes you feel bad on purpose?

Indeed, that's precisely what I ended up doing after what has been ~3 years of trying to make the community better.

What's somewhat interesting is that it seems the community in question went downhill as soon as the pandemic started, the underlying issue was a lack of serious moderation and an unwillingness of the powers that be to introduce it and while that was okay for many years, once a critical mass of people with bad intentions arrived the environment just became toxic because they were largely unchecked.

Right; and in communities where bad intentions are not the norm, usually there's some sort of moderation/escalation path/group of people you can go to for a second opinion, to ask "am I misreading this, or is this person being unnecessarily combative/abusive/whatever?". Those people can then look at it from a neutral point of view and tell the other person "hey, knock it off/tone it down a bit/whatever", which is usually all you need if it is a "just having a bad day" scenario. Or if there's a developing pattern of bad behaviour they can take further measures.
“you are a bad programmer”

There it is: the false dichotomy of “good” vs “bad” programmers.

No, programmers exist on a multidimensional spectrum and performance is contextual.

This is a very good response.

I would also add: consider the counterfactual where you didn't even make that work. Surely making a honestly flawed work beats the heck out of not even accomplishing that work after all.

Lots of other works are flawed, in various areas of human activity. Yes, it sucks when it happens but the only way we as individuals or as a species move forward is by concluding tasks that are not critically flawed - they don't need to be perfect.

> If you do have to reply, don’t do so immediately.

I have a cantrip these days: "I'm going to take a minute and process that."

It can mean a lot of things, under the hood, and I've had to repeat it a few times in some conversations, but overall, tremendously successful statement.

For me, I put my mistakes in perspective.

Did anyone die?

No? Then on the scale of important consequences the mistake was statistically inconsequential.

My day is ok.

This is rational, I wish I could just do this but my ego is in the way and I don’t like being wrong.
It’s less rational and more the result of work experience where the worst thing that could happen was someone dies.

In that context, what-I-like doesn’t matter.

One thing to keep in mind is this:

Wise people are often wrong.

Smart people make dumb mistakes all the time.

Diligent workers still don't get to approach every single problem with meticulous attention to detail.

Rational, reasonable people nonetheless inevitably hold some inconsistent beliefs.

... and so on.

You can be wrong without being bad.

It can be hard to remember this at an emotional level, especially if you have a history of being belittled for making mistakes, or you feel like you're not taken seriously enough. But it's true! Remind yourself of it. :)

This is a double edge sword because this perspective makes me not try hard at my job or take it less seriously. Especially when my boss is griping at me about some mundane task or detail.
(comment deleted)
I think 99% of work particularly around development of commercial software is largely irrelevant on the larger scale. I fulfill the responsibilities of my job but I don't take it particularly seriously - life is way too short to be concerned about such inconsequential things like yet another CRUD front end dashboard.
Is the quality of your work a life or death matter? If not, don't take it seriously. Even if you were perfect, it doesn't matter, because nearly all work depends on other work you don't control.
I think the thing you have to do is look around and figure out how seriously your bosses & colleagues take their jobs. Caring more than everybody else leads to extreme frustration, and caring less leads to eventual dismissal.
Imagine yourself giving someone else constructive criticism. Now how you would feel if that person got upset/defensive/snarky. Keep that in mind next time you receive a constructive criticism and ask yourself "Is this something I would have done exactly the way this person did and is it fair" ? If the answer is Yes, then don't be snarky.
Are you a salaried / wage-earning employee?

If so, you may find it helpful to remember that the code you are working on does not belong to you, it belongs to the company/shareholders, and your job is to make it do what they want, more or less how they want.

That doesn't mean you have to do anything that is dumb, or not in the best interests of the company, but if someone asks you to do something that is dumb or not in the bests interests of the company, you may have to explain (very clearly, and often repeatedly) why it is not in the best interests of the company, and in doing so you may find that you had imperfect information about all of the relevant stakeholders and requirements.

Failure to remember this may result in being reminded the hard way, by being terminated / laid off, managed out.

Conversely, if you have great ideas and want to control everything, feel free to start your _own_ company, find your own clients, etc.

Never forget it's just some person's opinion. You can accept or reject it.

I used to get a lot of negative feedback from my boss, every week it was something else. Turns out he was going through a bad period. I switched bosses and everything was fine. It sucks when it's your boss, but it's still only a personal opinion of one person.

Then you have to learn not making the same mistake again. Either you take it personally or not, the mistake is still made by you. You can't get rid of your own responsibility.
Ask yourself calmly , are the criticisms fair? Can you learn and improve from it? if it is yes, then just take it knowing that they are just helping you to improve. Equally important, check what is the intention of the criticisms ? is it done in public? does he/she critisize in a way that insult you when he/she has better ways to say it? If it is intended to put you down, you should fight back even if the critisms are valid. Intentions matter.
You've got some good advice already, but one that I'll add here is adopting the principle of charity [0]. Every time someone talks to you, interpret their words in the way that is most favorable to their argument and your mutual interactions. This assumption goes a long way to short-circuiting any negative thoughts you might have about their intentions.

For example, if there seem to be two interpretations of a comment on a PR, one that is genuine and one that is snarky, assume they were genuinely trying to help and reject the snarky version. This is easier said than done, but it's a useful skill to practice.

[0]: https://en.m.wikipedia.org/wiki/Principle_of_charity

I think this is great advice and would like to add that this is best done without questioning yourself too much but rather as an exercise to completely „overhear“ negativ comments while focussing solely on the outcome.
A friend once explained his philosophy to me, that I find helpful: "Once you've written it, it's just code. Someone can always find a better way or improvements and that's fine"

I think the second sentence is true for everyone's code and that's what makes the job interesting.

Also jobs rarely aim for perfection, they aim to create value efficiently for the business. If the best way of getting there is producing code with a few mistakes that are when later picked up in a code review then that's fine too.

If this resonates with you at all, then when something annoys you repeating to yourself "It's just code" might help. Best of luck!

(comment deleted)
The reason I took criticism of my work personally was that I build my identity around the fact that I'm smart and good with computers. If you think of yourself as having value BECAUSE you're good at X - it's almost impossible not to take criticism personally.

You can pretend not to care, because it seems professional - but inside you'll still be hurting, and by default you'll still act to prevent the damage to your ego - anything else will require constant attention. It's not sustainable.

The solution is to detach the perception of your value as a human being from your work.

Usually review feedback is not that harsh though. It's not like "This is complete shit, please start over!" It's usally things like "If you used this pattern in this area, it would become easier to read" or even more trivial "This variable has a generic name, please make it more expressive" or whatever...
I think I'm in the extreme minority on this, but in my view those responses go from least harsh to harshest.

This is complete shit, start over.

Even though there's vulgarity, it's explicitly directed at "this" and not "you." If the vulgarity is indicative of any frustration, then it means my work was below their expectations - which necessarily implies that they have come to expect more from my work. This is confirmed by their direction to start over, without any additional oversight or specific micromanagement. The boss who says this respects you, respects your work, and knows you can do better than this uncharacteristic example without them holding your hand.

If you used this pattern in this area, it would become easier to read

"You." This comment is directed at me and the choices I made. The comment uses the conditional - it isn't frustrated, it's wistful. The language is stilted and formal; they're keeping me at an arm's length. And easier to read? Humiliating that my thought process is that incoherent.

This variable has a generic name, please make it more expressive.

Very simple present tense statement, followed by very simple imperative. I'm clearly being handled. And please? They are literally begging me not to suck so bad. This isn't just arms-length language, this is you're-going-on-a-PIP-and-we're-being-careful-not-to-give-you-any-employment-law-leverage language. If someone ever gives me feedback like this, that's a sign I'm going to get fired.

That reaction is really extreme; to the point I'm not quite sure if it's satire?

If it's genuine, why not respond with "good call, will update" or "I couldn't think of anything better for this situation - do you have any suggestions?"

You appear to have replied to the wrong post
No, your post comes across as sarcastic. “Please rename a variable” is in no way an indicator that you are borderline being PIPed.

Additionally, that’s not even scratching the surface for HR documentation that is required for underperformance. It needs to be blatant “you are not meeting expectations” phrasing.

(comment deleted)
No, actually - right post, but I might not have been specific enough. In particular that:

This variable has a generic name, please make it more expressive

is an indication you're heading to a PIP and a firing seems to be reading a huge amount of negativity into a comment that isn't warranted.

Different cultures and work environments perhaps, but I've often written and received similarly terse statements on code reviews; it's just business as usual. As a rule, I have a huge amount of respect and value my team members - as I hope and believe they do for me. I do often (but not always) use the conditional rather than imperative tense as part of my British cultural baggage; but I doubt most people even consider that.

Edit: on further reflection, I think the better relationship I have with the engineer in the code review, the comments get more terse. You can write extremely brief things like "should be private" or "missing type annotation" because you know the baseline working relationship has enough trust and mutual respect to support comments like that without offence.

That's... self-contradictory. Your edit is in complete agreement with me.

Baseline working relationship has trust and respect: "should be private"

Otherwise: "This is supposed to be encapsulated. Please make this variable private."

Stilted, formal, directive language is not a hallmark of a healthy working relationship, and the number of replies to my comment here that seem to take the opposite position... is not encouraging.

The first one is utter garbage

"This is complete shit because of X Y Z" is actionable "this is complete shit" is not. At what or who it is directed is irrelevant, it's useless.

> The boss who says this respects you, respects your work, and knows you can do better than this uncharacteristic example without them holding your hand.

Nope, because again, no indication why it his shit.

>> If you used this pattern in this area, it would become easier to read

> "You." This comment is directed at me and the choices I made. The comment uses the conditional - it isn't frustrated, it's wistful. The language is stilted and formal; they're keeping me at an arm's length.

Yes, "you" prima-ballerina, you wrote it, take responsibility for it.

> And easier to read? Humiliating that my thought process is that incoherent.

You should be. Code is for reading. You should know that by now.

It would be different if it was directed at junior dev but you should know better.

Fix it and move on, everyone writes bad or unclear code sometimes.

>> This variable has a generic name, please make it more expressive.

> Very simple present tense statement, followed by very simple imperative. I'm clearly being handled. And please? They are literally begging me not to suck so bad. This isn't just arms-length language, this is you're-going-on-a-PIP-and-we're-being-careful-not-to-give-you-any-employment-law-leverage language. If someone ever gives me feedback like this, that's a sign I'm going to get fired.

That's insanely weird assumptions you're making. Everyone makes bad code. Being polite is hedging your bet against how the other side answers to your feedback. If you know someone and you know their style "hey dude, this reads like shit, fix it" can be entirely enough and just fine, but if you don't know the person all that well being nice won't hurt.

Not "you named variable weird, you're fired" like you're trying to interpret it

I think this is a great comment, with much broader implications for living well. Unmooring the sense of self from external factors is one important aspect of spirituality.
I thought this was an excellent read on receiving (but also giving) feedback: https://www.amazon.com/Thanks-Feedback-Science-Receiving-Wel...

Lots of discussions on where feedback might come from, what are the types of feedback (praise vs coaching vs evaluation), and how to incorporate (if needed)

I also want to echo the top comment here re:kudos on desire to improve

I work in consulting; everything I do I do for the customer and to improve their codebase. I often see a lot of terrible code. I change it and try to educate the coder who was responsible. When I get comments on my code I will always assume that I am wrong. Not because I am bad but because I am not that long with the company. I am missing the domain knowledge, ways of working, standards and all that. When I do get responses that "this does not work" I ask the person why he thinks that is so. Often it is a misunderstanding on how they think that API works it is not very often that I am wrong but I do not always assume that I am better.

Since I have been working in this manner people are more open to changes themselfs. It works both ways.

I think being humble is effective and leaving ego at the door works in a lot of situations, including work.
I think consulting might be a good fix for the poster's problem. Your behaviour will get corrected fast.

I've seen so much bad code and so much mess. All made by nice - and not so nice - generally competent folks in varying circumstances. Also contributed quite a bit myself, actually. ("I've seen things you people wouldn't believe")

After a while you get numb to it. There are a staggering number of ways to be right and I don't think there is a general fix other than expose yourself to as much as possible.

tldr; a lot of times, 'constructive criticism' is just a dressed-up personal attack that you are probably perceiving correctly as a personal attack.

I have gotten honest, sane non-trivial constructive feedback/criticism of my work before, but I don't tend to remember it unless it was extraordinary - like someone went way out of their way to pump me up before burning me (my work) down with some accurate and correct criticism. I like managers and senior co-workers like that, good on them.

I don't necessarily remember the specifics of bad criticism, but I feel like bad criticism is bad because it is either designed to be taken personally, or is so careless that it is inevitable that it will be taken personally -- that is, it actually _is_ a personal attack, dressed up as work criticism.

I have vague recollections of various project managers and lead/senior engineers during various tenures that I have butted heads with due to their insecurities, incompetence, etc. There are petty people all over the place, esp in a 9 to 5 environment -- wage slavery can be a breeding ground for all sorts of bad behavior.

I do like working with smart, confident, nice people -- not an easy combination to find in a single person, much less an entire team/company.

That said, I like the whole 'mindfulness' approach to life, think it's worthwhile, don't necessarily see it as 'killing part of yourself' like i used to, more like a necessary evil in this very crazy world.

Most things I do suck when I look at 6 months later. If that wasn't the case you are not really improving.
Stop measuring your value as a person by the quality of your work. The 21st century has seen a mighty effort to convince us that we are no more than our work ethic. None of this shit matters; I'm sure you have or will sooner or later see something you poured your blood, sweat, and tears into binned at the whim of some ladder climber looking to make their mark, or similar. We're here to live; use your job to facilitate that and remember: it's just a job.

(Assuming youre talking about 'work' in a professional context)

First make sure that they aren't actually meant personally. E.g. if the same person always is unprofessionally snarky to you, there might be something to talk about...
I had similar problem early in my career. I improved myself by applying the mix of three:

1. If the change requested was not major I was making mental push to agree and just do it, in many cases comments were not about the very substance of what I was working on but they were sliding on the surface

2. I was learning to read my work and see if reviewer is actually right, as I'm not a genius and there are times I get something wrong

3. I was learning 'the art of not giving a f*ck', well, sometimes this is what you need to do to keep sane :)

Personally I never cared about it. The only goal I have is whether it's right on pointing to the direction of work better(which in turn makes more money for me).

If it's point out something that can be done better. I can take it regardless how it's phrased. That is the only thing on my mind when I am working

I don't have great advice. This is just how I think about it:

Nobody is perfect.

I stopped taking it personally after working on an app about 15 years ago. I was reading the code and had an epiphany: it was buggy as shit. Less experienced me probably thought it was fine. But if timings were just right, there were some bugs that would cause all sorts of errors.

But they hadn't ever happened, despite the system running for 3 years at about 10k requests handled per second. So, did the bug matter? I dunno. I fixed it, sure. But it gave me a new outlook. It's impossible to avoid all mistakes. So try your best, and don't beat yourself up over the ones you miss.

Try viewing it as input, and not criticism. Imagine you were cooking a stew, someone tasted it and said, "it isn't salty enough". Are they attacking you because your stew tastes like garbage? Or are they, in good faith, offering their opinion on how you can make your stew better? If it is the latter, you should be grateful they were took the time to taste your stew and offer their honest opinion. It is then entirely up to you to incorporate their input into your project, and add more salt, or discard their opinion, and leave your stew how it is. Either way, going forward, it is useful to know that at least one person thought it needed more salt, and try to be grateful that they offered the input, rather than viewing that input as an attack on your stew-making abilities.