Ask HN: How do you not take criticism of your work personally?
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 ] threadAssume 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.
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.
Most of the time if someone is being intentionally rude on the internet, they're also being a troll. Don't feed the animals!
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.
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.
>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.
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.
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.
If folks are not providing constructive feedback there’s no reason to pay any attention to what they’re saying.
(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?
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.)
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.
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.
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.
There it is: the false dichotomy of “good” vs “bad” programmers.
No, programmers exist on a multidimensional spectrum and performance is contextual.
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.
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.
Did anyone die?
No? Then on the scale of important consequences the mistake was statistically inconsequential.
My day is ok.
In that context, what-I-like doesn’t matter.
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. :)
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.
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.
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 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!
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.
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.
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?"
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.
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.
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.
"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
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
Since I have been working in this manner people are more open to changes themselfs. It works both ways.
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.
https://www.observationalhazard.com/2020/11/on-taking-critic...
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.
(Assuming youre talking about 'work' in a professional context)
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 :)
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
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.