Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How do you not take criticism of your work personally?
667 points by molly0 on May 25, 2023 | hide | past | favorite | 629 comments
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.




What you have encountered is actually one of the necessary steps to really become "a senior developer". And congratulations, you have already passed the biggest part of that hurdle: becoming aware of the issue.

There are things that are fragile, things that break when they encounter a shock. Such as porcelain, when transported. There are things that are non-fragile, things that do not break when they encounter a similar shock. Like a teddy bear, when transported. And there are things that are anti-fragile, things that improve when they are exposed to a shock, like the immune system. If you are not exposed to series of smaller shocks as a child, your immune system does not develop properly.

So you need to develop an anti-fragile attitude towards criticism, in order to become a better developer from the criticism. If you do not learn that, you will be stuck at the level you are at the moment. You can do this at the meta-level as well at the same time: become anti-fragile towards handling criticism in general, and becoming a better human being from it.

The key to hacking yourself is to increase your awareness of your emotional state. When you become aware that you are angry, the anger is losing the grip it has over you. When you are angry, you are sometimes doing things you would not have done if you were not angry. (Sometimes anger is healthy, it may also be a signal to us that our boundaries have been violated.)


Uhm...I have to chime in here.

"Anti-fragile attitude" when it comes to criticism is not built by tolerance. Quite the opposite actually. It is a common misconception. While making yourself numb against criticism IS a solution but not by far the best one.

A high criticism tolerance is learned by understanding that ones self worth is not attached to output or delivery. (This is hard in our industry) It comes from self-acceptance and compassion. And these values are learned early on. You'll find that the people that break down at the slightest criticism the most are those that were criticised the most as children as well. Those that had no room for being anything other than perfect. Where value was obtained from performance.

To take it even further...why see it as criticism at all? You are not your lines of code.


I’ve heard similar statements from other people, and I have a disconnect that prevents me from understanding. Why would someone want to detach their self worth from what they do? If someone ought not feel a negative emotion in response to doing something “bad”, by what logic can they justify feeling something positive in response to doing something “good”? I cannot conceive of a world view that allows one to feel proud of their accomplishments but does not require their disappointment in their shortcomings.

Furthermore, the idea of separating one’s self-worth from “what one does” does not make sense to me either. If someone’s worth is not tied to what they do, then the criminals, liars, frauds, cheaters, etc., of the world are every bit as valuable as our loved ones, idols, great contributors, etc. That view doesn’t make any sense to me; I wouldn’t be disappointed one ounce if all the criminals on the Earth vanished tomorrow, but I would be greatly disappointed if all my friends disappeared. The only difference between those people is “what they do/have done”.


There’s a few things I see in your post.

One is an implied notion of objective rankings of worth of humans, and binary labels for people. Your post explicitly categorized “all criminals” and “all my friends” at disjoint sets. I can’t speak for your friends, but many of mine are “criminals” in the sense of disregard for drug laws. If you’re willing to sweep minor traffic violations under the heading “criminal” you’d probably sweep up most individuals with drivers licenses. Is the hypothetical person stealing so they (or their children) can eat irredeemable to you? There are certainly folks who on net do more harm than good, but rare are the people who truly only do bad to the world.

Second is a matter of perspective. If your friend started a new thing today, say learning the piano if they’ve never played an instrument, would you expect them to be good? If not, would you think less of them for trying? What if they’ve been playing for years, and one time when playing a song they’ve practiced many times they miss a few keys? Now replace the friend with yourself. Does your feelings about any of these change?

It’s not uncommon (especially in programmer types) to allow others more grace than we allow ourselves. You can be disappointed by your failures, and thrilled by your successes without impacting your sense of self worth.


I don’t think there is an objective ranking of worths of humans. What is valuable is inherently subjective. Everyone has a different value system. However, I believe there is a large amount of overlap, especially in the extremes. Most people find murder and rape deplorable, for instance. That is the group I was referring to when I said “criminals”. Personally, I believe members of that group to be below valueless, i.e., I would benefit from their not existing. Others can draw their lines differently, but I suspect most people have some similar group.

Looking at your piano examples, if I had a friend who took up piano, I would admire that, because I value learning. I wouldn’t expect them to be good, and I would not think any less of them, because it is the gumption to try something new and to learn a new skill that I find value in, not playing the piano. If they had been playing piano for years and made mistakes, I would not think any less of them, because I don’t value the ability to play the piano. Presumably, after many years of practice, playing the piano would hold a lot of value to them (or it held value to them so they practiced; the point still stands) and so it would make a lot of sense to me that they would feel worse when they made mistakes; those mistakes demonstrate to them that they have less of something that they value.

Like I said, we all have different value systems, but our self-worths should be tied to how well we live our values, i.e., our integrity. If our self-worth is not tied to how well we represent our values, then it is, IMO, baseless.


They are advocating for self-worth to be intrinsic to oneself. The reason for this is the acknowledgement of at least 2 things: that every human is a victim of their starting circumstances, and the potential in every human being to alter their course in life. All the criminals you would be content to see disappear still were victims of the circumstances that led them there, and they all had potential to alter their course in life. You never know what stimulus life will offer you that can change everything for you. From a more utilitarian view, even criminals can possess very valuable skills that can be directed to constructive uses.


> Personally I believe members of that group to be below valueless.

Well, this seems like an extreme attitude that doesn't account for a large swath of how the world actually works, and is often gotten to that point by personal bias and not questioning beliefs constructively.

Its flawed because its an overgeneralization.

To provide an example, are there people that have been wrongfully convicted. Have any of those people been put to death as a result of those convictions. Assume for a second that you are one of those persons, and 12 people based upon some judge or skewed evidence chose that. Are you valueless? Who chose that you would be convicted? Wrong place at the wrong time?

There's a movie with Russel Crowe called The Next Three Days. It covers this type of premise. We never have absolute information, we have interpretations which are just as malleable as a game of telephone.

As for your ideas on value systems and integrity and self-worth, there are contradictions and its a bit convoluted. It fails to make distinctions between things within and outside your control, and the ever present ability of others to deceive sometimes even without their knowledge.


You’ve missed the point, but also helped support their point. The comment was about criminals that rape and murder - as in people that perform those actions.

Whether society accurately captures and properly deals with those people is an entirely different subject. The fact society even has to do so is a net negative


What you say makes sense but misses a critical point i.e of self compassion. Looking at the piano example, if they are kind to themselves and based on the amount of compassion they have, a failure of screwing up a few keys might be nothing, missing a piece from a song might be a bad day and screwing up a live orchestra may be a learning experience. To another unkind to self piano play one or all of these are catastrophes and a hit to ones self esteem. Both of these folks are experienced piano players but the former is able to disconnect and review their mistakes without placing a judgement on self(i.e. being a harsh parent to self.)

Depending on how harshly one judges oneself is the reason for not handling criticism to ones failings. No one is perfect so one better be kind and try to learn from their mistakes and not take it on their ego.


Two questions. Can a slacker goodfornothing McDonald's-working college dropout that only live day to day, party to party, feel self-worth or should they feel worthless? Can I as a senior software developer base my selfworth on the same value system as that college dropout even though I finished college? Aka if I made an honest mistake in my pr, I wouldn't have to feel bad and decrease my selfworth even though I think I could have written better code.


> Can a slacker goodfornothing McDonald's-working college dropout that only live day to day, party to party, feel self-worth?

Do they throw good parties?

Do they help their friends celebrate their successes and provide succor in times of need? If so, why shouldn't they feel some self-worth?


Average parties, ok friend.


>Can a slacker goodfornothing McDonald's-working college dropout that only live day to day, party to party, feel self-worth or should they feel worthless?

The person you posited has more self-worth, by definition, than the self-doubting programmers in this thread. Precisely because they are getting by while doing something much less "meaningful" or "useful" (as evaluated by others) than a job in software engineering.

(Of course, I'm talking about the hypothetical person I imagined when I read your post; most such people that I've met in real life actually feel pretty bad about themselves, party to numb the pain, or because they have nothing better to do, and actually feel worse after they've had their "fun", et cetera. But let's roll with your scenario for a second, I think you're on to something important.)

Maybe this person doesn't have to suck up to a pointy-haired boss, or doesn't have to mentally model arcane concepts that are subject to planned obsolescence anyway, or doesn't participate in the violation of people's minds facilitated by the infotech industry.

Or maybe they still do the aforementioned things but on their own terms. Maybe they code for fun and write malware when hungover out of pure malice. Or they don't. Maybe they're a hooker on smack and just shat on your floor. It does not matter. What does matter is that this hypothetical person does not have the experiences that make you ascribe "negative" or "insufficient" self-worth to yourself.

In other words:

* You can be an absolutely awful horrible piece of shit person by anyone else's (or everyone else's) standards and still have a feeling of self-worth. This is by definition: self-worth is the worth that you ascribe to yourself. No matter how much you care (or not - it's a choice) about other people, self-worth is self-worth; worth to "civilized society", "a value system" or "an individual other" is not self-worth, by definition.

* On the other hand, the "need" to experience something that others call "self-worth" does not in fact originate from the self, but is a vague obligation imposed onto you by others: the obligation to have some sort of nebulous experience that others call "a feeling of self-worth".

* There is no such thing as "should feel worthless": nobody gets to tell anyone else how to feel. Imposing an obligation on someone to experience an emotional state is, technically, a violation of bodily integrity. Yeah I said it. Whatever real, physical neurochemical process lies behind the experience related to the concept of "self-worth", is a normal part of the body's homeostasis, serving to ensure the self-preservation of an animal that is able to kill itself for entirely abstract reasons (such as awareness of own mortality, and downhill from there).

In even fewer words: in my book, someone who is an "ok friend" and throws "average parties", is defined as "a waste of my time". But they still get to live on the same planet and breathe the same air as me with my silly book. I don't get to decide their self-worth for them, and nobody, and nothing, gets to decide that for you, either.

Therefore: you can feel perfectly good about your successes and failures without even entertaining the notion of there being a concept of "self-worth". According to nobody in particular, this is actually preferable, for Occam's razor reasons if nothing else.

In theory, you can be a very "successful" person and still feel worthless; in practice, the feeling of worthlessness usually prevents one from becoming "successful", and makes it look as if it's the other way around.

Ultimately, the matter can be put like this: do you see yourself as goods to be bought and sold? If yes, then go ahead and demonstrate your high "feeling of self-worth" as much as you have to. If no, then why even bother with pricing yourself?


You can feel whatever you want to feel. That doesn't mean it translate to anything in reality.


>That doesn't mean it translate to anything in reality.

Absolutely true and exactly my point: while you're feeling what others want you to feel, you're missing out on feeling things that do translate to actual, valid insights about your reality.

For example, this whole absurd notion of "self-worth" that we're discussing here. It's there to scam you into thinking about yourself what others think about you - even though they're not in your shoes, and may even have a vested interest in seeing you down.

Even the name of that concept is misleading (how is your self-worth dependent on your worth to others, unless you yourself make it so?). And here we are talking about "reality" as if human social reality is not predominantly a linguistic construct, and constantly subjected to these absolutely ridiculous abstract symbolic switcheroos, that people only fall for because they believe they have better things to do than get their thinking in order.

>You can feel whatever you want to feel.

But you can only want what you feel like wanting. So you're still trapped: desire is either intrinsic or mimetic, feelings are conditioned, yada yada.

And I'm pretty sure you can't actually "feel whatever you want to feel" - not without a Nozickian "experience machine" or years of advanced meditation practice, anyway.


The pro tip is to attach your self worth not to your skill, but to it's first derivative!

That way any criticism that helps you improve your game, no matter how unpleasantly delivered, is a power up.

I say it glibly, like it's easy, but it works if one can internalize it.


I do like this (and the way you phrased it!) but I do think it has a dark side - there will come a time in your life where your skills plateau, and another time in your life where your skills start to decrease. Actually both of these will probably happen many times in your life!

It's important to recognize the ebb and flow and to be kind to yourself.


Hmm, thanks for putting into words something I have been doing unknowingly my entire life.


This is such an insightful comment. Thanks!


This was an interesting point of view.


To give a slightly different answer than other commenters:

To detach emotions from work without throwing out the value of good work: attach your self-worth to something UPSTREAM "doing good work", a cause of good work, and not the work itself. You do this by realizing that the emotional attachment to your own work was never really about the work, it was what the work implied about you; the emotional brain jumps to conclusions. Good work, when you zoom in as if with a better telescope, that you are responsible, capable, well-intentioned, generous, intelligent. These can be ends in themselves—you'll disappoint yourself when you fail to live up to them, for their own sake. Those are better ends—they let you say "I DID address everything I could think of but I missed something, I'd better learn from that", rather than feeling something you missed as a vague attack against your whole being. And because, you often try to prove we are all those things—fearing you're not—but fool ourselves with things that don't really prove it—like material wealth, or attention, or good grades. And then even if you succeed you are left with some guilt: "I got the good grades but I feel like I could have done something more important..."

You can take it further: those attributes, when you zoom in further, resolve further, into a feeling that you are worthy of existing, and worthy of love. In my experience (I have felt this, but I haven't learned to live like it), feeling "worthy of love" gives you permission TO love, to be good—which again you can invert. It's the right reason to be responsible, capable, etc—all of those flow outward from something deeper rather than being ends in themselves.


I think these platitudes are just mental hacks people use to manage their emotions. Emotional responses are valuable information, but only up to a point. If you dwell on emotions and allow them to become the basis of narratives about yourself then you are becoming disconnected from reality. This applies to both good and bad things, you never want to get too high or too low. Ultimately what matters is your character and how you operate. If you put in the work, you’ll tend to get better outcomes, but nothing can insulate you from mistakes. Being able to learn from mistakes and be your best requires that you don’t let your sense of self-worth be tied to fragile narratives or heavy self-defense mechanisms that deny reality.


Is your intrinsic value as a person due to what someone else thinks of the quality of your work? If so, that is inherently dangerous and fragile. That is what is being warned against.

Sometimes people are having a bad day. Sometimes someone has a different view of 'good' than you. Sometimes someone just got served divorce papers that morning out of the blue. And none of that you can control, or even do much to influence many times.

However, being aware that having others value the output you produce gives you things that benefit you - like help pay the rent - in combination with other factors, and is therefore important to you. But it's different.

Looking at your work and being able to judge yourself if you did a good job, is healthier, and more productive. If you're seeing that others judge the value of it differently, it's worth investigating why.

There may be something you're missing (different values, or they don't like your face, or they hate the language it's in or the style, or they haven't been laid in years, whatever).

If it is something you can adjust, it may be worth doing so. If not (or not worth it), it may be worth finding somewhere else with different values. It may also be worth adjusting your judgement of your work based on those factors, IF you think they're valid and it will improve things in your favor. Sometimes, it's worth just writing off the feedback or defending yourself, because it's coming from a toxic place from them.

But if you do this, they won't be personal attacks, because it isn't about you (as in who you actually are), because they can't know the truth there anyway. People don't work that way.

It will be about their perception of the value of what you produce to them, or their perception of you. Which is not up to you (directly), but you can influence it, and often has little to do with who you actually are and more to do with specific things you can concretely do a bit differently and change.

Does that help?


> Is your intrinsic value as a person due to what someone else thinks of the quality of your work?

Absolutely, but:

1) not all of that value, just the value as someone who does that work. I mean, it would be crazy to think that you have no value as a dad to your three-year-old because you made some crap code design.

2) not for all possible values of "someone else". Just those someone else who have a clue about the work, and make specific, objective criticisms that are verifiably true, and who understand the context of the work: what are its requirements and non-requirements, including constraints.

3) I don't necessarily want someone else to think everything I make is of high quality; however, the right somebodies should more or less agree with me about the quality. If I make something and think it is of medium quality (for some justifiable economic reasons), then if someone thinks it is of great quality, I will regard him as a fool; but if someone thinks it is of garbage quality, I will wonder whether I might not be a fool. Ideally, we should be of one mind with everyone who understands the problem and the work. If the work is mediocre, everyone (including the author) should find it so based on some objective criteria. Everyone who understands the economic reasons for why it was made mediocre should ideally agree with that also. "Ah, I see; I would have done it the same with regard to that purpose and those requirements."


The challenge I think is rational analysis != emotional reality many (often most) times. And many times emotional reality is due to some physical element we’re just not noticing (didn’t eat lunch, or haven’t stretched in years, or whatever).

It’s easy to say ‘no, my value as a person is not due to if someone likes my work’, but emotionally we can still be in that place for many hard to address reasons.

And under stress (which we almost all are), balancing out all this to come up with ‘good enough’ and managing all the stakeholders understanding of ‘good enough’ to come to a successful outcome can be really hard and even more stressful.

So I guess what I’m saying is, if rationally someone understands, but they are still reacting that way, there is almost certainly a real reason, it just isn’t one they are able to see right now.

So maybe some yoga/excercise, or some meditation, or going outside for awhile and touching grass can help too.

Us engineer types tend to ignore emotional and physical health sometimes, especially when there is something scary or exciting going on. And we have a ton of that right now.


> I cannot conceive of a world view that allows one to feel proud of their accomplishments but does not require their disappointment in their shortcomings.

For me there's a big difference between being disappointed in what I've done and feeling bad for what I've done.

If I write some shitty code, which I still do after 30 years of programming, and my colleague points it out, I feel disappointed. But I don't feel bad. I fix it, try to learn from it and move on.


When I write shitty code, there is nothing to learn any more. I already know it's shitty and would have called it out if someone else wrote it. If that still happens by now, there is nothing that can be done; that's why we have that review process, thank you. Alone you and I will write shitty code and merge it into the trunk. With mutual cross-checking, far less so. That's the main content of the learning.


> Why would someone want to detach their self worth from what they do

What you are doing is a higher goal than a PR, and detaching yourself from the minor details allows you to achieve this with greater flexibility and skill in the long term.

You have to take steps back and see subsequent bigger pictures and see what you’re doing within the context of a product, a job, a pattern of self-improvement, a fulfilling life.


There's a difference between taking criticism of a section of code to be indicative of some kind of moral failing, and taking that criticism to mean that their understanding of that piece of code was not complete. The first is a direct hit to self worth, the second is a hit to one thing that is used to determine self worth along with lots of other things. The first way is taking it as some kind of attack, the second way is taking it as a learning experience and a chance to increase self-worth by becoming a better developer.

So I think what people mean when they suggest detaching their self worth from their code is that they shouldn't take criticism of their code as a personal attack but as a chance to learn and grow. Hence "you are not your code": the attack isn't a direct assault on you, it's a technical argument about the actual code itself.


Intrinsic motivation starts pulling someone into a whole person, whereas someone entirely reliant on extrinsic motivation does not really know who they are.

Take criminal behavior as an example. Someone reliant mainly on extrinsic motivation are also the same people who will not know what the right thing is when no one is looking — or worse, they are bad actors when no one is looking. Being intrinsically motivated for moral behavior requires you to really examine what is right or wrong.

This includes self-worth. I don’t think most people who are mostly extrinsically motivated realize the extent of social engineering and conditioning used so that society benefits the wealthy few .


Fundamentally, because we are still worth something even when our achievements are completely removed.

If you take the view that our achievements are necessarily integral to our self worth this logically isn't true.


But this isn't the point. The previous commenter was replying to someone who said that what we do has zero to do with our self worth. They were saying, no, it does have quite a lot to do with it.

Saying "well it's not all about what we do!" is not in keeping with the conversation.


> we are still worth something even when our achievements are completely removed.

You can’t logically derive this from anything. It’s just a choice of how to see the world. “Worth” is inherently a subjective value judgement.


Who ever said it has to be logically derived?

Most of what we do and how we think is not “logically derived” and is extremely subjective; we’re human, not Vulcan.


The GP claimed that "this logically isn't true", implying that the question is one of logical reasoning.


> I cannot conceive of a world view that allows one to feel proud of their accomplishments but does not require their disappointment in their shortcomings.

That is a great point... but the answer is that you should also take your accomplishments with a grain of salt.

Basically, yes, your outcomes are a function of your inputs (talent, work, etc.), but it is a very noisy function and people usually underestimate that part. Sometimes you do the right thing and fail anyway, in the sense that "the right thing" is a strategy that succeeds with probability 95%, but today just happened to be that remaining 5%. And if the next day you apply the same strategy to another task and succeed, it doesn't mean that you have improved.

If you want to base your self worth on your outcomes, at least choose the long-term trends over the short-term noise. If you usually do a good work, then the bug you made yesterday should be interpreted as an accident, rather than you being bad at what you do. And vice versa, the successfully completed project is a combination of your skills plus the good luck of not having one of those accidents today; both of them were necessary together.

> If someone’s worth is not tied to what they do, then the criminals, liars, frauds, cheaters, etc., of the world are every bit as valuable as our loved ones, idols, great contributors, etc.

Let's not judge moral character the same way we judge talent. To be a great contributor is a combination of character and talent. To be a criminal is a failure of character, but there are both talented and talentless criminals.


The distance allows risks.

If failing at a project means your a failure then you’re too close.

Failure and mistakes are how you learn.

If failure and criticism are about you then you will always be defensive about and flaws, perceived or real.

So yes be proud or disappointed, but have the distance and self confidence to believe it is expected and normal to make mistakes/fail at things on the path.

As the other commenter said care about the trends and 1st derivative not the individual data points.


I think you should attach your self-worth to your design; but not to some minor mistakes in implementation. Not your entire self-worth, just that of it which has to do with being a designer.

A great novelist would be foolish to let some editor's remarks about spelling errors and run-on commas destroy their self-worth as a writer.

If a knowledgeable critic points out problems like the plot being a series of unoriginal tropes, and the characters being paper-thin stereotypes, that has to strike at the author's self-worth as a writer. I don't see how you can get around that.


> The only difference between those people is “what they do/have done”.

This is a very consequentialist framing of values. There are other ways of conceptualizing values, like virtue ethics and deontology, so if you're actually interested in understanding a different modality, those are keywords you can Google.


Because your self worth shouldn’t be tied to how successful you are, but how willing you are to learn and grow. Nobody’s perfect nor can they be, so it’s a bad target. But everyone can be better.


It's even totally reasonable not to tie your self-worth to anything related to growth or learning or improvement or whatever. Plenty of people feel high self-worth by simply loving the people around them.


There is another, way more important, difference. You know your friends for who they are. You know the criminals only for what they do.


It's very dangerous to not also take into account what your friends do (or who the criminals are).

Words and emotions are easy to fake, deeds are much harder.


Even if your philosophical foundation is not western liberalism (which is derived from Christianity), you can appreciate that many western people view all people as having inherent dignity…

Being a person gives you value which cannot be take away.

It’s a philosophy, so one may reject it, but a lot of people separate their personness from their work because of the idea that each person is valuable in their own right.


> Why would someone want to detach their self worth from what they do?

If you derive self worth from results, then you could be disappointed by circumstances outside of your control.

Suppose you set a goal to make $1 million by age 30. At age 27 you're doing great and (through no fault of your own) you are struck by lightning. Because we're playing pretend let's just say your insurance doesn't cover lightning strikes and so medical bills drain a lot of your savings and you cannot continue your career and you do not become a millionare by 30.

If your goal is just the million, then you are a failure. You did not make it. If instead you derive self worth from your values, then you can still be a hard worker (or maybe your value is being self-starting, or entrepreneurial, or something else), even if you are struck by lightning.

> If someone ought not feel a negative emotion in response to doing something “bad”, by what logic can they justify feeling something positive in response to doing something “good”?

I think this section is pretty close to what I'm advocating here. "Good" and "bad" are doing a lot of legwork. What is good and what is bad? I'd wager if you asked people of different religions or ideologies or backgrounds you'd get a whole swath of answers here.

> I cannot conceive of a world view that allows one to feel proud of their accomplishments but does not require their disappointment in their shortcomings.

You might find that you attribute too much to yourself here. It can feel good when you are succeeding and sometimes the system at large is a major contributor to your accomplishments and your shortcomings. As an extreme example, I don't think that someone accomplishing little and suffering under Apartheid is worth less than someone benefiting from that system that accomplishes a lot.

> If someone’s worth is not tied to what they do, then the criminals, liars, frauds, cheaters, etc., of the world are every bit as valuable as our loved ones, idols, great contributors, etc.

To me it would depend why they commit crimes, why they lie, cheat, etc. Someone is stealing bread to feed their family that is very different from someone stealing taxes for a public project. Going back to the Apartheid example, an interracial couple would be breaking the law, and although they are criminals I would not want them to disappear for that. They could have even done horrible things to protest Apartheid and I would still not want them to disappear. If they had rotten values then sure.


>I cannot conceive of a world view that allows one to feel proud of their accomplishments but does not require their disappointment in their shortcomings.

First one's free: your accomplishments contribute towards your own well-being; your shortcomings are towards everyone else's disappointment. If you feel that your failures have disappointed others, you don't actually need to disappoint one more person (yourself) before you are allowed to do better. In practice, experiencing that emotional state is usually counterproductive (unless your goal is to make the others feel sorry for you). Just become aware of the failure and start looking for actionable root causes; no beating yourself up necessary.

You know, you did not even choose to be here in the first place: this world brought you forth into itself, by way of your ancestry, and imprinted its ways into the clean slate of your nervous system, by way of your formative experiences. "Perception of self" is just one of those imprints; "selfhood" is simply learned behavior.

(Even though it's next to impossible not to learn some form of selfhood, is it surprising in the slightest to say that different people's demonstrated perceptions of self can vary considerably?)

While "success" and "failure" are eminently useful notions for categorizing perceptions of feedback from the outside world, the only thing that makes these notions have any bearing at all on your perception of self is... force of habit. You have the option, and the moral right, to unlearn that habit. Nobody even asked you whether you want to be a "self"! You did not even exist when that choice was made! So, why feel responsible for whether you end up perceiving yourself as a "good enough" self? Don't you already have enough things to be responsible about, that are not entirely in your head through no fault of your own?

Expecting people to have internally consistent worldviews, or even an objective and logical perception of their own selves, is very, very idealistic. In my experience, people who are disappointed in themselves actually learned that from their parents and peers (and, increasingly, media) during the early years of their lives; it's this attitude of self-deprecation which sets them up to fail and guides them into a vicious cycle. While people who somehow avoided being taught this mentality in the first place, tend to be more resilient, not afraid to try, fail, then learn from failure and try again.

(Most people who don't kill themselves kinda-sorta end up unlearning self-deprecation and learning how to bounce back even from tremendous self-violations; but you have limited neuroplasticity, limited access to experiences, and limited time on this planet, so the sooner you start, the better. Don't wait until you can only learn internal resilience at the Pyrrhic cost of becoming an incorrigible narcissist, they're making too many of those already!)

>Furthermore, the idea of separating one’s self-worth from “what one does” does not make sense to me either. If someone’s worth is not tied to what they do, then the criminals, liars, frauds, cheaters, etc., of the world are every bit as valuable as our loved ones, idols, great contributors, etc.

You are confusing "their self-worth" with "their worth to you". Now, how could you? I think this is a really horrible, egregious, evil mistake for someone to casually make in the span of a couple sentences; I honestly can't fucking even. YET... you are still valuable to me, since you are the reason I am writing this message, you might even be receptive to my worldview, and I definitely do give a damn whether you get my point! No more, no less.

(Of course, for some reason people feel their self-worth diminished when someone points out what's basically a "syntax error" in their thinking. I think they teach 'em that in school through Pavlovian conditioning or something.)

You know, even horrible people are valuable to someone! Besides, it takes a great deal of self-worth to be a successful criminal, or even a petty liar! Especially because things can get overwhelmingly complicated really quickly, and advanced opponents can smell you doubting yourself. Narcissistic character is another case where one's self-worth and one's worth to others are grossly mismatched, to comic and often tragic effect.

What I would advise you to do (and yes, I am crazy, but I am not fucking with you), is to try listening attentively to some gangsta rap and try to put yourself in the shoes of... no, not an impoverished, radicalized African American youth; but of a well-to-do entertainer who successfully confuses the audience into believing that they are an impoverished, radicalized African American youth. And has the sheer audacity to accept more money for their controversial burlesque act, than you'll ever see for all your real hard work, that has actual, objective value for others, that everyone agrees on!

It's truly the eye-opening experience.


A low self esteem from constant insults (aka non-constructive or overly harshly presented critique) or lack of encouragement will kill anybody's ability to accept useful feedback, and people can certainly become numb to that.

However, that numbness is different than being unaccustomed to taking useful critique without getting defensive. Which is absolutely a learned skill– one of the most important you learn early in art school. Someone unaccustomed to any critique, or only used to complimentary feedback will bristle at any criticism.

Someone used to constructive critique will still bristle at insults, intentional or not, so the EQ of the critic in delivering the message is also critical. The biggest enemy here are people who think that their criticism can be as rude, pedantic, or imperious as they want if the core point is valid. That might provide comparable results for the issue at hand, a) but human beings don't deserve to be treated like that, and b) it kills morale, which kills productivity, quality, retention, etc. It blows my mind how many fully-grown adults can't see that they're only quieting their own insecurities with unnecessary harshness, and that they're essentially stealing self-esteem from the team by indulging that urge.

Having people on your team with poor enough mental hygiene that they need to position themselves above someone else to feel good is a serious problem. I think it's one of the things people really mean when they talk about overly macho bro types or neckbeards.


> low self esteem from ... non-constructive or overly harshly presented critique

ok firstly Comments about the individual in a CR is way out of line.

There is a massive difference between "This code will fail in <a certain way>" and "You failed <, again, like you always do>" ... The latter is out of line and should be addressed head on with a manager present or a person who will enforce it's toxicity.

Now that said, criticism of code should always been allowed. It either has certain properties or it does not. A discussion of economics (scope/timelines/applicability) are a middle ground. But either the code has a race condition or it doesnt. It's easily read (which is best judged by the reader, not the writer)... It's missing some property that is desirable.

If one takes a criticism of code as a criticism of self, that is ego crossing over to where it doesn't belong. I like to remember The bridge will either hold the load or not regardless of how one feels about it. "This wont hold 1 ton" is better information than "Have you considered what happens if you put 1 ton on this?" .. The former informs you of something that must change, the latter leaves uncertainty and obscurity where infact the answer is already known.


Conversations aren't pure textual exchanges and people aren't robots. Things like subtext, tone, word usage, appropriateness of timing, (like interrupting a presentation,) the volume of your voice, who else is present, the examples that you give and analogies you make to explain yourself, and plenty of other factors weigh into how something lands. If someone wants to conversationally bully someone or make them look unprepared or incompetent in front of people who need to think highly of them, it might not even require criticism. TV journalists do it all the time without making statements at all– they just ask questions.

Being direct and being polite aren't mutually exclusive, and direct criticism doesn't have to leave out any information at all. Saying "This approach won't work under peak load because" in a code review conveys the same exact message as "Your code will collapse like a popsicle stick bridge the second we hit peak load because" during a meeting.


Part of the issue is that "Polite" in american has trended towards indirection. "I'm not sure that was the best choice" is American for "That absolutely was not the best choice and must be reverted immediately" .


A) That's not an American thing. US confrontation etiquette is still far more direct than British, for example, even if less direct than in, say, scandanavian countries. B) If the message ends up being the same, what is the actual negative effect? I'm not saying you have to like it, but it seems to be an entirely aesthetic "get off my lawn" sort of complaint. Giving shitty, incomplete feedback is just as possible using direct language. C) Since we're talking anecdotally, the people I've met that gave great, frank, direct feedback just did it because they out obligated to, and even in art school with young students, I've seen few people get defensive. It was calm, well-reasoned, and completely no bullshit. Then there are people who might have said very little, or maybe even a lot, but did it in a shitty arrogant tone and that got everybody's hackles up. Everyone I've met aggrieved about not feeling free to give direct feedback was the second type. C) Directness is just a slice of a much larger topic.


> The biggest enemy here are people who think that their criticism can be as rude, pedantic, or imperious as they want if the core point is valid. That might provide comparable results for the issue at hand, a) but human beings don't deserve to be treated like that, and b) it kills morale, which kills productivity, quality, retention, etc.

These types of people are so difficult to deal with and crop up in every community. The problem is that when you find a person like this in a position of power, particularly if you are new to the community, there is really not a lot you can do about it so you are either forced to a) tolerate their behavior (which will likely require setting some difficult boundaries) or b) leave. I just want to emphasize that leaving is not necessarily a sign of weakness. If the dynamics in the community are sufficiently toxic that this kind of behavior is tolerated -- or even worse, glorified -- there is very little you can do besides maybe giving an honest exit interview. But you need to have the self confidence to not let unreasonable personal attacks bring you down to the same level or make you feel as though you somehow deserve to be treated that way when you make mistakes, which we all do.


Agreed. The constructive vs insults is the important piece. My senior gives me useful feedback now a regular basis. I explicitly asked him to be as direct with me as he feels is necessary and it did open my eyes to the perception of my presentations among other things. To your point, I still bristle at a random unnecessary insult.


Can you give an example of "insults"? I have to say this line of thinking really bewilders me... perhaps I've never worked in an environment with this kind of toxicity.

Typically the sensitivity level of feedback in my experience has encroached into things like "Don't give 10 comments on a PR, its too many and people feel bad" (regardless of the number of faults in the code).


There was a guy in a senior tech role I once encountered in a consulting gig who never let an opportunity to put someone down publicly go by. One time, a young researcher came and gave a (remote) presentation. At the end of the presentation during the Q&A, this guy basically says, "don't you think that your project is a complete waste of time in light of factors x, y, z?"

For my project, I was building some tools that were helping me understand the problem space (which was new to me and that he fundamentally did not understand himself). In a team stand-up, which included the CTO, I shared that I had built a useful tool that was helping me and he chimes in: "I think that you just spend all of your time making tools and don't do any real work." Even if there was a conversation to be had about how I was spending my time, it was ridiculous that he was bringing this up for the first time not 1:1 but with the whole group. I resigned a few days after that interaction (which was probably at least the fourth or fifth time he'd pulled something similar in the two months I worked with them). BTW, he would never just say "you are a moron" but it was very clearly the subtext of almost all of the feedback he gave, except to the most junior people who didn't threaten him in any way.


ugh, that senior engineer sounds like they bastardized radical candor


I think your quotes around "insults" are a pretty good example of how you can use an otherwise normal question to cast doubt on someone without even changing the wording. That technique isn't limited to fairly benign examples like this, face-to-face communication has subtleties that are even harder to pinpoint, and especially if someone has social anxiety or trouble speaking in front of groups, something like that can materially damage someone without even having real criticism. If there's real criticism mixed in, especially if the person speaking has clout in that context, that person can either inform someone or totally harpoon them with the same exact criticism. That is a foundational skill among lawyers who take depositions or cross examine people during a trial.


abusive parents lead me to reading through this. truly can scar someone for life not having a good study environment as they develop, im still trying my best to be better at studying given the help of my s/o but some days it feels actually impossible to absorb and internalize things since its truly mental anguish I'm fighting through. it would certainly help if my s/o would be understanding instead of flat out disappointed in me for doing anything but study while he works (from home, in line of site from me, but i guess he doesnt see when i get paralyzed and completely lose track of time as im in my head beating myself up for not knowing what to do.. sorry.. this is a lot rn and im supposed to be studying as i type ;v; made an account tho just to reply here)


Recommendation you didn't ask for (just skip if not open to it).

Seven principles for making marriage work[1] - has great advice for many sorts of committed romantic relationships.

Also if he's criticizing you as you described he may want to consider talk therapy/CBT to come to an understanding of the nature of his frustrations and his inability to productively communicate them to you.

[1:] https://www.goodreads.com/book/show/849380.The_Seven_Princip...


From the limited information in your comment, I feel he doesn't have your best interests in heart if he judges and criticizes you for not studying, rather than taking your goals and life difficulties in mind.


>"Anti-fragile attitude" when it comes to criticism is not built by tolerance. Quite the opposite actually.

I agree with your overall statement, but I think the specific point above could be misinterpreted in a nonconstructive way. What it seems like you're trying to say is that we shouldn't just be learning how to deal with criticism by tuning it out or building up defense mechanisms against it. That I agree with. However, another interpretation that could be implied from your statement is that one should not be seeking out criticism, which is not good.

What I think OP is getting at is that learning to process criticism comes by experiencing criticism over and over again. Some of the worst responses I've seen to criticism have come from those who constantly make concerted efforts to avoid it. Understanding that you are not the sum of your output is important, but it's really hard to remember that when you're right in the thick of it. Being able to control your emotions and thoughts within that moment come from having experiencing those moments over and over again.

The point of criticism is to learn and improve, but in order for that to happen one has to be able to actually hear and process the criticism being offered. One needs to get past the emotional response to criticism in order for that to happen. The two big pieces of that are decoupling the value of what we're being criticized on from our inherent self worth, AND being able to control our emotions in the moment. The latter is really only done by having enough exposure to it, and that's the "anti-fragility" component.


Exposure - but with appropriate processing in a productive way. Otherwise it just produces PTSD.


I had a comment thread experience recently, not here but on Reddit, that made me think about criticism again and how we experience it.

The opening was that comment A was saying something about how they did <programming subject> and comment B was asking probing questions. I recognized that B was leading A towards a certain framing she had in mind(a very Uncle Bob, OO patterns are the answer kind of answer), so I injected a flat "there's nowhere else that code needs to be except one of these two places, classes have nothing to do with it."

B responded with "but surely they have to be in a manager class right?" And seeing the resistance to taking any other framing, I got more assertive and instructive in my reply, giving specific recommendations to try dispensing with OO and experiment with writing more primitive code. This was the offense, and it became an argument, which was basically a stomping because I was very prepared with sources and a rationale for why I am making that recommendation, and B fell into defenses from experience and authority, talking about numbers of lines of code and systems she had made and accusing me of speculating about her ability.

And then I said, "that's nice, but I'm the comments section." Apologized for the offense, and pointed out that she started replying to A by speculating, and had admitted as much. Finished with encouraging words for B continue writing the code that she felt works best.

She wasn't happy with this, and said I "hijacked" the thread and used a "condescending tone", but also allowed that I said interesting things.

And it's like, was it worth getting into another "arguing with strangers on the Internet" cycle? Part of why I engaged in the way I did was because I was coming off a period of answering other people's questions, so it was, at first, just one more of those.

But afterwards I realized that what I had disturbed was the belief system. The original thread was an attempt to confirm B's belief to herself: that's why it was done in a leading manner. A lot of comment threads proceed along those lines. When I just wander in and negate that, defensiveness is immediate. Saying "it can only be these two things" is only condescension if you're certain that your other way is already right. B wanted to brush it off. What I was doing was starting the "put on the glasses" fight scene in They Live.

And I think part of why I've gotten better at navigating those threads and critique generally, even if I might be overbearing or "condescending" at times, is because I can recognize when a principled defense is taking place. Good technical discussions start from a place of philosophical credibility. They don't start from norms("this way is best") and then question-beg their way into justifications. They lay out the assumptions of what's true and what's being achieved, like "eliminating a form of error"(one of the goals I outlined in that thread, and the one which ultimately made B concede) and then find conclusions inductively, deductively or abductively. Once you get away from the philosophical goal and only aim for winning the argument, you start crafting harmful rhetoric.

So the answer for me lies in philosophical training: you do have to intentionally "turn it on" to think in those terms, but it lets you be more effective around criticism, to "dance" with it and see it as a process, not a prelude to violence.

And it is much harder to deal with open comments than any one specific critic, because those are subject to mob mentality. Offend a belief the mob holds in high regard, and regardless of the principles involved, you'll just get dehumanized right away. I try not to find myself involved with that stuff anymore, but it's like, yeah, of course I have beliefs.


Agreed.

Another adjacent PoV is improvement, not complete, is the steady state.

What I mean is, throughout our entire schooling career we did work and turned in assignments that got graded. They were done. The work was over.

Our professions aren’t like that. There’s no done. There’s always improvement.

Therefore every piece of criticism, critique, or feedback has some data in it (sometimes layered in poorly worded phrases that can feel mean) on how to get better.

Your goal is to figure out what that data is and whether it’s valid, then act on it.


> Therefore every piece of criticism, critique, or feedback has some data in it

Extreme Ownership teaches a mind shift of looking at criticism and thinking of it as 'GOOD'. Criticism is an opportunity to improve.


It can be manipulated by bad actors however, keeping someone constantly 'doing' for the other parties benefit and not noticing they never seem to actually get paid for it. It tends to attract NPD folks in particular.

Like anything, it's about balance. Sometimes, it really isn't anything you should be doing to fix (or anything you should change).


it can be helpful, for some, to give up on the notion of retirement altogether.

exist to exist the whole way through. do what you gotta do.

many SV people have probably also seen anecdotal evidence the $B crowd has this mindset. it's the $M crowd sweatin the small stuff.


> it can be helpful, for some, to give up on the notion of retirement altogether.

Yeah, perfect and ready to be exploited with no end in sight.

What are $B and $M crowds? Billionares and millionares? Do you have any personal insight into those or just read about it?


$B crowd doesnt think about it because 1) they pay people to do the micro level things (and in a hierarchy of concerns down to the micro) and 2) the micro doesnt move the needle for them.

To use an analogy if you're poor disputing a $2 charge is meaningful because it might double your disposable money. But if you're rich you could absorb 1000x $2 charges per day without even seeing a difference in your first 4 digits of your wealth. (eg 4522188456 squints to the same number as 4522180456)


> A high criticism tolerance is learned by understanding that ones self worth is not attached to output or delivery.

> You are not your lines of code.

These statements are sage advice. And while I believe them both to be correct, I personally struggle with remembering these things when it matters most.


The older I get, the more I'm convinced the secrets of life come in contradictory tuples, and the application of all elements at appropriate time and in appropriate ways. Zen koans were onto something.

{"You are not your lines of code", "You should feel proud when your code is good and embarrassed when your code is bad"}

Both of these things are true.

To the matter at hand, how to take criticism constructively, the key for me is bifurcating my emotional response from my logical one.

Emotional response is noted, thought about, but routed inward. Logical one is routed outward.

E.g. "This is the dumbest application of a bad sorting algorithm I've ever seen."

Emotional/inward: "That hurts. Am I a bad programmer? How did I not know this? Will I ever be a person who does know things like this? I respect the person who's telling me this: do they still respect me?"

Logical/outward: "Fair. What algorithm would you have used in this application? If you have time, can you walk me through how you would have picked it?"

People usually screw things up when they don't hold space for their own emotional response and commingle it with the logical one (e.g. manufacturing a logical justification for what is really an emotional feeling).


> the secrets of life come in contradictory tuples

A great phrase for what I've been noticing about my life as well.

{"You should be okay with who you are", "You should always strive to be better"}, or {"Desire is the root of suffering", "Being passionate about a goal is the only way to fulfillment"}

Finding the nuances in these phrases and living in the bubbles where they are not actually contradictory has given me a lot of peace.


I disagree with the second slightly, because we have a very limited amount of time in which to produce things that matter, and we spend the majority of that time producing code as developers. It better be important to us, or we should be doing something else.

Now, what we should realize about the code isn't the thing of value. It's what the code does and how it does it, that is the runtime output and the ability to express the intent to produce that output to a programmer who hasn't seen the output or the code before or in a long time.

Criticism is the best opportunity to improve those aspects of the code you write. So it should be of equal value to you as the lines of code the criticism is addressing.

Not all criticism is valid, even well-intentioned constructive criticism. Experience teaches you which critiques to accept and which to reject.

The only way to gain that experience is to solicit criticism from others, and give it to others.

No, we are not just our code, but our artifacts are a part of us, as we are a part of them. So we should be kind when giving criticism and gracious when receiving it. Because what we choose to do with our time matters.


Anecdotally, I had the opposite experience!

> You'll find that the people that break down at the slightest criticism the most are those that were criticised the most as children as well. Those that had no room for being anything other than perfect. Where value was obtained from performance.

My childhood fits this.

> "Anti-fragile attitude" when it comes to criticism is not built by tolerance

I DID learn these by tolerance!

> self-acceptance and compassion. And these values are learned early on.

I learned these LATE on, in college. I feel like it's typical for a kid, but I was insecure and very much afraid of failure. But when I encountered sustained failure despite my best efforts, it pushed my "attached to performance" ego to the breaking point. That ego broken, I was forced to decoupled my sense of self worth from my performance. I didn't do it consciously, either; it sort of just happened one day. And I literally mean on a day. I felt it the day it happened. It felt like a weight had been lifted, and I found myself unable to care as much, just all of a sudden. I wondered if it was depression, but I felt happier than I ever felt before.

That nerfed my performance somewhat, since it's no longer driven by a frantic self-flagellatory imperative to prove my self-worth, but it also made my quality of life much higher, which I consider an easy trade.

I still care about what I do, and I very much still try to do a good job. I'm just not terrorized when I don't. I feel bad when I don't, but not "I'M A PIECE OF SHIT" bad. It's a more impersonal bad. It also allows me to sincerely welcome criticism; there's no sting to it at all unless I did something colossally stupid and/or the criticism is, like, downright verbally abusive or something (which it's never been so far :p).


I find this to be an incredibly well-balanced and mature measure of one's self. You should be proud that you were able to reach this level of self-reflection and clarity. Many people never get there, so kudos to you.


College is not late to learn this. Many people never learn at all.


To add to this.

Self-acceptance and compassion can only develop when you have a place where you feel physically, socially and emotionally safe as a base you can return to when you need to re-center.

Safety gives you permission to take risks (financially, emotionally, physically, socially) by having a place to regroup.


> Self-acceptance and compassion can only develop when you have a place where you feel physically, socially and emotionally safe as a base you can return to when you need to re-center.

This is something many teams misunderstand or are completely unaware of. Demonstrating understanding and compassion to one's colleague's will increase their abilities to communicate and work collaboratively.


well said :3


Agreed. Right now a lot of very unsafe behaviors are ramping up (predatory and at work and in many of our some of our personal lives), and recognizing when it's actually time to withdraw and when it may be because we're not actually safe is important.

Additionally, physical health issues and pain can take away our feeling of safety, and sitting on our butts all day is REALLY not healthy. But it's hard to notice when it creeps up on us.


> You are not your lines of code.

I think you actually are, in a very real sense. Someone else would have written different lines of codes. The lines of code are a function of yourself, an inherent part of you. Criticizing the lines of code criticizes that part of you. You can’t criticize a novel without implicitly criticizing its author. When we criticize an LLM’s output, we are typically criticizing the LLM. Perceiving criticism of one’s own work as something personal is only natural, and logical.

Now, if the criticism is of a honest mistake, you can learn from that, and own the mistake – show responsibility for it by acknowledging it and correcting it. Of course, that presupposes that you agree that it was a mistake.

Often things aren’t that clear-cut. There can be genuine differences of opinion and of judgement. Of course, one is biased towards one’s own work. It helps to be aware of that bias. It also helps to think in terms of picking your battles.

If you don’t quite agree with a criticism, it can also help to give yourself a chance to change your mind a bit. Maybe later you’ll actually mostly agree with it. And that later changed you isn’t the former you that was criticized. Win-win!


> I think you actually are, in a very real sense. Someone else would have written different lines of codes. The lines of code are a function of yourself, an inherent part of you. Criticizing the lines of code criticizes that part of you. You can’t criticize a novel without implicitly criticizing its author. When we criticize an LMM’s output, we are typically criticizing the LLM. Perceiving criticism of one’s own work as something personal is only natural, and logical.

I disagree on the strongest terms. You need to work with a mindset to your own growth an evolution. It was me who wrote these lines of code an hour ago, but I would not have known to write them a year ago and I will know better than to write them like this in another year's time. Possibly I wouldn't even write them like that now, having thought about them for an hour.

I am not a perfect coder, some Omnipotent god. Everything I write is a tradeoff of my current set of knowledge and the pressures I'm under and is therefore inherently flawed.

If someone criticise my code it's because they either know more than me, in which case I have learned why I shouldn't have done that and will adapt for the future, or it's because they know less than me and I haven't clearly explained the tradeoffs in which case I have learned that I need to express myself more clearly and will adapt that for the future.

(Of course it might just be because they didn't bother to read my commit message but that's a different problem)


Part of this reads as if you're not allowed to be criticized for some reason. How is "I am not a perfect coder" really different from "I'm inherently flawed"? Being flawed just means you're not perfect. People are flawed. Everyone is. One doesn't have to feel bad about it. One only needs to take responsibility for it. And then one can actually feel good about having acted responsibly.


> How is "I am not a perfect coder" really different from "I'm inherently flawed"? Being flawed just means you're not perfect.

If you believe that your coding ability is an inherent part of you, then they are not different. If you believe that your coding ability is an ever-changing attribute of you but not core to who you are, then they are very different.

If x is 5, then x + 5 and 10 are the same thing. If x is 3, then x + 5 and 10 are not the same thing.

A good question to ask is which model is more useful, or which model is more likely to lead to various outcomes you might want. "Me=my code" is pretty good for producing top coders and winning competitive situations. It also tends to produce burnout and assholes. You aren't stuck with always using one or the other, either. A lot of people start with "me=my code" when younger, then switch partially or fully to "my code=my code" later when their initial model starts leading to conflict and inefficiencies in a system larger than just one or a few developers. (Or they start finding value in non-coding pursuits.)


> Part of this reads as if you're not allowed to be criticized for some reason.

That was definitely not my intent, and I'll take that on board as an area to improve on :)


By god, that's Deleuze's music!

I disagree that the code I write is "part of me." It expresses a series of ideas that I had. And every therapeutic modality I have tried would have failed if I didn't have the implicit understanding that I have something like a soul or an essence that stands apart from my thoughts and feelings. My thoughts are just random noise in the grand scheme of things, including this sentence.

I can't stand the way that some people write, but that doesn't amount to a criticism of them as a person, unless I choose to make it about that.


Sure you're not criticizing them as a person, but let's say they really like what they wrote. It's their masterpiece. Then someone comes in and says it's garbage that shouldn't have been written (intentionally using strong language because people do that).

I don't understand not feeling bummed out by that type of critique. Sure it's not about you as a person or your values, but dang that sucks.


"Garbage that shouldn't have been written" is verging on a personal insult. That's not the kind of criticism I had in mind.


Got it, I agree that's a harsh example I wrote.

When I read "I can't stand the way some people write", I get a similar sort of feeling. The intention is not that it is a harsh statement, but to me it's very harsh (although not on the same level as the example I wrote).

To me, this highlights the problem with criticism and why the thread is a bit divisive. It's a gap between intention and perception with different end results based on how feedback is perceived.


You are not the worst picture of yourself ever taken. The picture does reflect a subset of you: at a particular place, at a particular time, taken from a particular angle. You are in the photo but the photo is not you. You can just take a better photo. People do this all the time, it's not a big deal. While it's normal to be embarrassed by a bad picture, it's also normal to chalk it off as bad lighting, bad timing, whatever.

That's what your code is. It's a picture of your thoughts at a particular time, constrained by the process of translation onto the medium on which it is being viewed. Some part of you is in there, but the thing itself is not you and it doesn't make sense to view it as a completely accurate representation of yourself. You got caught thinking with your mouth open, oops. Just try again.


People are saying this isn't how it should be, but I want to share that this is closer to how I experience the world than not.

The attitude of desiring to learn is what keeps me sane, but I've learned that feedback like "X is bad" often comes from someone's subjective experiences in a particular situation. They then take that and apply it globally. It's hard to have conversation with such strong opinions.

Having a trusted coworker who has a disagreement, followed by a healthy conversation will result in either the change they want, the original staying, or a new solution that's better. Growth can come from all 3, depending on the mindset going in.


Getting stronger through stress is not the solution, but a common initial path to the larger solution.

I think you're closest when you say "A high criticism tolerance is learned by understanding that ones self worth is not attached to output or delivery"

The compassion part is unnecessary.

Any criticism you take personally is ultimately a fictitious story you're choosing to accept about your identity. We are the ones choosing to take an event like a comment, apply a label of snarky, and allow it to set our emotions in the moment.

The snarky comment itself has no objective meaning. It only takes on meaning when we decide to interpret it negatively. We could just as easily screen the comment for actual valuable feedback, and if there is, implement it. And now you have a win. How smart of you, you should feel good about that.

The real approach is rising above and seeing things for what they really are, and seizing opportunities to look at things differently for an optimal outcome.


My experience has been that people who say “you are not your code” use it as an excuse to be brash in PRs, and as someone who sees code as a sort of art, the adage is even less-appealing. Surely there is a way to be considerate enough in the code review process such that “you are not your code” need never be said at an organization.


Yes I agree. Some people are just rude or mean and they want to absolve themselves of behaving respectfully by claiming that it’s the other party at fault. But there are two people involved in any conversation and both are responsible for keeping it respectful.


Good comment and I agree. I am in no way advocating becoming numb to criticism. The point is to create enough emotional distance to it so you are able to "swallow" it.

I think it is parents job to introduce small disappointments for children. This way they learn to handle larger disappointments. I think we need to teach ourselves to handle criticism in the same way, in small doses.

About not seeing it as criticism, I am not completely sure what you suggest. But I have analogy with improvisation theatre. There people celebrate mistakes, because fear of mistakes is what blocks you from improvising.

So instead of changing the name (to something else from "mistake") to overcome the fear, the fear is met head-first by celebrating mistakes. Similarly, I think the name "criticism" is not important, and if you can overcome the negative connotation for the word for you personally, there is no reason to change the word.


> You'll find that the people that break down at the slightest criticism the most are those that were criticised the most as children as well. Those that had no room for being anything other than perfect. Where value was obtained from performance.

It took me a long time to realize this applied to me. I don't ever remember explicitly being criticised as a child but I reached adulthood with a wicked need for perfection and "achievement" and a subconscious aversion to criticism. I still find it hard to feel valid and valuable in the world other than through work. But all of these behaviors have undoubtedly held me back in work and relationships.


I nearly 100% agree with you accept on one point. "You are not your lines of code." is putting your head in the sand, but there's a way you can frame PR feedback (and other feedback) which re-associates your identity with your output (because disassociating is a terrible idea) but brings joy back: these people are coaching you and giving you a gift. Your skill level is absolutely included in criticism, but only such that you may grow.

This only works if you truly believe that you are accepted by your team at all stages of your development, and if the feedback is delivered with the intention of helping you grow.


Make your code (or other engineering deliverables) beyond criticism. This state is achieved when every decision in the code is either due to a hard external requirement that we all agreed on (it has to be done that way) or else is made according to externally documented and referenced best practices.

If someone disagrees with anything in the code, you can point them either to a requirement that would have to change if it were done differently, or else some documented best practice (whether in-house or some famous external one) would be violated.

Have a reason for everything. Why is there a linear search in that function? Because the number of items is at most ten, and not expected to ever exceed around fifteen; moreover, the function is called only a dozen times, on first boot after a firmware upgrade.

Also, be the most stern critic you can be, of your own code, criticize it yourself and fix everything, so you don't leave much for anyone else.


Right. Consider whether this really impacts you as a person.

1) Who will see it? What will be the consequences? If no one, then look past the delivery and consider just the content.

2) Use it as useful feedback and information that you otherwise might have never gotten. Consider how many people may have thought similar things but were too nice to say anything. Finally someone spoke up and told you what others were thinking. Then you will come to regard the (private) exposing of a flaw with appreciation!

3) Treat it as you would any focus group, it is just one data point. Sometimes the frustrating thing is when the criticism is wrong and is just a product of how things are done locally. If you are un a full-time job, just embrace how things are done. If your solution serves many other clients, you may have to file it among other priorities.

When you start to focus on the work and the outcome, you don’t focus on criticism as a personal attack, even if it was meant as one you extract the actual usefulness from it.


> To take it even further...why see it as criticism at all? You are not your lines of code.

You are not your work. You can write incredibly crappy code and still be a fine person. You can write beautiful, elegant code and be a terrible person. Separating your work/code from your self-worth is hugely important.


The lines of code are not even your lines of code!

They are lines of code until you reveal them to the world. Then they are part of the world. When someone else improves them (or tries to improve them) you must rejoice that the ideas you have given the world have attracted enough attention to be criticized and improved!

Only by keeping the code private would the criticism be criticism against you. Once you distribute the code, the only truly negative thing someone can do, from your point of view, is to ignore the code.

That’s my point of view anyway. Elsewhere in the thread someone commented positively on your self awareness and in parting I must echo them.


"You are not your lines of code."

Agreed. And nobody's lines of code are perfect.


Just want to point out that being "numb" is NOT THE SAME as just not taking something personally.

As I mentioned in my other post - I make things that I find enjoyable, and while I am not 'numb' to criticism, I just dont let criticism to affect my personal Mortar in the foundations of who I feel I am.


Too much criticism destroys self-esteem. Coaching is a better alternative. Also, pushing children to be perfect is a recipe for disaster. Carol Dweck's Mindset comes to mind.


Read this in Adam Grant voice.


On the other hand, in this industry often what one engineer identifies as a mistake another might be neutral toward or identify as a best practice/correct.

Our industry doesn't have many standards, and it's not nearly as objective as some think. And often criticism isn't intended to improve an outcome: it's intended to bring others' in line with the critic's view of how it should be done.

All this to say, I'd just add to your comment that one must also develop the ability to discern when a critic is identifying a true mistake and when they are simply parroting a fad or injecting their subjective beliefs into the review.


Excellent response. By and large the field is a cargo cult where the members are particularly adept at constructing straw man and false equivalency arguments to support specific preferences which are not rooted in anything resembling objectivity. See "Clean Code".


While it is hard to hear criticism directed at you personally, or at something you have put your heart and soul into developing; discerning between constructive criticism and 'knee-jerk responses' is critical.

Maturity means that you can accept criticism that is intended to help you improve. Making you aware of an issue or directing you towards a better solution can make your code or product a better one.

Simple insults thrown from the 'peanut gallery' should just be ignored. If you have built something using a particular language or framework on a particular platform; you should expect those who don't like those things to throw in their two cents without even trying to understand the problem you are trying to solve.


I feel like I'm constantly fighting this with my manager at my current company. I receive a lot of feedback along the lines of, "well every other company I've worked for did it X way." For example deployments: company policy is that anyone can deploy any service from master at anytime, so if you merge your code into master, you're saying "this code is ready for production." My manager kept telling "we" should fix that because every other company he worked for deployed from staging into production.

I've found managing situations like this to be the hallmark of a good architect / high-level engineer. I really admire people who are able to think quickly on their feet and push back against people who push for ignorant or unnecessary changes. And it is something I am not good at.

I've taken to silently fixing peoples' mistakes as to avoid these kinds of discussions. While I'd really like to say, our architecture did not force you to push broken code into master hours before you went on vacation, my (agreeable) personality prevents that.


As an engineering leader I always insist that everyone follows the "ice cream" rule in any debate or discussion about how something should be done. Only technical merit counts. Never personal taste.

Whether it is a design pattern, deployment strategy, or choice of language, if your argument has no technical advantage then you are just expressing your taste preference. This is where someone will likely call you out by asking, "are we discussing technology or ice cream flavors?"


> This is where someone will likely call you out by asking, "are we discussing technology or ice cream flavors?"

I'll steal this and see how it turns out.


> (Sometimes anger is healthy, it may also be a signal to us that our boundaries have been violated.)

Exactly. And if that boundaries get violated repeatedly in the same situation (especially by the same people), it is fine to release that anger in a controlled way. I've come to the conclusion that some folks haven't left the state where they sometimes need a (vocal) pat on their hand to realize they crossed boundaries they shouldn't cross. If you can play that game, congrats.

Also, do not swallow your anger. Find a non-destructive, non-harmful way to release it. As anger is a physical reaction, the easiest way is to go for a walk, ride your bike or whatever. Whatever floats your boat should be fine.


As much as i like the concept in general in life, in this case its just "you are not your lines of code".

Also people who criticize people make a mistake kind of.

Always criticize the code, not the person.


Well it is not unlike criticising an artist's paintings. The things you make are a mirror of who you are because you use your life experiences, knowledge, and preferences to make them. By criticizing what you make, they are also criticizing you by proxy.

Now sure it depends on the type of criticism in question. Finding a bug or other practical problems obviously isn't, but talking shit about a way something is arbitrarily set up that the author thought was really neat would absolutely be.

This line of thinking also reminds me of how every time some actor or director or whatever is implicated in some scandal, their work is also tainted forever instead of being taken at face value for what it is. Can we separate the artist from their art? Is it even possible? I doubt it.


You had better believe that when artists get a commission, the patron gets a say in how the work looks. When you are in a band or ensemble with other people, they also get a say in how "your" part of the music sounds. This is the same for code. Code you create with and for other people isn't really your creation in that way: all of it is a collaborative effort.


I don't think that really changes anything, just restricts the effective criticism to that specific part that you did. Though I suppose the more it's intertwined the less it matters. I don't think anyone really cares about that one function in the company codebase that's been rewritten 20 times by different people, and far more about that part of the game they coded themselves at a gamejam.

There's always external influence, but if you're involved you obviously added something and in most cases it can be scrutinized on its own merits.


To rephrase, criticism/review of your code doesn't reflect a value judgment of you as an individual any more than an artist's patron asking for more blue-ish tones reflects a value judgment of the artist. The patron doesn't think that you have any moral faults because they want more blue, they just want more blue. The same goes with criticisms of code.


The problem is that it's just unprofessional.

Code is made to be efficient in a compagny, it's not "personal" or here to make you have feelings. So if you can't discuss efficiency because you'll hurt people it's just bad. If you do art, you create art with respect to your own sensibility emotions so yeah be weary of criticizing someone's art.


For those who are passionate about their work, some of them they put their person in their code. As someone else pointed out in a comment in this thread, it is about acceptance that none of us is perfect, we don't/can't write perfect code and that is totally ok as long as you did what you could (both in terms of the output and the effort to improve the quality of the output). Unfortunately this is largely conditioned by upbringing so easier said than done. But awareness of this itself can be a helping factor in coping with criticism.


But really thats what "you are not your code" means.

As much effort and ego you put in it, it will still suck in some way.


There's also this non intuitive fact that the critics you'll hear about are usually judgment free, at review time. Whereas you'll be judged harshly on your committed code and will probably never hear about it. We could summarize it with something like "hard critics prevents hard judgments".


This is like the fundamental attribution error but applied to the self.

You wrote some bad code. You are not a bad code writer.


I once worked with an absolutely horrendous programmer named "Sam" who enjoyed the smell of his own farts so much that he he always smurfed his own name or possessive prefixes like "sams_" and "my_" in variable and function and file and form field and database column names.

And he loved to get "artistically creative" with "elegant variation" of variable names and naming conventions, permuting and mutating them at every level, and making up cute unique abbreviations by randomly dropping characters to save a few keystrokes of typing, then spicing it up with whimsical nonsense like "aardvark" and "pancake", instead of boringly predictable consistent correctly spelled descriptive big-endian names like I prefer. (He claimed that made it easy to grep the code.)

He would even alternate between CamelCase and lowerCamelCase and snake_case and Snake_That_Ate_A_Camel_Case and UPPER_CASE and runtogetherlowercase in the same fucking variable name, occasionally throwing in the random "sam_" and "_SAM" prefixes and suffixes for good measure!

He also liked hard wiring the path of his home directory into code, of course. He was like a territorially possessive dog pissing on all the trees and fire hydrants he could find, and all the code he wrote sucked.

That made it extremely hard to separate the "arteest" from their "work", and not to criticize the person as well as the code. But at least it was easy to tell at a glance which code needed to be tossed out and rewritten.

Please don't be a Sam! There are some people who do deserved to be criticized as much as their code.

Elegant Variation (which is a terrible idea despite its fancy sounding name):

https://en.wikipedia.org/wiki/Elegant_variation

>Elegant variation is a writer's substitution of "one word for another for the sake of variety". The term was introduced in 1906 by H. W. Fowler and F. G. Fowler in The King's English. In their meaning of the term, they focus particularly on instances when the word being avoided is a noun or its pronoun. Pronouns are themselves variations intended to avoid awkward repetition, and variations are so often necessary, that they should be used only when needed. The Fowlers recommend that "variations should take place only when there is some awkwardness, such as ambiguity or noticeable monotony, in the word avoided".

Big-Endian Naming Molds, Code Smells, Smurfing:

Felienne Hermans: How patterns in variable names can make code easier to read

https://www.youtube.com/watch?v=z7w2lKG8zWM

>Name molds let you structure variable names to maximize the chance of different programmers guessing the same name.

https://news.ycombinator.com/item?id=31472523

DonHopkins on May 22, 2022 | parent | context | favorite | on: Felienne Hermans: How patterns in variable names c...

I like to use "big-endian" naming molds (love that term!) to define sets of names that when you alphabetize them place related variables next to each other. (i.e. in a completion menu or browser.)

For example, left_foo and right_foo are little-endian, since the least significant word comes first, so they'll be a long distance away from each other in an alphabetized list.

But foo_left and foo_right are big-endian, since foo is more significant than left or right. So they will appear one after the other in an alphabetized list.

Common suffix words are _x _y _z or _min _max, or _left _right _top _bottom, of even singletons like _enabled _loaded _error etc.

But when you combine multiple dimensions together in names, you need to think of which dimensions are more significant, based on how the variables are used, so use foo_x_min foo_x_max, if the positions are important, or foo_min_x foo_min_y, if the ranges are more important.

Sometimes it's hard to decide or ambiguous, so just try to be predictable and the same as all the other code. Think of which variables should appear closest to each other in an alphabetical list.

And avoid middle-endian or random-endian (or sentence-grammar-order-endian) like the plague. A variable name should probably not be a grammatically correct sentence.

Another really annoying linguistic naming smell is "smurfing," where all of class Smurf's instance variables have smurf_ prefixes. Or where all the classes, methods, or instance variables have an "xyz_" prefix where "xyz" is the name of the project or library. Arrgh!!!

SnowHill9902 on May 22, 2022 | prev [–]

Agreed. When dealing with real values, it’s favorable to explicit the units: weight_lb, length_cm.

DonHopkins on May 22, 2022 | parent | next [–]

Yes, explicit unit suffixes are good smurfs!

Also: eschew Bill and Ted's Excellent Postfix "_not", which inverts the meaning of the variable name. That's a most totally bogus code smell, dude.


Could "Sam" even pull that stuff anymore with PR review processes? I would just comment on every variable name in the PR to "remove sams" or "make clearer".


https://twitter.com/secondmentions is a collection of instances of said "elegant variations".


you should make it a post of its own ><


This assumes all criticism is made with good intentions. However that is not always the case.


The criticism can be useful even if it does not have good intentions. Usually those who want to hurt you, know just what to say to hurt you. If the criticism is completely baseless, it often does not make you angry, as you can trivially say why it is baseless. So it often such criticism also has an element of truth.

If you are angry, it is difficult to discern what are the truths. So it is useful to approach criticism both from good and bad intentions both in the same way. In other words, by default, if you get angry, try to figure out what in the criticism makes you angry.


I’ve been in this relationship. If someone knows what to say to hurt you, and uses it with precision to cause that hurt, they’re not on your team, even if their criticism isn’t “baseless”.

In the professional world, giving feedback with tact and respect for the contributor is what we get paid for and enables a team to contribute to the company’s success.

If someone on the team doesn’t feel like they’re treated with respect, even when their work needs improvement, it doesn’t matter whether the feedback was given with good or bad intentions.


Nothing you say is wrong, but it's somewhat tangential to what the parent is saying. If someone is saying things to you with the intention of hurting you, you should do whatever you can to minimize interactions with that person; break up with them, try to get them fired, try to switch teams, get a new job yourself, or whatever. This does not contradict the idea that you can learn from people who aren't trying to help you, though.

Of course, the dangerous part is that you may learn the wrong thing. Extracting constructive feedback from criticism that was not intended to be constructive requires a certain level of self-confidence and psychological safety that's only possible when it's an unusual event rather than a continuous drag on your self-worth.


Fully agree.

If there is a person consistently giving hurtful feedback and I would be in a position to get the person fired, I would do it. (And I have done it.) And I would not work in such a work environment. At least 50% of programming work in typical organizarions is about getting along with people.

But I have found myself in environments where I needed to tolerate this to a degree. And the only thing you can ultimately change is your own attitude. If you can see that hurtful criticism may be even more truthful than other criticism, it helps to develop the right attitude.


But that's not under your control. Whereas your reaction to the criticism is under your control.


That probably flies straight in the face of neuroscience.


Not the internal reaction, but what you do externally -- what you say, what you write -- that's generally in your control.

AIUI, CBT's primary method is to convince you to pause between feeling and acting, so that you can ask yourself if you have made an accurate assessment of reality and can plan an appropriate response.


If you truly have no control over what you think and feel, then you are lucky. You can satisfy yourself with enjoying the ride, free from the burden of being responsible for yourself. If you have so little control that you cannot even take solace in the knowledge that you have no control, then obviously this philosophy will only bring misery to you. In which case, why adhere to it? If you have so little control that you cannot even free yourself from a philosophy that makes you miserable, then try hitting your head with rocks or hard drugs. With enough brain damage, anything can be forgotten. Even unproductive philosophies.


Criticism made will ill intent can be disregarded. Shame on the critic.

(Easier to say than to embrace, of course.)


> What you have encountered is actually one of the necessary steps to really become "a senior developer". And congratulations, you have already passed the biggest part of that hurdle: becoming aware of the issue.

Fully agree. I tell people, if you cannot be humble about your code, you're going to deter yourself and others. It's okay to admit you may have "screwed up" (mistakes happen to everyone, even in production) the big thing to do is learn what was wrong, and if there's any steps you could take moving forward to avoid that mistake, the person commenting on your mistake probably made the same mistake, and worse it made it into production and now its ingrained in them.

Developers become adamant to prevent issues they or fellow team mates have ran into, even seasoned developers run into issues. Hell, even architects, and I've seen CTO's do the dumbest decision making.


+1 on the above. Your code is not you, and everyone makes mistakes. Literally the only singular person I couldn't work with was with the most blindly arrogant person I ever interacted with, and I left that job because of it. That's over several decades as a developer. In the end, your code isn't perfect and there will be better alternatives on how to do things discovered over time. Most of what you write won't live more than a decade, and if it does, feel sorry for anyone that has to deal with it.

It's about doing the best you can, and helping others to do the same. Critique on your code isn't critique about you as a person. Sometimes personal statements can leak in and that's different. I find that for the most part, critiques are only about the code, and it's the author that turns things personal which is where any argument is already lost.

This doesn't mean you have to agree with a given assessment, and they don't have to agree with your approach. As opposed to some other comments on this post, I will say that I think the best way to learn how to deal with it is to just keep working, and when you do feel yourself getting emotional, take a step back and review. You rarely are on the spot to respond at that moment, especially for typical PR processes and feedback. Try to put yourself in the mindset to assume at first you are wrong, and second that you are not interpreting the message as intended. Interpret the best possible view of the person and the message sent.

It's really hard to put yourself in that mindset, and it definitely takes practice, time and experience. The best thing that you can do from the start, is stay quiet, step away for a moment, and re-evaluate before responding if you feel emotional.


Thank you, it sound to me like meditation could be a way of developing an anti-fragile attitude?


Strong yes^ I can point to several instances where my meditation practice helped me to slow down enough to respond to a situation constructively rather than react to it destructively.

I’ll also add that journaling is an absolute game changer in terms of actually debugging/thinking through problems.

Meditation = “give this a minute or day to simmer”

Journaling = “now that I’ve cooled down, what are my actual thoughts on this matter”

I’ve been astounded on dozens of occasions to learn what my own thoughts really are, for the first time, by seeing them on paper. I.e. it subjectively feels like I don’t think the thought then write it, but instead I write it, read it, then think it.


I would recommend "Focusing in Clinical Practice: The Essence of Change"[1] if you're into reading books. I once took a semester-long course on emotional-based therapy taught by one of its practitioners and it really helped in processing and engaging with my own emotions.

One of the core techniques is to visualize the emotion as another person as you try to talk to it and discover more about what it is you're feeling, eventually coming to a strong connection with the feeling. It's been an epiphany trying to process emotions this way for me.

[1] https://www.amazon.com/Focusing-Clinical-Practice-Essence-Ch...


Yes, I believe meditation would be useful for you. There are many kinds of meditation, and I have experience only on very basic "sitting". Others have suggested developing compassion, and I know some have found compassion meditation helpful in developing that, but I don't have the first-hand experience.

I have found meditation to help me to stay calm in situations, and even if I am about to get angry, to become aware of it in situations, so I can remove myself from situation before acting. And also to calm down more quickly. When you can process the criticism from a better place in yourself.

Also, I have found tai chi to be have similar effect on me.


On that topic, I would love to hear from folks who introduced/did meditation to/with their children (say about 11-12 years old)? Is it a good idea? How did it turn out for you?


You can introduce them to meditation from early age on, they just usually lack the patience to do it for longer or intense, when they are small.

I myself started meditating on my own, when I was 11/12 so that is definitely an age, when you can do it serious.

My own kids (< 5) are too small yet, that I would do serious meditating with them, but some sort of pre exercises, like just sitting still in nature and observing, do work since the beginning.

Don't push them obviously. Rather give them a chance, to explore mindfulness and consciousness with you. I can also recommend Tai Chi/Qui Gong as an more active path towards it.


The paradox here is that I don't want to make others anti-fragile with my own feedback. If I have time and patience, I try to have a conversation with them about what they were trying to accomplish and why they have not considered other alternatives. In a sizable fraction of cases, I come away convinced that what they are doing is reasonable, or at least the effort of making changes is not worth the payoff. Otherwise, I hope that the process is of us coming to a conclusion together rather than me pulling my rank/seniority.

I am also not a fan of working with "you are an idiot and you are doing it all wrong" people. Even if they are technically 100% correct, they should have shown me some respect by having a conversation to double check their assumptions. I maybe physically robust, but I still enjoy being transported by a bus with well working suspension.

However, an out here is "time and patience". There is no way to know what all other people have on their plate, if they are tired or preoccupied with personal matters and so on. If they are being unreasonable, it's certainly worth keeping in mind that it may not be because of you.


https://www.academia.edu/6037370/Some_Observations_on_Robust...

> We can think of a tree as a dynamic system in equilibrium with respect to the forces of gravity. Tree growth takes advantage of horizontal symmetry around a vertical axis as a way to distribute gravitational forces so that the downward force due to gravity on one side of the tree is balanced by the downward force of gravity on the other side of the tree. When the wind blows, the new force acting on the dynamic system of a tree responding to gravity temporarily shifts its current state, as mea-sured by the tree’s position in three-space, to a nonequilibrium configur-ation, and when the wind dies down the tree returns to its equilibrium configuration, just as models of linear systems with stable equilibrium points indicate how a dynamic system responds to a transient impulse. Let us imagine the tree as being represented by a vertical, straight line ..


Emotions are good. I disagree with everyone telling you to ignore your emotions. We're wired to remember emotional moments and to forget when we're indifferent. Most of the criticism I didn't fix wasn't because it was too emotional, it was because I couldn't care. If something sucks, at least there's a better chance you'll learn the lesson. Stay angry but make sure you learn the lesson.

You need to instead translate the criticism into something actionable. Always have in the back of your mind the question what to do different and when. And when responding to people, remember to respond in a way that they will want to criticize you again (it's ok to argue, but not ok to turn it back into something personal).

I don't try to control my anger at all. You're missing out on all the evolutionary benefits of sharpened memory in important situations. Stay nice and be angry with people instead of at people. Make sure they don't take it personally.


> So you need to develop an anti-fragile attitude towards criticism

The most common way I've seen this done is by becoming numb and not caring at all or thinking others are worth less than you so you shouldn't listen to them. Not options I'd choose for myself.


I think it's OK to numb yourself from certain types of feedback like insults, general toxicity, passive-aggressiveness, and so on. But I think reacting to those things should come from a place of empathy: for example I don't know what's going on in someone's life that might make them so toxic in their feedback, the toxicity is probably an outlet after many months of pent up frustrations that are the actual root of the issue they're venting about, etc.

I used to work in a customer facing support job, so I learned some strategies to keep cool from that.


Numbing and acceptance that shittyness happen are different.

I will strongly disagree that numbing is useful. I grew up extremely emotionally numb and distant. Looking back it never simplified things.


The knack is in detachment from your own views.

Numbing to me implies not caring, while detachment from your views can be born from caring about improving.

If you want to improve, this likely involves shedding some convictions you hold too close.


I understand that, just sharing what I see most commonly.


Bad example - Porcelain is constantly being shit upon!

-

To the OP - "Dont give a F"

I make quirky and weird shit that pleases ME. (physical things, like weird bike products, stuff out of leather, etc...)

Some people find them odd, or "why are you doing that?" -- BECAUSE I ENJOY IT, I dont give AF how you feel about it.


On the "anti-fragile" aspect of things, I studied Architecture in college and grad school (buildings, not software/system architecture) before transitioning to programming and the entire education model is built around dozens of critiques over the course of the semester. We don't have final presentations, they're Juries. Each semester culminated in working your ass off for weeks, pulling all nighters for days on end, then presenting whatever drawings and models you had to a panel of jurors who were assuredly going to rip you a new one. They weren't intentionally being mean, but you're a student, and there's plenty to pick apart as there's never enough time to think and do everything. Regardless of how good my projects were, after those final juries were done, I always felt like I'd gotten a heavy dose of criticism.

Going through that process over and over again has been incredibly helpful in my professional life, even though most of the criticism I receive is rarely structured like those juries. The first thing I learned is that it's rarely useful to try and refute or respond to the criticism directly in the moment. If that's your instinct, then chances are you aren't fully thinking through the criticism and responding from a more emotional state, which is not good. The key is to try and actually listen (rather than "shutting down"), remember the key points to process later, and to let the person offering the criticism know that you've acknowledged it.

Second is to realize that nothing is perfect. There is always room for improvement, things that you couldn't foresee, and things you simply didn't have time for. Obviously, the bigger those things are the more concerned you should be, but as your work becomes more and more refined, the criticisms become about smaller and smaller aspects of whatever you've done. The goal is not to get zero criticisms of your work, but to have the criticism that you do receive be about less and less important elements.

Third is that someone will always have something to say. Interpret that in a number of ways. If you're getting a code review, you're soliciting someone's opinion or your development process is dictating it. People will come up with criticism because that's what's being asked of them, and even if it's "perfect", responding with nothing makes it seem like they're not doing what they should. People like to offer criticism because it makes them feel important; they see a "flaw" you didn't, even if they don't really understand the totality of what you did. And while its disappointing to say, some people will criticize you for personal reasons, be it against you directly or because they think they stand to gain something by doing it.

Ultimately, you have to decide what is worth listening to and what is not. If nothing is ever worth listening to, then that's something that's likely more on you than the criticism you're receiving. It's also very tempting to discount criticism from certain sources because of past issues with that source. Process each criticism from them in the same way, regardless of the past, because you never know when they actually might have something worth listening to.


>Going through that process over and over again has been incredibly helpful in my professional life

I agree 100% with this. Art majors (depending on the school) go through much the same process, with the added bonus that artists can be even more capricious. E.g., "blue is totally the wrong color for that."

Filing the burrs off of your ego is often a good thing. There is an issue with some people who are just not structurally fit for that sort of thing, where the slightest criticism can make them collapse into a heap of self-loathing and depression. Discretion and discernment are important so that you don't break a fellow human. So the flip side is that being a part of critique juries is also training in how to give criticism, which is an important skill in and of itself.

Programming, especially in the open source world, tends to be a very solitary endeavor. It's quite akin to art in that way. And programmers tend to spend a lot of time up in their heads. And they tend to be rather blunt about their opinions. Getting some time in the reviewer and reviewee seat is useful.


> E.g., "blue is totally the wrong color for that."

That's a little of what I was getting at with some of the points above. Tons of criticism is just plain subjective. How do you evaluate the validity of someone else's subjective decision? The ultimate answer is that you can't if your response to it is to flip the table and leave the room.

>There is an issue with some people who are just not structurally fit for that sort of thing, where the slightest criticism can make them collapse into a heap of self-loathing and depression.

I agree, but I think that in and of itself is a bit of a different problem. A key aspect of the modern human condition is being able to deal with criticism. If the slightest bit of it will "make you collapse" then that's a strong indication that you need some professional help to learn how to deal and process things.

>Discretion and discernment are important so that you don't break a fellow human. So the flip side is that being a part of critique juries is also training in how to give criticism, which is an important skill in and of itself.

I don't disagree that teaching people how to criticize will help have that criticism be better structured, less aggressive, and more constructive overall, but the reality is that we can't expect everyone to have "the proper training". There absolutely were jurors that I had that were more about tearing you down than trying to help improve. Dealing with those people was a learning process in and of themselves.

>And programmers tend to spend a lot of time up in their heads. And they tend to be rather blunt about their opinions. Getting some time in the reviewer and reviewee seat is useful.

This points to the social nature of giving and receiving criticism. There needs to be emotional awareness from both perspectives. Programmers, as a generalization, tend to be more anti-social than other professions. A key aspect of social interactions is empathy; being able to see things from others' perspectives. When I look back at some of poorest delivered criticisms or responses to criticisms I've experienced in my professional career, they've come from the most anti-social developers.

Bluntness can have two interpretations, being straight to the point and/or not going into details. "This is poorly structured" is blunt, but doesn't attack or make things personal. "This is crap" is just as blunt, but has a far more negative connotation and interpretation to it. Neither is all that great of a criticism if they're not expanded on or explained.


The immune system metaphor is complicated because, while it is true that you build resistance, it's often not without some permanent damage, even if mild and neglectable. There may be an analogy for vaccines and constructive criticism somewhere.

Even muscle strengthening seems to require minor injuries to the tissue. Tougher but demaged.


> Tougher but damaged.

You're thinking scar tissue, which analogously would be a maladaptive response to criticism (inflating ego, projecting fault).

Muscle strengthening doesn't cause permanent damage unless you overdo it.


I've read that one of the ways that exercise increases muscle mass is through micro-lesions that your body goes on to repair. Not my expertise at all, but it's a thing, it seems. Googling now only shows content farm generated ads for fitness, unfortunately.


I've also heard that the growth mechanism is muscle tissue responding to damage caused by strength training / use. However, the result is not scar tissue that is "tougher". The result is more muscle tissue, of the same toughness that was there before, just capable of doing more work by virtue of a larger amount present.

Compare this to true trauma to the tissue, which results in scarring. Scar tissue may be "tougher" (less pliable) but it's not contributing to additional work. A better analogy might have been that broken bones grow back stronger, though even that requires that they are set right and have an appropriate amount of recovery time, which to continue the analogy, might be therapy needed to not be so brittle in the first place.


This comment is golden.


Without humility, growth is limited


A defect of being solo developer.


I don't want people to get the wrong idea from your immune system analogy.

From what I recall, exposure to environmental antigens as a child helps train the immune system to not go off on them later (as allergies).

Exposure to any particular disease is only a positive in your adaptive immune system response to that particular disease (and may cause problems such as antibody-dependent enhancement of related diseases, as seen in Dengue, and some Flu infections). For particular diseases such as chicken pox it's better to get them as a child as they have worse symptoms if first caught as an adult. For other diseases I don't know that it matters much. It's probably best to just never catch them at all. And then for diseases such as measles, you don't want to catch them ever (at least before vaccination); definitely not after you've caught other diseases.

https://msutoday.msu.edu/news/2020/Covid19-immunity-Yasser

> Does our immune system get stronger with every infection we fight off?

> To answer this question, let’s first discuss the two types of the immune system. Our immune system is composed of two arms, the innate and adaptive immune systems. The innate immune system acts fast (in minutes) after it recognizes a pathogen and, in most cases, eradicates the invading pathogens. During this process, the cells of the innate immune system, and their derived immune mediators/proteins, also activate the cells of the adaptive immune system which then develop memory immune responses toward these pathogens. Therefore, upon reinfection, the intensity of the innate immune system remains the same. In contrast, the adaptive immune response is much stronger than the initial exposure to these pathogens.

> So, to answer this question, our immune system doesn’t get stronger with every infection but the response of the adaptive immune system is much faster and stronger upon reinfection.

https://news.harvard.edu/gazette/story/2019/10/how-measles-w...

> Reporting today in Science, the researchers show that the measles virus wipes out 11 percent to 73 percent of the different antibodies that protect against viral and bacterial strains a person was previously immune to — anything from influenza to herpesvirus to bacteria that cause pneumonia and skin infections.

> So, if a person had 100 different antibodies against chicken pox before contracting measles, they might emerge from a case of measles with only 50, cutting their chicken pox protection in half. That protection could dip even lower if some of the antibodies lost are potent defenses known as neutralizing antibodies.


No. This is false. Even senior engineers can have this problem. It's not a differentiator for success.

This is counterintuitive but actually there is raw science to back the opposite fact up. I'm not joking.

The more delusional you are as in the less ability you have to take and accept criticism the more likely you are to be successful. There is a positive correlation for this verified by science.

It gels with my anecdotal experience too. At the top end of success those guys are the most delusional and least accepting of criticism, for example Elon musk or Steve jobs, etc. Etc.

But even on the lower end of the spectrum, senior engineers it's there too. For example people who claim they are able to unbiasedly accept criticism are often the people who are worst at it.

The reason for this is not any sort of deliberate emotional reaction or anything like that. But rather because the brain actively deludes you from seeing the complete truth. It pushes people to construct artificial scaffolds of logic to uphold their existing beliefs.

Senior engineers are not immune to it nor are they better. What determines the senior role has a lot of factors and definitely not all the factors are related to the actual formal senior rank. A lot of it is luck, time, politics and other bullshit that gets people that rank.

Everyone builds these ideals about their identity, their rank, and their engineering ability. The reality is that a lot of it is delusional. By deluding yourself it becomes easy to include other people in your delusion as well and that's how a lot of hierarchies work.

Not saying their aren't competent people out there, but don't fall for the false belief that a rank like "senior engineer" conveys a certain level of emotional maturity to accept criticism.


If the 'delusion' stops useful output, they won't be very successful.

If the 'delusion' is useful and produces better output, then is it really a delusion?


>The more delusional you are as in the less ability you have to take and accept criticism the more likely you are to be successful. There is a positive correlation for this verified by science.

Perhaps you could share this verifiable science?


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.


>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.


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.


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.


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.


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.


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.


> 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.


> 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.


So true.


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.


“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.


> 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.


> 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.


> 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.


At some point, I realized that there's a disconnect between "me" and "my work".

My work is a result of circumstance, like, what my mood was when I did it, how well I know the particular domain, if I've seen solutions to similar problems before, what tools were available and understandable to me at the time.

In other words, the quality of my work depends much more on what the particular task was, than on some inherent quality within myself.

So, try not to let it influence me either way, to not feel some unjustified pride that I made something "difficult", or shame that I couldn't manage to do something "easy".

One liberating tactic I employ, is that I clearly announce when I've messed up, and I'll be the first to do it, and usually with a joke.. "Yeah, so that amazing queue we got up and running last week, I took the liberty to totally mess that up, I learned a lot about how not to do it, I'll eventually learn how to do it right, no worries, I'm working on it." This takes the pressure off, people know it's broken, who broke it, and who's fixing it, and they expect that I come for help if I need it. One thing I don't do, is say sorry, I'm not sorry, this is my job, we do software development, we break stuff, we make errors, and I'm not sorry about it.


George Lucas said that "you make a movie, given the circumstances". I really like that idea because it makes it immediately clear that your ideal of what you want to do, create, etc. Will change because of the chaos and unpredictability around you.


This is funny because he is the most infamous movie maker for changing movies over and over and over and over and over again (Star Wars). He took "given the circumstances" very liberally. Or another reading that "you make a movie" which never ever ends.

https://starwars.fandom.com/wiki/List_of_changes_in_Star_War...


Well, the circumstances changed, so he made a slightly different movie. ;)


George Lucas may be an idiosyncratic film maker but he is a rather thoughtful person when it comes to making films and I find interviews where he discusses the process to be very interesting.


yousa die from chaos, or yousa live long enough to become it.


Similar to "men make their own history, just not under conditions of their own choosing" or however people usually simplify that Marx text.


I the same, and it seems to be a realization that comes from past experience. I’m the most senior developer on the project I’m currently working, and I make just as many mistakes as new hires and juniors, the difference is that I probably am able to turn around and fix it a lot faster.


Personally I frame it differently these days:

I do a lot of micro experiments, most of which don't work. But I've gotten better and faster at performing these experiments over time. The more of those I make, the more I learn, the more suitable the solution can be.

When an author makes edits on a draft, those are steps to a finished product. We're similar: our steps result in learning, and that's the most essential element of a good product.


There is an excellent TED talk on the relationship between self-worth and procrastination that also, like you, makes a point about separating "me and my work" [1].

Watching this about a year ago was eye opening to me and I wished I'd found this video when I started studying in college!

[1] https://www.youtube.com/watch?v=52lZmIafep4


Well, I have a problem here, because other than work there's not much going on in my life. No wife or kids, no fancy hobbies... I guess I really need to get more social :)


This was a big issue for me in my early 20s. I did a lot of work to ensure that my life outside of work was as interesting to me as my work life. If you don't have that balance, it is really hard to disconnect your work from your self-worth.


It's easy to disconnect the work from yourself if there are circumstances outside of yourself, like an unrealistic deadline. But your mood or level of experience (examples you gave) seem exactly the sort of thing that someone could use to blame themselves...


Kind of, but, my mood is not me.. I can be in a bad mood, I can be tired, there can be any number of reasons I'm not living up to my expectations of my normal output.. but that's still not _me_, it's part of the circumstance in which the work is done, and if it sucks, it sucks, doesn't make me suck any more or less. I've done pretty decent stuff, I've done pretty silly mistakes. Thing is, that decent stuff, probably came at just the right time.. The silly mistakes, they probably seemed right at the moment, either due to some lack of information that I should have had, or something I simply hadn't learned yet.


Or it being personal pet project, whether privately or at work


> In other words, the quality of my work depends much more on what the particular task was, than on some inherent quality within myself.

Each individual piece of work separately, sure.

In aggregate, anything that doesn't average out probably points at something to work on learning.


Do you have a hard rule against saying sorry? I apologize not for the mistake in my work, but for wasting other people's time and mental bandwidth.


Not a hard rule at all. What I meant, is that I don't apologize up front for making a mistake in my own work, for "writing code that does not work" or other things which could be interpreted as being the result of my lack of skill in my work, making mistakes is part of it, and fixing mistakes are too.

I will be the first to apologize for messing up something for someone else, or giving bad advice, or for taking a decision which lead other people down a wrong path. I'll also apologize, as soon as possible, and in front of others if they're there, if I said something that could be misunderstood or sounded harsh or brash. (Though, that really does not happen very often at all). I believe in modesty and dignity, and apologizing is part of that.


This is a... tough question to answer. Do I apologise? Yes. Is it a sincere apology for wasting time? Not really.

I can explain better with examples.

"Sorry for wasting your time with this mistake," feels very formal and isn't really applicable in most cases. It would be more appropriate if, say, I'd made a mistake, not owned up to it, and the lack of accountability has a negative impact.

"Ah shit, that's totally broken. Sorry, that was my bad!" is more what I'd do and it's a lot less formal. I'm not really apologising or feeling any remorse. I didn't do anything immoral, here. What I'm really saying with "sorry" is "I am accountable for making this mistake and I will commit to fixing it."

I hope this helps clarify the different meanings.


I'd only apologize for something that I should have known given the information I had at the time.

Most mistakes are only mistakes in retrospect, but at the time seemed like good or at least reasonable ideas. I don't apologize if I've done my due diligence at the time.

And I'm Canadian, saying sorry is like our favourite pastime :)

That said, sometimes I'll convey that I wished I had seen things better in the past, and sometimes that comes out like an apology (eg:sorry folks, I wish I had known this tech was totally unsuitable here).


I have a hard rule of not apologizing for honest mistakes. If I took a decision with the best intentions and it was the right call with all the knowledge I had at the time, I don't apologize for it.

I do apologize for mistakes due to laziness, shortcuts, emotionally charged decisions and the like. Things I knew at the time (or could have known) were not the optimal choice.


This is correct. Apologies are meant for the person receiving them.

"Sorry you have the wrong number" does not mean it's your fault for receiving a phone call.


In art school, we spent a lot of time learning how to give and receive critiques, because the fastest way to improve was to try frequently and critique often.

You learn very early to divorce your ego and sense of self from your artworks and embrace every attempt as an opportunity to improve towards an ideal you can never reach.

You also learn how to give meaningful criticism without being an asshole.

Writing code is very much the same.

Unfortunately, most software engineers haven't been to art school and have no formal training in how to give and receive useful feedback.

I recommend reading Art & Fear: Observations On the Perils (and Rewards) of Artmaking. It's a good book that helps you build a healthy mindset towards growing as a creative:

https://www.amazon.com/Art-Fear-Observations-Rewards-Artmaki...


I also got my first critiques when getting a degree in Art. One of the most memorable lessons and discussions was when I first was taught that once you put your work out there, it is no longer about you. Not at all.

It is about the work, and how other people react to it. The impact is has on other is all that matters. Your intent is interesting, but not relevant to their reaction. So if your work does not get the reaction you hoped for, that not a personal statement about you, it is simply something for you to work on.


> Unfortunately, most software engineers haven't been to art school and have no formal training in how to give and receive useful feedback.

I'd imagine no training in normal education is the problem here, not not being to art school...


Most normal education tends to skew towards the didactic all the way through your undergraduate studies, especially with the math and hard sciences (which includes most CS students).

That is to say, an instructor disseminates organized knowledge to the student. The student may be asked to communicate that knowledge back to prove mastery, but there's not as much emphasis on students giving each other critical feedback. Even when there is, it usually has a minor impact on your academic progress or grades.

As such, there's no incentive to learn how to give good feedback or make use of peer feedback.

Art school tends to be unique in that it cannot be taught that way. You spend years giving and receiving daily critiques and incorporating them into your growth.

The commonly accepted peer review processes we use in today's software engineering field involve giving and receiving feedback on your peers' work at a frequency that the vast majority of people simply have never experienced before.

Few people are naturally good at it, and few companies invest time into training anyone on how to do it well.


Came here to say this.

It still catches me off guard when I feel someone clenching up while we talk about ways to improve something.

I sometimes take those people through a tour of my own changes and talk through all the ways those could also be improved.


What are some example exercises you used in art school to get comfortable delivering and receiving critiques?


You simply have to do it every day with self-awareness of what you're doing and why it's important until you get comfortable with it.

Day one of my first studio class, we did sketches of the person next to us and the instructor helped critique us. We learned to critique each other over time and with careful guidance.


At the beginning of my career when I was out to prove myself, I took my job so seriously that my sense of personal self-worth was intricately tied up with the quality of my work. After a particularly disappointing experience that knocked me off my horse for a while, I concluded that putting some distance between my career and the subjective experience of my place in the world was essential to my mental health.

I try to be mindful that the relationship between my work and my person / identity is one of many such relationships in life, and maybe even not the most important one. I think that mindset makes it easier to accept criticism or even to reject it when I think it is irrelevant, misguided, or malicious, as unfortunately workplace criticism can sometimes be.

If your work is being fairly criticized, it's an opportunity to learn and grow. Take it as a compliment that someone actually cared enough about your professional development to offer advice on how to be better. It means they already think that you're good and worthy of improvement. On the other hand, be willing to accept the possibility that that criticism is not actually constructive but intended specifically to make you feel guilty or ashamed. Unfortunately, some people are just petty, small-minded, and manipulative, and will do anything to make you feel small in order for them to feel big.


My reasons to make good work migrated to "I don't want to fix that shit later"


> I try to be mindful that the relationship between my work and my person / identity is one of many such relationships in life, and maybe even not the most important one.

Yes, this realization has also been important to me. Our personalities have relationships with so many aspects of our lives.

For example: spirituality, emotional intelligence, creative expressions, physical strength, physical appearance, wisdom, appreciation of beauty and aesthetics, and insightfulness. We find identity in our social interactions and friendships, family bonds, adventurous endeavors, empathy, altruism, and our sense of integrity. Leadership abilities, an open-minded growth mindset, resilience, perseverance, and tenacity also play significant roles. Sensitivity, conscientiousness, and our predispositions towards introversion or extraversion shape our interactions with the world, and our ambition, passion, zeal, and humor color our life experiences. Whether we lean towards optimism or pessimism, our self-confidence, our work, vitality, and self-care habits are intrinsic parts of us. We are defined, too, by our commitment to diverse causes, our independence, reliability, online presence, sources of entertainment, groundedness, approachability, friendliness, and our management of financial matters. Personal growth, achievements, hobbies, political affiliations, activism, adaptability, assertiveness, and self-expression add further layers to our identities. Curiosity, disciplinary commitment, frugality or extravagance, generosity or self-centeredness, humility or ostentation, innovative or traditional mindset, mindfulness or airheadedness, pragmatism, respectfulness, philosophical inclinations (like Stoicism or Hedonism), tact or goofiness, virtuosity or departure from traditional virtues, progressivism, visionary thinking or living in the present moment, nurturing of others, commitment to others, and many other facets of life all come together to make a person who they are.

So, where does work fit into all of this? It's but one facet of our lives, almost inconsequential in the grand tapestry.

In societies influenced by American culture (as well as others like the UK, India, and Japan), there's often an undue emphasis on one's professional identity. The question, "What do you do?" has almost become a conventional conversation opener. This, however, is a vestige of outdated social hierarchies rooted in class and caste systems. The modern, holistic sense of self that is prevalent across much of the world has also been gradually permeating American culture. But, this cultural baggage can make us fixate too much on our professions.

But we are not forced to stick around in tradition and the past, unless we want to. I certainly do not. And that helps with seeing work for what it is in our lives - just one small aspect.

EDIT: Rephrased the long list into a paragraph so that it does not take up half of the comments on the page vertically :)


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, 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.


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.


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.


Some good advice in the comments so far, but I don't see any which highlight the one thing that transformed me in this regard permanently. I suffered from your problem terribly, to the point that it almost drove me into depression.

The one thing that solved this for me, and I mean utterly cured it, was _talking to my coworkers about it_. This of course only works if you feel comfortable being vulnerable to your coworkers. I was lucky enough to work with people who I am also friends with. I literally said to them over a first pint after work: "when I get critical PR comments it makes me feel bad and defensive. Sorry if I sometimes come across guarded that way".

This opened an amazingly productive conversation that changed my relationship with my colleagues forever, as they opened up about their struggles in this area (you would be surprised at how common this is, it is human nature after all) and we shared advice and jokes.

Sometimes I think we (as a software community and species) try to tackle these things alone to avoid displaying our vulnerable sides, but I think this is a tragic facet of modern culture.


Two things: Humility and Empathy.

Humility I may be wrong, Empathy that if I get it wrong the customer will suffer (in varying magnitudes, of course)

Some of my first programs were in C. 100s of Hours and millions of switch to terminal, gcc, error message beat it into me -- "The computer isnt wrong, I am" . Now I am ok with hearing "This code has properties you didn't anticipate" because that's been true millions of times. And it's produced the humility, that I can't get it right on first try, and it's rare I get it right even by 3rd or 5th try.

Instead we implement, seek feedback (from compliler, tests, peers, more tests, datadog), iterate.

And I like to remind myself also of empathy. Do my feelings matter if it's going to affect the customer? If I get reactive and refuse to solve someones feedback, the customer will suffer. If I get reactive too often, it will silence the feedback (but not improve my coding). The customer suffers, so for that reason My feelings do not get a vote.

Edit: I'd also like to note the religious link that people have lost a spiritual connection of their self-worth[1], and in it's place have adopted a professional and materialism meaning when their professional work is criticized, so is the root of their identity.

Edit: Ok "millions" was hyperbole. A better estimate is something like half a million compilations/builds in my ~20 yrs writing code in a non-hobbyist context.

[1]: (at least in my religion it affirms your inherent value as God created and declared "Good" in design and nature, lets not turn this into a religious debate)


It's natural to take criticism of your work personally so I think the first thing is to accept the initial emotional reaction as "ok" and not something to beat yourself up about.

The next step is to tame your emotional response. It's almost never a good idea to act based on emotions so you first need to get a level head before responding. You can journal, meditate, go in a room and rage out if you need to, but just get that chimpanzee in your brain to settle down. Not easy but has to be done if you want to transcend whatever is coming your way. Sometimes you will fail but there's always next time so just keep at it.

Once you've settled down, now it's time to rationally consider the content of the critique and decide how to respond. Criticism can come in many different shapes and sizes: valid, invalid, clear, vague, harsh and nice, well timed, ill timed. Unfortunately, some people can be downright mean so handling harsh and uncivil criticism is a skill that takes time to master. If you notice most highly successful people, they take nasty criticism like water off a duck's back. That being said, it's really unacceptable to have people making snarky comments on your work and if it's a pattern there, I'd consider finding a more nurturing place to work.

Once all that's done, decide whether the argument is valid and if so make the adjustment in good faith. If not respond, with your reasons respectfully and with an open mind. They may respond in turn, and if so you and your colleagues will have achieved a harmonious spirt of working together towards a higher truth and you will benefit in ways that cannot be overstated.


I had a job where they gave training on how to constructively engage with the open source community, and one of the big points was, "you don't suck, the patch sucks".

Oh you have a bug in the patch? No, there's a bug in the patch. Oh you missed an edge case? No, there's an edge case nobody had documented yet.

The point was mostly about how to give feedback on the patch, and to never phrase it about the person personally, but perhaps it would help to try and catch yourself thinking of the feedback this way and have your internal dialog look at the patch as being separate from you.

Yes, it's your work, but it's always a work in progress, and it's everybody's work to try and make incremental improvements to the code, to the process, etc.

I used to think I didn't like working with inexperienced engineers, but I noticed that what I actually didn't like was people who were unwilling to candidly discuss ways to improve, whether they were junior or senior - it's just a little easier to spot in people more junior than one's self. So kudos to you for recognizing this, because if you can learn to absorb constructive feedback it's a real game changer for you and for everyone around you too.


I was hoping someone would have something about learning to give criticism. I was legit scared when the top posts are, "learning to take criticism is how you become a senior programmer."

Not that that is worthless, mind; but becoming aware of that in the process is what makes you senior. By definition of it being part of growth. With time, you will have been no both ends of more and more reviews. Hopefully you start to see how both sides of the conversation that is a pull request go.

And note that you can't "policy away" bad snarky comments. If someone is giving a ton of those, or is generally tone deaf, work with them. If it is someone you don't want to work with, pull in peers to help work through that. If you don't have a support network, start there above anything. Even if things seem to be going well, having peers to lean on is important for the times that it doesn't. Learning to be a good peer is equally vital, and is a part of what makes the reviews more relatable and part of a group project.


Agreed. One reason you can't "policy away" snark is another reason it's best to separate your sense of self from your work: what you hear as snark when you're feeling down, maybe wasn't even snark, it might have been lightheartedness. I can think of a review I gave recently where I saw someone having to work around something confusing that my team is ALWAYS having to work around, and I just commented on what a mess it was. In hindsight, it could have sounded like snarky criticism of the patch, when in reality it was meant as supportive, empathic, camaraderie. If I was giving the code review face to face verbally, probably would have come across. At least we have emojis.


This is a great and underappreciated point: the person giving the criticism has a lot of power in determining whether or not you take it personally. I would add that having good mentors who give criticism in this way also helps you to internalize the separation between yourself and your work, so that it's easier to take harsh criticism later in life.


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.


I don't know how healthy this is but: I haven't run into many people who are harder on my work than I am.

I have an attitude that there's absolutely nothing I do that can't be improved. This may sound miserable on the surface, but for me it's actually quite freeing. It has the effect of making it easier to accept that things aren't actually going to be perfect (so it can help avoid the trap of over-engineering) and at the same time, it makes it much easier to have productive conversations with co-workers about what to improve/delete/rework because the existing product is something that could be better.

The other thing to think about, IMO, is that that PR comment, snarky or not, was something someone put the time in to come up with. For you. It's a gift. I've worked in places where getting any kind of PR comment beyond "approved" or "Fix your indenting" was an uphill battle. So getting a comment from a colleague that is meant to a) help make you better at what you do and b) help you both create something you can be proud of, is massively positive. It took time and effort for them to read what you did and think of a way to make it better.


This made me realize I have two completely different emotional responses to criticism, even though both can be described as "upset": If I agree with the criticism, it makes me sad-upset because I let myself and others down; if I don't agree, it makes me angry-upset because someone else made a mistake (i.e. the criticism) and then tried to make that mistake my problem. (To be clear, it's the second part that triggers anger: If someone crashes their car on the side of the road, I've no reason to be angry; but if they crash their car into mine, then I do have a reason.)

I believe that both of these responses can be valuable when handled correctly, but doing so requires a different strategy for each. Actually, the first step is the same for both: make sure that you've had the correct response: if you're sad, double check the criticism really is accurate; if angry, double check the criticism really is wrong. I think perhaps a lot of trouble can be attributed not to having one of these upset responses, but to having the wrong one! A helpful side-effect of thinking about the other kind of response is that they both mediate the other: thinking about situations/new evidence in which one might respond the other way to the same criticism alleviates the original emotional response.

The next steps are more involved and specific to each response but this comment is already longer than I meant it to be :).


I like the way you break down the emotional loop with criticism. For me, the way you've put this maps nicely to mindfulness practice. It's important to respond, rather than react to criticism. Taking a moment to listen to what your emotions are trying to tell you, and checking that against the facts of the situation is core to mindfulness.


Massively behind this sentiment. To be frank, thinking you can ever make something that is impossible to criticise to ego run rampant. OPs question shouldn't be "How do I deal with criticism" but "How do I tame my ego", and that's a topic with teachings as old as civilization itself.


You probably won't see my comment as it's late to the party, but these things help me:

- You are not your work. Try to take any demerit toward your work as pointed at the work, not at you as an individual.

- Make an effort to do the best job you can given your resources, knowledge, and deadlines. Sometimes you have to make trade offs because of an aggressive deadline and it's not the best situation to put out the highest quality code possible. Make sure it's known and try to get back to fixing it the best way when there is time.

- In code reviews, use it as an opportunity to learn from your seniors and to try to come up with ways it won't hurt you or others in the futures. If you made a mistake that affected a model or some code in another area, ask how they knew that would affect it? Is it documented anywhere? Are there tests? Is there a better way to handle this so that it won't affect things negatively downstream? This will help you and others avoid that mistake next time

- Assume that the person making the comment isn't doing anything intentionally to be snarky or shitty, but call them out on it if it's a repeated offense. It's very easy to come off meaner/short/curt through text than speech and some people just don't realize it. Alternatively, they do realize it and they're being an asshole to not just your but others. Either way, this will challenge them to think and act more professionally


Thank you


This is what happens when you are identified with your work to some degree. The work becomes you, hence criticism appears to be no longer about your work but your person.

My experience is that this often happens to individuals who have a perfectionist tendency. A very admirable trait that unfortunately can backfire in the form you described.

I think you already made the first step, which is becoming conscious of this. In my experience, the second and harder step is to stay conscious.

For me personally, it helps to take a step back and get some distance from work (even if it is very short).

Also, what greatly helps is not condemning yourself for your reaction to that criticism as that would just add one more layer of negative feelings on top of it.

The reason you react this way shows some very positive traits in you. Appreciate them.


"criticism" is a bit broad, there's a few different scenarios:

- If someone reports that my code crashes with some seemingly valid input, I won't take that as criticism, but rather somebody trying to help improve my code. It's for their own benefit, but still it's still a contribution.

- If someone points out some stupid flaw in my code and has a suggestion on how to improve that, I'll also welcome it as a contribution. It's also an opportunity to learn from the mistake.

- If somebody points out that some code is imperfect (but works in the intended use cases) with no suggestion or obvious path on how to improve it, then they're just being annoying. I have other stuff to do, so try not to pay attention to this (I'll admit this is harder than it sounds).

- If somebody points out that my code kinda sucks and points at something else that's better written, I'll appreciate them sharing some knowledge and go look at the other code and see what I can learn from it.

Generally, I when somebody points out a problem with my code, I'll assume they're having the same stance that I do when I report issues. When I report issues, I generally want to help them get fixed to improve the program since I want it to work for my specific scenario (and for anyone else trying to do the same).

Being someone who always complains about things that are broken (or can be improved) help understand that when other complain they're just trying to indicate that things can improve. They're (most likely) no trying to attack me.


One mindset approach I’ve learned is to ask myself often:

“Hmmm… what can I learn from this?”

It reframes criticism from right/wrong or blame/defensiveness.

It also helps me shift out of my own inner critic’s response - such as trying to evaluate if the person critiquing is qualified enough to do so.

I’ve genuinely seen that the most intelligent & successful people I know truly believe they can learn from anyone - including people who are factually wrong.

It seems like your current reaction isn’t a choice, so that’s a personal growth opportunity.

When you feel critiqued it’s helpful to:

1. Notice how you feel 2. Express it & feel it fully - not to others, but with yourself 3. Give yourself space & support to have the experience you are having with no expectations 4. Once you feel that space, get curious about how you’d like to respond

If you weren’t treated this way as a child, this approach can seem very odd or even dangerous.

Meditation and Gay & Katie Hendricks’ work has been helpful for me here (https://foundationforconsciousliving.org/).

But mostly what has helped me is time. Learning to take care of our own feelings & choosing our responses to things around us are a part of maturity.

It has taken me years to develop these skills, but the impact on my relationships and career trajectory is very clear.

So be kind to yourself, set 1% better goals in terms of how you respond, and recognize that you are enabling yourself to become more coachable.


This is the best response so far. "What can I learn from this" -- brilliant.

And, this line, double brilliant: ``` I’ve genuinely seen that the most intelligent & successful people I know truly believe they can learn from anyone - including people who are factually wrong. ```

I can't add much to this, but I'll make some additions/rephrasings

- When you submit a PR, start with the attitude "I can't wait to see what my peers point out, so I can learn from it"

- When someone points out a mistake, or flaw, or just a way to improve it.. maybe some "improved" code organization or more succinct logic, just say "Hey, THANKS!!" Be enthusiastic, appreciate their feedback, and "Opportunity" to learn. If you look at it as a "Opportunity", not as a "Criticism" then no matter what they say, you can't really be bothered by it!!! Your are uh.. anti-fragile!!

To summarize -- Don't "dread" the criticism, "Look Forward To it" -- it's how you improve, it's how we all improve.


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.


Congratulations - you have already succeeded enormously by seeing that this is the case.

Stoicism.

If something that someone says or does causes a problem for you, it is something inside you that is the real cause of the problem.

It takes lots of work but you can eventually work on controlling your thoughts and you can learn to deploy counter thoughts. “I have a problem when people say this, so I can discount this particular negative thought that is occurring right now” etc.

I have found that informing others out loud about such struggles is awesome as well. “Thank you, I have had problems taking such and such feedback before, but I am working on it.” You can actually turn this weakness into your strength as people like people who are honest about working on themselves. They might package this feedback differently, or they might let you know in a sensitive way.

Edit: I’m no expert at this btw. Recently I had a realization that I don’t like taking feedback publicly, would rather receive 1on1. I had an EM who had a tendency to do things quite publicly and I always found those situations difficult to manage. When I arranged for a 1on1 and told him about it, it turned out that he had another quite different concern and rule around doing things publicly - he wanted more transparency in the organization. After understanding each other he backed off of being too harsh, and I started leaning more in on the public channels, helping him achieve this goal.


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 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.


I think being humble is effective and leaving ego at the door works in a lot of situations, including work.


It's kind of dumb, but I think about a line from Casino Royale - M says to James Bond "I want you to take your ego out of the equation and judge the situation dispassionately."

It's unlikely that the person making the comment is out to harm or anger you. Ideally you are both on the same team, trying to perform some task for the benefit of your employer. In that case, recognize that your ego or pride has been engaged; observe it, but then put it aside and get back to work.

If they ARE actively trying to anger your or harm your career (rare, but some people are just toxic) all the more reason to ignore the provocation.

My main challenge is when people dig in their heels about technical solutions that I find distasteful. For me that's less about how beautiful the code is and more whether it solves the problem and will be maintainable. Even here a lot of arguments can be ignored. Again, make your ego and identity as small as possible. Brace style? Tabs vs spaces? I honestly don't care. If someone wants to argue about those things I'm happy to let them win.

Be half-monk, half-hitman and get the job done.


"My main challenge is when people dig in their heels about technical solutions that I find distasteful"

I had co-workers that avoided me as a reviewer because I would highlight important tech and architectural concerns. Those were hand waved away with the usual "we don't have time" arguments.

They've since left the company and I've spent literal years pulling out those deeply embedded ticks.

I've come to realize that I should have asserted myself a lot more back then. You're right that many of the small things don't matter (or can be improved fairly easily). The big things: some of those matter a lot.

It can be hard for others (especially more junior devs) to see the good intention of trying to avoid future quagmires. That's been a bit of a challenge on my end.


Yeah, you have to decide "does this really matter in the long term?" If not, let it go. If it does, do your best to explain why.

I'm a huge fan of good interfaces with shitty code inside. You can always improve the code inside if you got the interface right. If you got the interface wrong you'll need to rewrite anyway.


For me it was always very simple: who is delivering the criticism. If it was someone for whom I had respect, both individually and technically, then I listened without taking it personally and discussed the why and the how. If it was someone I didn't respect, forget it. Their opinion didn't matter. Yes, sometimes that led to conflicts. For example, I once worked for a manager that I liked personally but didn't respect his management approach. He was a micromanager in the extreme, inserting himself into every discussion he encountered, looking over your shoulder when working, even insisting that every memo you wrote was reviewed and edited by him first. He'd red line your writing like a high school English teacher. Nonetheless, I followed this approach my entire working career and retired satisfied with the work I had done and with my ego and friendships intact. Nowadays I look back and laugh at some of the many characters encountered on the journey.


Study Art! One of my friends did an arts degree prior to entering the software industry. She said that studying and making art prepared her for all the criticism her code would get. You build thick skin.

But on a more realistic note - separating yourself from your work is hard. I accept that at times my code will be bad, sometimes the reasons are external and sometimes I just did not know better. But I try not to repeat mistakes, that is the key. Also I consciously frame it as “the code had a bug” vs “my code was bad”. How you phrase it goes a long way, imo.


You know, you could consider getting therapy. Being sensitive to criticisms often results from something deeper, such as insecurity or some kind of vulnerability. There are lots of different therapeutic modalities, but CBT may work well, since you can look into the roots of this mindfully, and develop meaningful changes. The outcomes can be more than better coping or masking.

I’m going to go out on a limb for the next two suggestions, particularly the second one.

Psychedelics with a strong therapeutic intent, can not only help loosen the psychological armoring we create to shield us from vulnerability, but also help make changes when belief structures can be cleaned up and changes. You would want to work with people who do this way (instead of partying with it), or with therapists that administers this with a clinical protocol. These should include integration sessions to help bring the insights and changes to your daily life.

There is also the option of working with acupressure or acupuncture, with the caveat that most licensed acupuncturists do not know how to work with this. They usually take a holistic approach and stick to what are called the twelve ordinary meridians. If the roots of sensitivity to criticisms is in your physical health, this may catch it. Holistic treatment though, means the provider won’t specifically target what you came in asking help for.

If you are lucky and find a provider that works with the eight extraordinary meridians, there are two specifically related to sensitivity to criticisms. These are the yin and yang qiao mai, with the yin qiao mai directly expressing your consciousness’s ability to receive criticism, as well as insecurity, vulnerability, etc. Yang qiao mai expresses your ability to give others criticism without being a jerk.

It’s not as if using these methods are like using a magic pill. However, they can greatly accelerate whatever therapy you are working with.


1. Own up your mistakes. Write emails that say: "yup that's on me, sorry guys". This is going to turn your world around. Do it enough time, and you'll see your coworkers doing it too.

2. Try self-derision. "Oh man, I must have had too much to drink that night!!!!" or "yeah I got pretty lazy there...". Always very appreciated. Especially if the comment from the co-worker is intentionally snarky.

3. Try and be pre-emptive about it. If someone says: "hey wtf is going on in prod?", you should answer: "shit, it's probably me, I'm looking into it", or if you think it's not you, you can do something like: "I fiddled with this code yesterday, but I am fairly confident that it's unrelated, let me know if I screwed up".

4. Own up your colleagues' mistakes too: "Sorry guys we screwed up on that one". Clients love people who tell them they're sorry rather than people who come up with shitty excuses.

5. If it's far in the past, insult your past self at will. "Well when I wrote this, I was pretty lame I didn't know better".

6. Always remember that what's in the past can't be changed. Only the present and the future matter.

7. Be kind to other co-workers who own up their mistakes.

8. Thank people who fix your bugs.

There are a lot of hidden benefits hidden in distanciating yourself emotionally from the code you wrote:

- You won't want to continue working on "your baby" when your boss offers you a promotion

- It makes the team work a lot more human. We aren't geniuses, and even geniuses screw up. It's all fine.

- If you own up your small mistakes, no one is going to throw you under the bus if you make a much bigger mistake.

Good luck.


> 2. Try self-derision. "Oh man, I must have had too much to drink that night!!!!" or "yeah I got pretty lazy there...". Always very appreciated. Especially if the comment from the co-worker is intentionally snarky.

Reminds me of my favorite code comment that I came across once…

“I burned one right before I wrote the block below. Now that I am no longer high I have no idea how it works or why, but it works.”


To speak to the point about the PR comments, it's quite tricky to get a sense of the intention behind them. In the last few years I have adopted the approach of conventional comments, which has helped a lot with conveying that intention.

I.e. if I want clarity around a code choice it's clear to the developer that I need more context, or if I have a nitpick to point out it's clear that that's why I am pointing it out. I think everyone should comment in this style as it helps to shed light on what you're trying to express, even if the comment is short or unintentionally snarky.

https://conventionalcomments.org/

Of course this doesn't address all the forms of text communication but PRs are generally a pain point when it comes to interpreting meaning.


Wow, I never seen such thing as conventional comments. I went further and found conventional commits, it was pretty good. Thank you for sharing!


There is a legitimate difference between accurate, honest advice that is hard to swallow, and being harsh, rude or mean. For some reason that I don't fully understand, some corners of the programming world seem to conflate the latter with the former (sometimes under the guise of "brutal honesty").

Sometimes you won't have a choice and you just have to put up with it. But my advice, in so far as possible, is to surround yourself with people who understand this nuance and for whom it is a goal to be compassionate (while still being honest and truthful about problems that exist).

I just wanted to mention it because some of the advice in this thread doesn't seem to make this explicit. Improving yourself is great, but life is too short to put up with jerks.


It's usually not personal - having a professional detachment helps.

Remember the only way from amateur to professional is by constant improvement, which requires constant critique of your performance.

As you improve the criticism becomes less, you also have to rise above the amateurs who don't know how to adequately structure criticism, so that it written in a less personal way. Early on in your career this may seem deliberate and you will make a lot of mistakes, but it does fade.

You should also have 2 tenets:

- It doesn't matter what happens, you are paid for the code regardless, so don't hold so much pride.

- Make sure your reviews of others hold them to the same standard and language so they feel what feedback like that does and helps them adapt (it's also revenge served cold if that's your thing).


When you’re 20, you care about what everyone thinks about you. When you’re 40, you don’t care about what other people think of you. When you’re 60, you realise that no one was really thinking about you anyway.


> you realise that no one was really thinking about you anyway

I realized this way early in life and it was liberating. Even then, I wish I had realized it sooner.


It is very hard to do good code review. The reviewer is always missing context. It's easy to overly focus on style nits and not meaningful changes. This is exacerbated when PRs include a large number of changes.

Additionally, code review is the worst time to question decisions made by the developer. You have probably put a lot of work into your changes. Someone callously tossing a "why don't you do it this other way" into your PR feels like bullshit because it is. And again, larger PRs are going to have more (and lower quality) comments, which makes it easy to feel criticized or defensive. The parts you had the most trouble with are likely the parts that people are going to comment on most.

The solution to both of these is to try and break your work into the smallest chunks you can. This makes it easy to catch your own mistakes, as well as reducing the mental burden on the code reviewer. It gives you a chance to validate your strategy before you implement the whole thing. I've never been on a team that pushed back against the idea of splitting a large task into smaller ones.

As to when you do get called out on a mistake, it's ok to feel bad but recognize, people make mistakes. The person did you a favor by finding it in review vs finding out when bug reports start coming in. If it's a good catch, respond by saying "thanks for catching it." Nobody knows everything, nobody writes perfect code.


Assuming the criticism is valid and not nit-picking, embrace the fact that this is free education that isn't saddling you with additional six-figure debt!

Learning on the job is important, and you could treat it as such. (Pay attention to the sort of mistakes you are making, classify them, address the reasons that you are making them. For example, maybe muscle memory leaves you forgetting to check some assumption. Maybe you can invest in linting/testing/patterns that make those classes of errors less likely?)

If you're making small mistakes that are noticed, one way to fix it is to make those mistakes less often -- even better if you can stop your team making the same class of errors too.

If the criticism is more about the way you are doing your work, maybe the focus should be on "soft-skills" instead. Are you expressing your ideas clearly in some well thought-out manner BEFORE coding (so that you can get input and buy-in from other affected parties?). Is the churn in the codebase causing others to be negatively affected in their daily work having to react to the changes you are making? The default opinion of most folk is usually "change is bad", so you need to build a reputation of making net-positive contributions. Solicited feedback from people you work with is very valuable for gleaming where you might be missing this mark.


I think I'm usually decent taking feedback but recently I realised I get really annoyed when someone I don't respect gives me feedback. Doubly so if the feedback is bad or nitpicky. It must be ego, plus my belief that one ought to do minimum due dilligence before giving feedback.

I try not to express this annoyance, so other people haven’t picked it up (though I'm sure it shows sometimes). It's something I'm trying to work on as suppressing that annoyance cannot be healthy for me.


Here is my approach:

It is okay to take criticism personally on the path to not taking it personally. Your thoughts and emotions are not you so first and foremost don't feel bad for feeling this way. I'm not saying you should act on them however.

I suggest sitting down and making time, remembering the feeling and then feeling it. No need to psychoanalyze, and have mental talk. Just feel the pure emotions and be curious about them. Where do you fee them? what shape do they have? how big they are? what texture do they have? etc

The point is to make the task of feeling your emotions interesting for your mind so it stays there enough to get used to it.

Hypothesis: When an emotion is causing us suffering it is usually because we don't want it, but unfortunately thats not how they go away, especially if they are big emotions.

After a while your mind will know the emotion so intimately that it will either be negligible or not come up at all.

Note however, if you go towards the emotion with the intention of it going away this will not work, there must be total acceptance. So cultivating that loving curiosity may actually be the hard part. The trick there is that I like to imagine myself as a child having these emotions and soothing this child as a caring adult.

There are other methods but this has been very helpful to me and I hope it will be helpful to you as well.


1. I stopped seeing my work as a labor of love a long time ago. I love what I do, but my passion is with the technology, not the day-to-day commits. My work is generally good and I'm confident that I'll continue to be valued, but my job output isn't some kind of masterwork (nor does anyone want it to be).

2. The whole point of code review is to find issues. If my code was perfect, we'd skip review. But it's not, and I accept that my mortal flaws will inevitably show in what I put up for review.

3. Criticisms are one of the few feedback mechanisms for your real, tangible job output. It's important to remember that you grow technically by others pointing out mistakes. If you got nothing but praise, you're not actively refining your skills. Catching mistakes before you submit for review is indeed a skill that must be honed.

If the feedback you get is snarky or mean spirited, that's a culture issue. Reply politely, thank them for pointing it out, ask if they have suggestions for what to do better if the right answer isn't obvious. Establish a norm of treating code reviews as a place for being decent. If you don't get respect in return, take it up with a manager: code reviews at work are no place for someone to make you feel belittled.


Let me preface this by saying that I've had some fairly high profile criticism of patches I've been involved with: https://arstechnica.com/information-technology/2013/02/linus...

Having people criticise your work fucking sucks. There's no way around that. Someone you respect says you did a bad job? Yes, you'll take it personally. I don't think there's any way to avoid that initial feeling. Have I read patch feedback and wished I could sink into the Earth? Yes. Do I still have intrusive thoughts about a patch I sent almost 20 years ago that was eviscerated by the subsystem maintainer? Oh heavens yes. These are entirely human reactions. It's not a flaw to feel that way.

As others have said, being able to interpret feedback as well meaning can help. But you should also try to find external feedback on whether the criticism you're getting is positive, or whether you're potentially in a situation where you're being exposed to abuse. Sometimes feelings are an overreaction - sometimes they're justified.


Do you react well to some constructive criticism or are bothered by just about all of it? I wonder if you are dealing when some perfectionism issues more broadly.

It’s sometimes hard to remember, but feedback is a gift. It is someone else taking time to show us how to be better. One approach to feel less bad about constructive/negative feedback is to show and feel gratitude to the person giving.

I remember I had a customer who was somewhat hostile and awkward when reporting bugs. One day they reported a bizarre issue related to a race condition and I spontaneously responded “that’s a AWESOME bug find. It’s a cool bug. Sorry it’s impacting you but I appreciate you helping us make the product better.” That and similar interactions changed the tone of our communications- by expressing enthusiasm and gratitude for the opportunity to learn I reinforced those emotions over the angst and worry over the problematic feedback and at the same time changed the tenor with the customer who went from being a little angry at finding bugs to enthusiastic at reporting then. I distinctly remember my smile the first time he started a meeting with “I’ve got a good one for you.”

If you can find a way to value the learning highly it helps reduce the sting to the ego of criticism.


I do not take criticism of my work personally. I think this is because I have already heavily criticized it myself. Everything I make falls short of the ideal form I have pictured in my head. This applies to code, woodworking projects, CAD models, documents I've written and food I've prepared. These works all feel separate from myself despite coming from my brain. That is not to say I'm not proud of them or feel like I've done a good job; quite the opposite! But at the same time it is very rare for me to feel like there is not room for improvement or even obvious shortfalls.

I think with this mindset it is easy to accept others criticism because I already agree anything I made is needs criticism and is worthy of being criticized. It is also one of the only ways to improve. I get excited when I can get someone to provide feedback on food I've prepared (people are hesitant to do that as it seems rude) because it teaches me what they like. For software, sometimes the criticism is just someone else's preferred style and that I take even less personally and try to work with them to see if there is a middle ground that suits both of us or our team.


At my first job, I was on a small team and my boss did all the code reviews.

He would leave comments like:

- "This is really awkward, change it to..."

- "This variable name is awkward and confusing"

- "You have failed to understand..."

- "You are overthinking this. Keep it simple and do..."

- "This causes unnecessary overhead. Think about it..."

Every review, I would have to re-write everything to exactly how he wanted it, variable names, logic and all. To the point that the code was not mine.

I would very much disagree with what he wanted. Any type of constructive push back would be met with enormous backlash.

But it wasn't always what he wanted me to change, - the way he delivered the feedback irritated me the most.

In my following jobs, I have had many reviewers for my code. I've had 30+ other people review my code. They have all been much nicer. And deliver feedback that I actually agree with.

I am thankful when someone finds a bug in my code, or an easier way to do something. Using a function that I am not aware of. This way QA won't find the bug, and I am learning.

Anyways, my advice is to look at how the person is delivering the feedback. Take note of that, and know it is them if they are toxic. And when you do a code review for someone else, be sure not to be that person.


Jeff Atwood has a great article The 10 Commandments of Software Engineering (something like that) and one of the first ones is "you are not your code". There's no trick to this. Sometimes you write bad code. Even if you're a bitwizard demigod who can explain the route of an electron through your web3 Blockchain distributed app or whatever it is you do, you can still write bad code (and will). Nobody writes perfect code all of the time. Nobody writes beautiful mind algorithms all day with ease. It just doesn't happen.

Letting go of the ego a bit is something you have to find within yourself.

After that, it's easy. If the criticism is about the code, either accept it or be analytical with a thoughtful "defense" of the code. It leads to good technical conversation and the code benefits from it, and either one or both of you will learn something. Learning things tends to go away the more senior you get so the opportunity becomes exciting at some point.

If it's about you personally, then it's no longer constructive criticism and thus a civil response about keeping things on topic usually suffices.


https://blog.codinghorror.com/the-ten-commandments-of-egoles...

I think of this in two ways. First, in a team, we're all collaborating on the project. Different people have different ideas and different experience, and debating can make for better results. In my last job, there was one particular person I disagreed with all the time (down to hops vs malt) but for that reason was a great person to collaborate with.

Second, there's code review. My last place was very much into its style guides and best practices at the individual PR level (but remarkably bad at higher levels; the prevailing large-scale design rule being ‘ship the org chart’). I think of that sort of code review comment much like a compiler or analyzer message: sometimes it's right, and caught a mistake. Sometimes it's a false positive, and you just have to change something to make the tool shut up.

(Third, I wouldn't be able to recognize an actual personal attack unless it were extremely blatant.)


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 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.


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.


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.


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.


This is rational, I wish I could just do this but my ego is in the way and I don’t like being wrong.


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. :)


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.


It may be the case that you’re ambushed by critical reactions. Prime yourself before reading comments, get your guards up a little. This puts some distance between you and the comment(er). Your skin may still be hit, but not your soul.

Secondly, if somebody says something that you dont agree with but is not really important or interesting, or even snarky, don’t respond. Just ignore it. Respond to another comment (if present) thay you do find constructive and interesting. This is very powerful because you actually respond to the snarky comments without responding. This can sometimes be the loudest and best response. Don’t waste energy where there is no gain.

It helps. Remember also that finding flaws is a lot easier than creating things, especially if new ideas are involved. Also remember that love makes blind; it’s easy to fall in love with one’s own ideas/solutions and so ignoring its shortcomings. The easiest to fool is yourself. But that’s fine if you allow yourself to adjust.

Finally, allow yourself to be convinced. If somebody has a good argument against your case, give them a little credit. Try to have a conversation and not a debate.


I have always taken feedback poorly, and my brain has been very unkind to me during performance reviews. I don't really trust people who claim to "love feedback" or find it "good for personal growth". It sounds so faux. But ya know, great for them. With PRs, I try to imagine myself in my reviewers' shoes, and try to form some kind of internally-consistent vicarious defence for why they're behaving or talking that way. Maybe they're having a bad day? Maybe they're annoyed and busy at the sheer persistence of interruptions? Or maybe I'm just incredibly sensitive? It's usually the latter. I have a persistent desire to please people. And in deficit of being able to, my brain convinces me that they don't like me. And that I should therefore feel rotten. I've discovered these brain cascades are mostly from mini-traumas of historic social interactions and upbringing. FWIW therapy helped me a lot. Also remember: people, including those in positions or knowledge and power, can be wrong, or unkind, or insensitive. It's not always you.


This is great self awareness that can lead to invincibility. This is how I approach (so it is not an advice for "you" personally).

Be a Stoic. First, start with the understanding that you can only control your thoughts and emotions. You need to seek "truth" in those situations. If it was mistake by you, the comment is justified (and you shouldn't worry about snarkiness because it is due to their ignorance). People who take cheapshots don't know how world works and likely, they will face bigger issues - but try to treat them as being ignorant. Secondly, your issue may be tied to your sense of self or ego. This will take time and the hardest to master. But by being aware you will find your own way. What worked for me was to pick something totally outside my day job that gives satisfaction (It could be still be related. For example, building some open source projects or just fun projects whose quality is under my control). So I am not seeing any "approval" from anyone


I’d think of this as two issues, assuming we’re talking about constructive critiques:

(1) how do I not take snarky critiques of my work personally?

(2) how do I not take kind critiques of my work personally?

Issue 1 is often about understanding why the other person is snarky. Do they get this issue a lot? Do they realize they’re being snarky? Are they just a dick?

The goal here is to empathize so you can translate the feedback to issue 2.

Issue 2 is often about your own relationship with your work. Are you wedded to it, because it’s the creation of your own hands? Is everyone else too dumb to see why your solutions work? Are you in an area where the underlying issues are opaque or challenging?

The goal here is to be introspective + address why you have a gut reaction to the feedback. Eventually, you’re trying to get to a “reviewer and I against the problem” mindset.

All that said - sometimes it’s not a bad thing to take things personally. Recognizing when “feedback” is out of bounds is part of the process. Good luck!


Years back I worked with a senior guy whose motto was “feedback as a gift“. At that time in that company, most people pretended that feedback was important and something they wanted to engage with, but he was the only person I knew who genuinely lived the concept: he would request feedback briefly from everyone in virtually every interaction, irrespective of the relative levels of seniority.

Anyway, this effectively flicked a switch in my brain. Pretty much overnight I went from finding feedback personal and awkward and even offensive, to feedback being something positive and helpful. I think that actively wanting and requesting feedback, rather than grudgingly receiving it, puts you on the front foot psychologically, and after a while, it becomes second nature.

So that’s my advice: decide that you want feedback, then live it. Go out of your way to actively solicit feedback, and make a habit of regularly giving feedback in a constructive fashion.


Most of the points here are about separating your self-worth from your work, and that's certainly good general advice, but it's not the only way to go.

I'll be honest and admit that I connect self-worth with my work, or the sport I'm playing... part of my identity is the desire to do things well.

So yeah criticism hits personally for me. But actually: In a good way. I view every piece of feedback as an opportunity to advance that personal identity.

Usually at work that's desired: The people giving feedback are trying to help. But even that criticism from that stranger on the internet trying to get you down is an opportunity.

It took me a while to get here. I still have half a second of defensive feelings when I receive unexpected feedback. But I've trained myself to quickly let curiosity overpower the defensiveness.

As others have said, your awareness is half the battle. You're on a good path. I hope this alt POV helps!


My suggestion is to do more design work up front before touching code. Write up a plan in a drive document or an internal wiki tool, with a focus on capturing requirements, a high level description of your proposed solution, and detailed sections on the portions you anticipate to be complicated, controversial, or risky. Also include an "alternatives" section where you very briefly summarize technical approaches that you considered but ruled out.

That captures most of the high-value engineering work necessary to solve the problem, and you can move faster, unencumbered by programming languages, linters and toolchains because you're using freeform human communication. That document is allowed to be ugly.

Once you have an initial idea down, even if you don't like it yet, pass it around to your coworkers. Ask them for feedback on the design, especially the requirements, and ask them to help you brainstorm solutions to the parts you don't like. Your coworkers are going to naturally approach your document with a positive, progressive mindset. There's no risk of breaking things or stepping on toes. Chances are there will be design decisions they don't like, or have better ideas for how to do it. Since it's a freeform document, you can quickly rewrite stuff and tweak it until everyone's happy, or you can at least have the tough conversations to reach a compromise.

Once your coworkers have had a chance to provide feedback, then is the time to write code. Since you did that up-front work, you should be able to barf out the code 10x faster. You could even hand it off to someone else like an intern to barf out the code.

When the code goes through code review, it's your coworkers' jobs to be in a very conservative mindset, looking for regressions and maintenance pitfalls. You'll likely have a very different experience, though, because the code is now the manifestation of a previously agreed upon plan. It's simply an artifact. The lines of code are "cattle" to be slaughtered and consumed rather than "pets".


Respectfully, I don't think this addresses the author's question. They asked for help receiving criticism. Your response is focused on better engineering practices, with the goal of reducing mistakes. I don't think that is what they are asking for


I think you missed my point then. The goal isn't to reduce mistakes, although that is often a secondary benefit. My suggestion was to shift work habits to a form where they have ownership of design rather than ownership of code. Also, a key point was to front-load criticism to early in the development process rather than toward the end.


I don't think your suggestion is a bad one, but I'm not convinced it would have a meaningful impact on one's ability to accept the criticism in the first place. Just because it is occurring at a different phase in the process wouldn't (for me) change my reaction to receiving criticism. But fair point that in your experience this is a useful strategy to make criticism easier to receive.


It's fairly concrete advice I've given dozens of times to more junior software engineers over the years. People have a tendency to become emotionally invested in the code they write. A large part of that tendency seems to be due to a sunk cost fallacy. When you spend the majority of your time iterating on code in order to work through unanticipated complexity and system level interactions, the code is perceived to be the value of your work. People ultimately derive happiness from feeling useful, and so it hurts to be told that the thing you labored over is flawed in some way.

Lines of code aren't really valuable, though. They're technical debt. They're a liability. The valuable, useful thing is the final working system that solves other people's problems, or otherwise enriches their lives. The value of a software engineer's work therefore isn't the code, but it's all the design work that went into the code that made sure it made the system better rather than worse.

Whenever I personally write code without a backing design document, I consider it to be speculative, with a lower probability of ever getting merged somewhere useful. I expect any attempt to get it through code review to be relatively painful, and I go as far as mentioning the speculative nature up-front in the review summary so that the code reviewer is in the right mindset.

That reminds me of many years ago, when I did a lot of circuit design for solar car racing while in university. I developed a thick skin for technical criticism pretty early on in high school from FIRST robotics. There were plenty of fellow solar car team members that hadn't had the experience yet, and so it was often a source of inter-team drama. There's one effective trick I would use when mentoring newer team members in the art of PCB layout. After they spent 20+ hours sweating over completing their first ever layout, I would sit down with them and go through the dozen or so novice mistakes they had made. I would encourage them to share their story of personal pain, misery and self-discovery that went into the result that they were sharing with me. I would then apologize profusely as I hit the "unroute all" button, reminding them that they still had the file saved. I would then invite them to start over and do it again from a clean slate. After a few minutes of disbelief and frustration, they would get to work again. Without fail they would come back a few hours later, smiling ear-to-ear and excited to show off how much better the layout was.


Phase 1: Unaware, unable

Phase 2: Aware, unable

Phase 3: Aware, able

Phase 4: Unaware, able

Congrats, you're at phase 2!

I for one have developed the ability to suppress my initial annoyance simply because other people code has just taken me by surprise so many times. Just ask them to explain why it is better, for me there was almost always something insightful. Idk, maybe I was lucky but a correction from someone has really become an opportunity to learn for me. Of course there are exceptions, and then I do discuss/defend and sometime force my way. But not often.

Also: Over time "Everybody makes mistakes" moves from being "some expression" to absolute reality, by experience. So no reason to feel bad. You may just need time. And as said, going from phase 1 to 2 is already progress, suppressing your annoyance for long enough may just land you in Phase 3 automagically.


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.


It depends on how many ships you have sailed. Have you worked at different companies and interacted with a good range of people.

If you don't have a lot of experience, you will learn it with time. Check out 48 Laws of Power. Your work also is not everything you have. It doesn't define you.

Criticisms are also not easy to hear because people don't know to give it well. Many times it could be personal. You can differentiate it by how its being framed, is it a comment on you or your work.

Hey Joe, your have become really lazy with your PRs vs Hey Joe, you have repeatedly submitted change requests that don't have good test coverage and have not been able to meet deadlines and it has been slowing down team velocity.

Maybe also consider a change of workplace if you want to start fresh. Going to gym and staying healthy helps too.


1. Having a "growth mindset" is important, it's a mindset that a mistake/failure isn't the end of the world, but instead it's an opportunity for us to grow and get better.

2. They way we "judge" other people could indirectly be the way we "judge" ourselves. When you encountered somebody else making the same PR mistake what would you do or think about the person? I encountered a very similar humbling experience and I found out that I judged people very easily (although I didn't verbalize it) and it affected how I perceive the mistake I made myself. In my case, I learned to be more compassionate and passionate, and to judge people less based off their mistakes


Criticism is the least of your concerns when you live with PTSD :D.

For me work has always been sort of an escape from myself. If I get criticized for the work I do I don't mind too much really because the alternative is the dark place I go to every time I close my eyes.

"So you think there's a problem? Okay maybe there's a problem let's have look at it and reason about it together.

Oh I just suck and my face is stupid and that's why my code sucks? Well I'm really relieved we found the answer to our problem, for a moment there I thought I was the a*hole ;D."

That being the dialogue playing in my head while I haven't said anything to the workmate who simply refuses to listen to reason.

"Okay" I type, and press "Submit Comment"


> Everything from an unintentionally snarky comment in a PR

To avoid this, teams need to come together and learn how to be respectful during code reviews. I find this article to be a very good resource:

https://www.michaelagreiler.com/respectful-constructive-code...


I noticed that there's a huge difference between receiving criticism on something that is work in progress versus something I consider being "done".

When something is still a work in progress in my mind, it is much easier to have a positive attitude towards criticism and see it as something that helps me improve. There's something I can _do_ with the criticism in these cases.

However, when I consider something as done and it is criticized, I can get frustrated and defensive. It's a bigger mental leap that's necessary to make the criticism actionable.

The simple (though not easy) solution is to consider nothing as permanently done.


Agreed. Unless you’re my PM. Then the requirements are DONE dammit


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.


The best way is actually to turn the tables around and learn how to give other people feedback in a way that is effective. There are plenty of coaching and other courses you can do that can teach you some good techniques that you can apply.

A useful side effect of knowing how this stuff works is recognizing when others are being ineffective and clumsy. Lots of engineers are a bit deficient with their soft skills. And recognizing when people are shooting themselves in their feet by being passive aggressive, rude, or otherwise causing a lot of issues in day to day communications can help you distance yourself from those situations.


It sounds as though criticism either makes you feel insecure about your own abilities, or resentment when others unfairly blame you for problems.

So here's the thing: management is metadata for actual work. It has very little to do with the day to day business of getting things done. The more elaborate the management system, the more intrusive it is to getting things done. A good manager doesn't look to blame people for problems - they do whatever is required to help each person solve problems, period.

So when you get blamed for things that aren't your fault, don't take that personally. It's not about you, it's about that person's insecurity about their job and need to deflect attention from themselves.

As far as snarky comments go, well... again, it's not about you, it's about the other person and their need to feel or look superior, or to make people think they're funny, or it's compulsive. Unless this same person singles you out constantly, it's probably not personal.

As for feeling bad about honest mistakes... the only mistake you should ever feel bad about is the one you keep making. Everyone makes mistakes - some of us are just better at bullshitting about it. The key is to learn from them, and what questions to ask in advance to avoid them. That's just a thing that takes experience.

Eventually you'll get to the point where you don't take it personally anymore than you take it personally if you go on a blind date and the person doesn't fall instantly in love with you. Does it mean you're not lovable? No. It means that, at this moment, that person didn't want you. Again, it has nothing to do with you, and it doesn't even necessarily mean anybody did anything wrong. That reviewer might have had a shitty day, or might be under undue pressure themselves. Doesn't make it right to use you as a scapegoat, but that's just the world. People aren't always smart or fair.

As long as they don't fire you, you'll just learn to shine it on after a while. Whenever people are forced to interact with other people for any other reason than fun, there's always gonna be friction where they meet.


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.


Thank you.


Conversely, if you're receiving comments that have clearly been phrased as diplomatically as possible, take a pause and note that the other person is trying their best to not be personal about the feedback.

As a random example, sometimes I respond to emails on a one-on-one basis, removing the dozens of people CC-d on the original so the sole recipient can quietly correct a mistake and save face.

Something like 50% of the time they'll angrily reply and add back in the original cast of thousands, ensuring that everyone is now painfully aware of their mistake.


You should try to develop an accurate and nuanced view on your skillset. I am simultaneously quite proud of my guitar playing and acutely aware of my deficits. For me, when someone points out a problem I did not realize/perceive, I am thankful (if it comes from the right place). Building your own skill, confidence, and humility (as you try and fail) is the best way to develop resilience against criticism.

You also should develop a supportive peer group. I cannot emphasize how important this is. You probably will not find it at your job. Find friends you admire, and try to be the kind of person they admire.

Constructive criticism should always flow freely both ways. In most professional environments, this does not happen. (Criticism flows down the Org chart.) This is an inherently toxic situation.

Keep in mind, insults can masquerade as criticism. Snarky comments are insults masquerading as criticism (though they may be well intentioned).

Work environments are tough. I have had situations where a manager far less technically skilled than me criticized an architectural recommendation, the business now deals with the consequences of those decisions (bugs, instability, excessive resource usage), and I am comfortable (bemused) because events proved I was recommending the correct decision and I have a support network outside of work. This sort of situation is toxic to improvement if you are not careful. I suspect many people find themselves in these situations professionally so often they just consider it normal.


One more thing: I have seen managers blame engineers for their own planning/resource allocation mistakes. If you are a mid-level engineer, these mistakes feel like they are your fault. But zoomed out, they are a process/planning/management problem. If you do not have enough experience, you might not even realize the difference.


To me it has been immensely helpful to work with my own projections. As I've realised how much of my own inner world I project onto others, I've become more forgiving and unaffected by other people's projecting onto me.

There are many types of therapy that works with projections: https://en.wikipedia.org/wiki/Psychological_projection

Personally, i've done the work through ManKind Project, a non-profit for men's work.


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)


Two points: is your goal to be perfect (i.e., make no mistakes), or is your goal to improve the product? In the later case, constructive criticism is only moving you closer to that end goal, and can be welcomed happily.

Second point, do you respect the person giving your work criticism, and do you accept that it is useful for the product? If yes, then great, why feel bad if the goal was to improve the product, and their criticism will only make your work better. If no, then this can be a difficult situation, and I personally have been here before. I try to see things from their perspective, ask questions, etc., but there are definitely times when you will fundamentally disagree with the utility of the criticism, and this can indeed be a hard spot.

This all said, the manner of delivery makes a big difference. "Do better" is not useful feedback because it is not actionable. If you are getting this kind of feedback, consider finding a new job / manager. Feedback that is well thought out and actionable (e.g. "this can be refactored like so", or "this function needs another test case") is more than likely coming from a perspective that has seen many things go wrong, has an intuition about what can go wrong, and can be a learning experience for you. Sometimes, the problem cannot be articulated so clearly, in which case your manager should be careful to say so and they will have to put in some thought themselves into the problem and how to find a solution. If they are not then they are only doing half of their job.


What if I don't respect the person giving the advice, and I don't care about the product?


Then it sounds like you don't enjoy your job, in which case it is normal to feel bad when receiving negative feedback, and it also sounds like there are bigger issues.


Don't feel like you're the only one. It seems very common for people to have different flavors and degrees of feelings like this. Some inexpert questions to maybe consider:

* Where you work, does it feel safe in general to acknowledge mistakes? Is there a culture of humility, and the team supporting each other? Are the most skilled/experienced/respected the first to point out when they made a mistake? How do managers/leads react when learning of a mistake? Do you feel a general sentiment like mistakes are human, and that everyone i supporting each other and wants everyone to succeed? (This might not be just you, but something the company can improve.)

* Do you have a feeling about how your skills/performance relate to the needs/expectations of the team? Do you feel like you're appreciated enough? Do you feel the Impostor Syndrome? How does your current experience level fit in your team or company?

* You said "unintentionally snarky", but do you ever feel that someone is being mean, overly critical, or disrespecting? What about that being your initial reaction, and then later you decide it was unintentional?

* Do you feel like the perception of others when you make a mistake threatens your future?

* Do your thoughts seem to be mostly about meeting your own internal expectations of yourself, not so much what others think? Were you raised with high expectations put on you?

* Have you worked with a therapist/counselor on this? I'd think it'll take them awhile to get enough context about your work situation, but that's normal, and they have a lot of relevant training and experience that we don't. Your health insurance probably covers this.

* Have you talked about it with a trusted colleague where you work, maybe a trusted manager? They probably won't be as skilled as a therapist/counselor at all facets of this, but they have direct information about some of the context.


> Where you work, does it feel safe in general to acknowledge mistakes?

Is it actually in fact safer than hiding them?


The answer is simple: identity. Insecurity comes when we find our identity in our work and our ability to do it—but our value as people does not and could never derive from it.

Think of it this way: do your friends or family care about you based on your ability to perform to a certain standard? Of course not! (At least I hope not... that's its own problem).

Once you no longer identify with your work, you're able to take the emotion out of it, because it no longer affects how you feel about yourself. When you get to that point, you'll be able to see every experience as an opportunity to learn and improve, no matter who or where it comes from, which is the ultimate goal.

As far as dealing with other people, it's a lot easier once you've figured yourself out. You're better able to recognize that everyone's on their own journey, and their ability to deliver feedback in a constructive way is more about them than it is about you. Once you internalize these things, you'll start to care a lot less about their opinion of you.

Also, from my own experience, learning to confidently look stupid (i.e. admit that I have no idea about something), has been one of the biggest and most successful hacks of my career.

In summary: You are not your work. Focus on your own journey, and unsubscribe from giving a crap about what other people think about you. Conversely, it'll earn you more respect.


All these answers are interesting, but overthinking it. It's simple: find something to do away from work that you love just as much.

It's not your pride or your ego. Never lose your passion and don't let the world beat it out of you. Feel your own greatness in more than one way and it will improve your life in ways far greater than just the ability to take criticism. You need a playground in your life that's not connected to your paycheck to dump your energy into and make a mess.


Me Anglo, currently working for a French company with tons of immigrant co-workers so meetings are a dazzling display of accents and grammar.

When I send a PR the French guys especially come off very snarky, and I mean they're a pretty snarky people, sometimes guys will throw the most savage insults at each other in meetings and it always lands as funny.

Anyways I'm usually pretty good at taking criticism non personally but their pr comments can come off rough sometimes.

I'm not sure I have anything to offer that is not just an anecdote, but it does sound like you haven't really internalized that what goes on in your head goes on in everyone's head yet. I remember when I used to take everyone's words at face value and therefore feel inferior; it took me much longer than it should have to realize just how much most people bullshit all day.

You might be getting defensive, in other words, because you already felt insecure, and the source of that insecurity might be that you believe everyone around you is as self-possessed, competent and confident as they look to you.

Let me assure you that they are not, they're just as much an ape as you are.


I went through something similar. The core of it for me had to do with a fixed mindset vs growth mindset.

The research behind this showed that telling kids something as simple as "you are good at this" vs "you worked hard at this" can trigger a fixed mindset. This shifts their focus (and potentially their beliefs) that it's about them personally as opposed to the work they are putting in. From there all sorts of crazy things happened. Kids would protect their status moving forward, going so far as to lie to others about how well they did on exams. Meanwhile the kids that thought it was about the work they put in continued to grow, improve, and get better - leaving the other group behind.

With this knowledge, I began to change from thinking about comments and feedback to be about me and instead about things I've produced. Eventually it lead to me being able to respond with curiosity, embrace (and celebrate) mistakes, and to learn things much much faster.

This may sound odd, but I now have a visual I play in my mind to help navigate this. In the past, the visual was when getting feedback the other person was pointing at me when saying things - which felt like blaming, shaming, etc. Now it's that they are pointing at a piece of paper in front of us that we are both looking at. That piece of paper has things that I've produced and we are discussing it. It shifts the focus and blame from me over to discussing the results of my actions. This gives me a mechanism to mull over how to change my actions in the future to get different results.


Software is a pretty toxic discipline where everyone is constantly ranking other humans - best school, annual salary, funding round, ARR, leet code. No matter what you do someone will find a way to make you feel small because you aren't ranked good enough on some other metric.

You don't have to participate in those systems. There are places where humans are treated with dignity, not made to feel small and worthless if they aren't at the forefront of every metric, or have all the answers.

Compare yourself to yourself.


I think this is because to some, work is a part of them, or they fell they are solely responsible for it. Neither is true.

Make a distinction between you, and your work. You work, for the work to be given away. To your client. To your boss. To your customers. Dont hang onto it. Let it go out into the world.

You work with many constraints; time, cost, already existing components, other people. So what you do is not fully decided by you. So neither is the fault fully your either.

How you think about your work philosophically, matters here, I think.


Your work is not you. Of course your decisions shape the way your work comes out, and of course you used a considerable amount of time to create the work, so as a result you are involved with it.

But the key understand is if someone criticises your work, they don't usually target you — why would you even think they know who you are?

When they criticise your work they take time to tell you why they feel or think your work could be better. Instead of taking that at face value ("shit I am bad at making good decisions") a good strategy is to take the causal root of the critic seriously, while taking the suggestions they make with a grain of salt. The former comes from a true place most of the time, the latter can stand and fall with the subjective interests and knowledge of the critic.

So think about that causal root ("user had problems to understand X") and see it as a cause to think about the state of that project.

See how it is not about you at all? It is about the project. Of course your decisions shaped that project, but isn't it possible that there are parts within that project where your decisions could have been better? Sometimes we all take decisions automatically without giving it a second thought, so a critic can be a way to provide another perspective, one that we might not have considered before — that is a value in itself.


Criticism about code is either accurate or useless. If it’s useless, no point getting bothered by someone’s bad opinions. If it’s accurate, then thank god you won’t have to discover it later when it bites you in production. Always good to remember all the times you’ve messed up, makes you appreciate the extra eyes. Plus, no matter the quality, you learn a little more about programming and the people you work with by seeing their thoughts applied to something you made.


> I've come to realize that I often take constructive criticisms personally.

Somebody once told me, "never fall in love with your ideas." Because you are not your ideas. You are not the things you create. Your work and your creations exist outside of you and they can receive criticism without it being targeted at you 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.

When someone points at your work and says "this is bad" they are not pointing at you and saying "you are bad" are they? And if they are attacking you directly, and not your work, that seems more like a problem with them than it does you.

> 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.

Feeling your feelings is not a flaw. Wanting to stop feeling bad is worthwhile, but many people accomplish it by becoming calloused and cynical. They stop caring about what they do and both they and their work suffer accordingly.

Focus instead on separating your feelings about yourself from your feelings about your work. Be critical of the things you're doing. Acknowledge where things aren't great but you're trying to do better and nothing can be perfect.


First, recognize what constructive feedback is. Not all feedback is created equal. Most developers aren't trained in nor understand what constructive feedback is. Recognizing poor feedback is the first step.

It's easier to accept constructive feedback because it's not directed in a personal way. Someone who leaves constructive feedback isn't questioning your intentions, motives, skills, or choices. They're not leaving snark, highlighting your mistakes, etc. You won't see much use of the words, I or you. Constructive feedback teaches you something and should leave you feeling better about the state of the code.

The difference between...

We should use a wrapper around this type so that...

and

Why did you pass this type without wrapping it?

Is that the former is suggesting a logical change to the code that will have a positive impact on its fitness for use. The latter is interrogating the author and has nothing to do with making the code better.

There's no need to doubt yourself so much. Don't let poor criticism gaslight you into thinking that there is something wrong with you. If you're responding to PR feedback in an emotional way it's a sign that you're trying to protect yourself and there's a reason for that reaction. If there's a problem with the magnitude of your emotional responses, that's a different problem (I've worked with people who were not getting therapy for their anger management issues). However anger, resentment, etc are normal feelings and are useful.

The next step to dealing with it is learning how to be polite and assertive. Once you can identify feedback that is not constructive you need to learn to tell people so and divert them away. In other words, how to tell people to take a walk without telling them to take a walk.

And you can be proactive in this too: talk with your team and team leads about feedback and develop a code review guideline to enshrine some simple rules that nudge people towards giving the kinds of constructive feedback you're looking for.

And if your team is encouraging the kind of environment where you feel bad about honest mistakes then you should consider looking for another team if such discussions don't change anything.


I write plenty of feedback where I ask questions of the code author because I'm seeking to understand why they did something a certain way because there's a possibility that they are doing it correctly, but that possibility is likely small (e.g. it looks like they've written something in reaction to a possibility that is exceedingly slim, but possible). In that case it's very difficult to word it without sounding accusatory, but there's no way to word it without addressing them personally.


My usual response to this is: ask me in private or in a water cooler chat. I love to talk about programming. And I love learning how others approach things as well.

If the level of trust in a team is high enough that asking such questions is genuinely considered honest and useful then most people ought not to be feeling bad about honest mistakes or characterize feedback as, "snarky," and feeling anger, shame, etc after a code review. If people like these kinds of questions and it helps the team then maybe it should be in the code review guidelines.

For me, I have a hard enough time discerning the intentions of other people. Guidelines remove some of that ambiguity up front so that I can safely assume people are being genuine and it is obvious to everyone else, and me, when they're not.

However, the spirit of the idea is that code reviews shouldn't be leaving you feeling bad about yourself and the mistakes you've made. That could be a you problem but I think it's more common for us to self-doubt than to realize that perhaps the problem may lie with other people. Imposter syndrome, DK, etc, etc all seem to run rampant.


"Please help me understand <interrogative>"

"I don't think I understand this completely, can you tell me <interrogative>"


I had to take so much criticism from people who through bizarre turn of luck had to manage me, but were so pathetically bad at what they were doing, I just learned to ignore the criticism.

The difficult part is to make myself take people seriously when they criticize something I did.

For example, I had a boss who didn't like that I used Emacs and tried everything in his power to get me fired because of that. He would change the text of the ticket I worked on the last moment to look like I haven't done what was requested, or deliberately assign me to worthless / tedious manual-labor kind of projects, specifically assign me to work on various design / documentation documents which were stored in Perforce in MS Word format etc. I could quit any time, but the thought that he'd suffer more from having me around than I would from having to deal with his antics won. I realized that watching stupid people suffer as the result of their stupidity is kind of fun. Also, I got paid to do nothing of value. That was ironic, given I could actually do quite a bit for the company I worked for. But, hey, I bought myself a very fancy bike eventually, when I decided to move on, with all that severance money!


This kind of attitude strikes me as an excellent way to avoid ever pursuing introspection or self-improvement. Do you have any examples of criticism you’ve received in the past which you would deem worthwhile?


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.


The majority of the comments here seem to be focusing on the generality of the identity <-> work relationship so I'll touch on another aspect with a question; How do folks deal with this differently for in person (or at least "people you know") vs. online comments from people you've never met? I think most people find the first one pretty easy to work out, but the latter one has a very different dynamic.


Sometimes it can sting a little to know that I did a crappy job at something, but I see a lot of value in learning from it.

When my brother was in art school many years ago, he asked me to critique his work. After a few polite comments, he explained that I wasn't being helpful and the end result would be better if I didn't hold back on brutally ripping it apart. That mentality has stuck with me. I want people to tell me if my code is crap.


I have this senior teammate that has been in a field for 11 years. The mistakes he makes are such a beginner level, like, commenting-out 20 lines of code without 'why', over-complicating block of code/not seeing easier solution, premature abstraction, not writing tests etc. I know he feels embarrassed sometimes when I write a lot of comments in PR, but also it feels like he's appreciative. Such a weird mix.


I would like to say first is that: we are all humans.

When you are passionate in the work you do, invest time and effort to completing work for someone to find flaws, it's hard to not be offended and take things personally.

But as humans, we are able to learn. You made a big step in being aware that you are taking criticism personally. From here, you need to learn to disassociate that what you contribute is not a byproduct of you as a person. It is a byproduct of the ask, a byproduct of your knowledge at that moment of when did your work.

To shift your perspective from immediately seeing feedback as a personal attack, practice gratitude. Be grateful that someone else took time from their busy day to look closely at your contribution and provide feedback. Sure, its their responsibility, but they invested their time to review the contribution and provide feedback that you did on your time. Sure, if the feedback is snarky, ask nicely to reword it for next time.

Third, take advantage of every opportunity as a learning opportunity. Maybe you will learn something, maybe you will be more aware of a specific type of feedback next time you are contributing, that you will try not to repeat the same error.


The answer is, be humble, in your comments, and your criticism

If people could read my thoughts, half the time they'd think I was insane, but I know they're insane too :D

It is short term vs long term thinking.

Do you want to feel good for ~ 1 minute, or for the rest of your life?

Just pause, and think, before you answer. Pretend your mother, father, or your children are in the room with you, and you'll do alright


Given how you express yourself, I wonder if you could have some success finding one or more ways to afford yourself to be more detached from your output.

I can sympathize with where you are, as I believe I've been there, but am not there any longer. I've detached somewhat successfully from my own output by virtue of two things, the first and most important one is adapting a growth mindset, which you can read more about here

https://thelearnerlab.com/

and I carry that mindset shift in all parts of my life. Outside of coding, I do a lot of physical activities, and I have meaningfully changed the way I conceive of "failure" so that I have an easier time feeling inspired to try again.

Honestly, I sometimes try to learn by trying to fail as fast as possible. It's quite enriching and takes less of a mental toll.

Besides reading the articles on the Learner Lab (there are some good Power Company climbing podcasts where they interview Trevor Ragan - the guy behind it - that I much prefer to the articles) there is another active choice you could do and that'd be reading the first few chapters of The Rock Warrior's Way which talks a lot about how _not_ to derive a sense of personal worth based on how your performance is perceived by external parties.

Lastly, and this cannot be done actively, eventually, you might find that after you've written buckets and buckets of code during your career you simply care less about it as every design choice you make becomes a smaller percentage of choices you've made in the domain. I believe that's something that has happened to me


I've never had much of a problem with this - giving or receiving criticism - but I can try and shed some light on how I _don't_ have an issue with this.

I find that I naturally frame myself reading comments of my work as being inherently "with" the person. Think of it like watching a movie with someone, you both can comment on the movie you're seeing, and you naturally see yourself either agreeing with their critique or forming your own critique based on it.

In the same way, detach yourself from the work, and instead view your work on equal footing with your reviewers - this naturally leads to a more objective view for everyone involved. Reply not to their criticisms of _you_ but to whether you agree objectively or not, or perhaps suggest a different way they can look at the work. Oftentimes, after reading someone else's critique I can be self-critical in a way I wasn't before and it will lead to me refactoring a bit in response to my new perspective on my work, instead of completely taking their critique at face value. Use it as a perspective shift, but don't take this method as a way to lower your self confidence and give in to critical feedback.

Now I'll admit what I have more problems with is when someone clearly doesn't "get it". I'll bend over backwards trying to explain my rationale, when often the right thing to do is to try and understand what about my content caused them to be confused. Now of course, some people just plain don't get it right away and you should always feel free to defend your ideas.

As for snark.. defuse with humor. It's not always intentional, I've unintentionally come across this way (if you haven't you're probably holding in too much feedback!) so feel free to quip but don't go tit-for-tat. Try and cut through to the core of their feeling about *the work* (read: not you) and address that instead.


I'll also add that a fair amount of the advice I see here & most of the advice I've received on being self critical about things in retrospect I "should have known about" steer towards minimizing bad feelings from it at all costs. Here I disagree.

Use that bad feeling to be self critical in a new way - it's a lesson that leads you to read your own work more carefully before putting it out. It's painful, but ultimately for me it has been positive reinforcement and has actually unlocked increased levels of self-confidence for me.

Every time I put out a piece of code with a strong view, or say something in a meeting, I stress about whether it was silly or just plain wrong – and I immediately go fact check myself on it to appease that anxiety. I've worked with many folks who do not do this, and they have a bad habit of making wild confident statements that turn out to be misguided or wrong and it's often too late when that is discovered. Use the feeling to your advantage instead of running from it.


I learned to take it personally but not react badly. This way I am not trying to counter a normal human experience, but instead changing something I have total control over, my response.

This is a fight worth having because the more you do it, the better you get at it and you feel less and less attacked you feel when criticism comes your way.

The first few times doing this are the hardest. But after doing this for some time, I rarely feel criticisms are personal anymore. This also affected how people talk to me, and they make it less personal. It's an odd combination of success from both sides.

A key point to all of this, was I needed to make my criticisms less personal.

A manager told me a key point in a private conversation once that help me change my attitude.

He said "I don't like talking about people, I like talking about processes".

I had just been critical of a "person" in the conversation, and I realized how much easier it was to talk about a "process" with my criticism after I took his hint to heart. And others took some time to follow my lead on this, and for me to be consistent about this change of process.


Imagine for a moment that every time you submitted your work the only feedback you ever heard was "Great" or "Thanks". How would that make you feel? Engaged or isolated? Would you wonder if they are even giving your work proper consideration? Feedback is critical to improvement. Improvement is a continuous never ending process. Try leaning into it, Actively asking "Where is this falling short?" "Where is my thinking flawed?" Soliciting comment in this manner makes you an active participant in the feedback process.

Having followed this approach for my entire career, I can say that it has paid off handsomely. Some of the most valuable criticism coming from professionals that would not have offered actionable feedback had I not pushed past their initial stock "looks good" response.

Most of the time criticism = engagement, a person taking time to pay attention to your output. Making yourself vulnerable in this way will encourage a subset of others to behave similarly, which could lead to some pretty awesome peer relationships. Certainly has for me.


Just think about the saying "nobody kicks a dead dog". If there is no hope, there is no kicking. At least there is hope. Encouraging, I know.


One option is to be involved in non-work activities. If your only source of self worth is your job, then any criticism to it is a criticism to your self worth. If you have multiple sources of self worth the a criticism to your work has a smaller effect to your self worth.

For example, you might be a dance teacher in the afternoons where your students really admire you or you are the “popular” person among a group of friends.


First, you need to be able to critically evaluate the criticism.

Incorrect code is incorrect. There should be no ego there. Either in pointing it out or in correcting it. It could be incorrect due to many reasons: faulty assumptions, misunderstood requirements, etc. It's important for people on both sides to realize this is a mistake and they happen. Any single mistake is not a condemnation of an entire person. Let he who has not crashed prod throw the first stone and all that.

Then there is code that is technically correct but needs to be altered for other reasons. What those reasons are and how they are approached are important.

If it's a pure styling issue, first hopefully you have a linter that handles all of that. But if you don't, don't sweat the change. Having code look uniform is important. How they choose to address this matters more. The implication that people who use anything but "the chosen style" are inferior is a bad way to approach the issue. It's simple enough to say "We do it like this here for consistency".

If it's matter of altering patterns or what not, that could be a discussion. Did you do MVC in an MVVM shop? Did you adhere to neither? Do you prefer delegates to closures? Stored procedures vs inline SQL? Any of the vices to any of the versas. In this one, you can make your case. Maybe you have the right idea. Maybe your approach is better for this project. Maybe you win the hearts and minds. Maybe you don't. This you have to let go. And once again, it's important that no one approaches it from the perspective of "idiots do it the other way".

Basically, as long as they are criticizing the product and not you, it's fine. You aren't perfect. No one expects you to be. That's why we have reviews.


Constructive feedback is useful. Why should I feel bad about it? I feel grateful that someone helps me improve.

In the case of a snarky comment, I would assume the reviewer has some personal issues. I feel bad for them, not me.

A honest mistake is not really a mistake. I would do the same thing again if I were in the same situation. The fact that I couldn't have known about it is someone else's mistake.

Maybe dig a little deeper why you feel bad about it: Do you consider your self-worth lowered? Do you worry how others think of you now? Trace your bad feelings to a reason as specific as possible. Then figure out if is actually true. For example, you made an honest mistake, a team mate pointed it out in a review, and now you think the tech lead considers you a bad coder. If you dare, you can directly ask the tech lead. Just thinking about it might already help you realize it is silly though. Ok, to be honest you could realize that it is actually the case that your tech lead now hates you. That is still progress because now you have a concrete problem instead of vague bad feelings.


It depends on the criticism

If it's invalid criticism:

If it's from someone whose criticism matters: pursue the criticism and reach the truth through reasoning

If it's from someone who doesn't matter: ignore, make stuff

If it's valid criticism:

You learned something. You could have continued doing things the wrong way and been worse off for it. You are in a position where someone cares enough to look at your work and take time to give you feedback.


Good input from others about not identifying with your work, and trying to see your colleagues’ inputs as part of the process of creating something better together.

I would add a few things. At work, try to contribute to a culture of not referring to work or ideas as being “owned” by a specific person. This can reduce prestige. For example, avoid “Molly0’s PR” and prefer “The PR molly0 opened”. It’s in everyone’s interest that the PR is as good as possible. The person who opened it hopefully didn’t do so for their own personal satisfaction, but because it contributes something important to the codebase.

What I find most challenging is when discussing different points of view on a subject, rather than eg fixing obvious mistakes. That is, if two people have very different ideas about how best to approach a problem, and start to argue about which approach is better. It can quickly turn personal and prestigious if you only point out perceived flaws in the opposing suggestion. Try to see the different perspectives openly and again, avoid thinking of competing ideas as a competition of people.


I've a Manager who loves one thing - Ask questions. No answer ever comes from him, but he keeps on asking questions. And as you can imagine, I am always at the end of it giving him answers. If I ask clarification questions back, he counters that with a "Five Why" type questioning and most of the time I get frustrated, owns it up to give answers and cut the conversation.

After a few months working under him, I started wearing out and started taking it personally. I started attacking him back. Not only did that cause friction between us, he gave me a bad performance review rating. I didn't give up and kept resisting one way questioning. I reminded company pays him for providing solutions and answers when his team is in need, and not sit there asking questions.

A friend of mine understood the pains I go through, and suggested I read the book, "How to master the subtle art of not giving a f*ck". I can say I am now at peace and don't care a sh#t about most things. I am still employed, but stopped worrying and taking things personally.


I personally like this Socratic approach, but if person A kept avoiding giving answers constantly, even if it’s clear that the other interlocutor is getting frustrated by this approach, then, to me, it means that person A is not able to give any answer in that domain and they think that their job can be done by a chatbot and by following an inflexible approach.


I thought this was going to be a positive story about how his approach helped teach you to explore solutions via the Socratic method, I wasn't expecting your reaction at all.

Many people would hate a manager who only gave solutions, often described as micro-managing. Here we have a manager who seems hated because he only asked questions.


Yes, same! My approach to less-critical PR comments tends to involve asking questions instead of saying "this is wrong/bad" so I was hoping it would be a positive story too.

I can see how a manager never providing actual guidance could be very frustrating though! I do recall a similar situation in the distant past, and in that case the manager was completely out of his depth and could do nothing but bluff.


> But I just hope to learn to stop feeling bad for honest mistakes.

I'm curious what tone your reviewers are taking?

It takes while to develop a good tone, as a reviewer, too.

Assuming your manager isn't doing the review, bring up some of the feedback with your manager. Tell your manager you're looking for technical help. Don't act insulted, but if the tone of the feedback is really off, it will show.


Beginner answer is first just start by not showing that you take it personally.

Senior and more evolved answer is you separate yourself from your work, "you are not your work". So someone critiquing your work doesn't mean their critiquing you.

More senior answer is that you are not attached to getting the best answer yourself, but more attached to getting to the best answer by any reasonable means (including someone else s*itting on your work).

Ultimately, you are trying to arrive at some truth, which you have produced through the lens of your own conditioning, someone is trying to provide what they think is the truth through the lens of their own conditioning. Behind it all we'd like to think there are good intentions which are all to aspire towards the truth but that when we express this idea and it gets "colored" in some sense by our own impressions of the world, it may not always come out the right way, and so you have to take a deep deep breath, to let it all just be, and press on.


Think more about the consequences. Many times they don't matter.

But think about why this is common amongst engineers, the consequences seem to matter. Software engineers initially get clout from being right, that devolves into criticizing other engineer's code while the usefulness of being right tapers off very quickly. Many of engineers got into the trade after being told they were so smart and intellectual, and this incentivizes being correct and making correctness your whole identity (to the annoyance of others and all your interpersonal relationships). But this is not productive, there is a limit to the utility of this. When you get criticized by another engineer it might seem like there is a consequence, but often there isn't.

One way to combat this is to ask yourself what game you're in:

Are you in the money game? then perfection doesn't matter, you can make the most barely functioning antiquated software that powers the government and fortune 500 companies, and be protected by the state for your own fuckups.

Just remember that.


I used to be the same way, but I've intentionally changed myself to fix it.

First, I don't treat my code as an extension of myself. My code is not me, and criticism of my code is not criticism of me.

I love a good solution, and I write good solutions, but all things created by humans are flawed, and therefore everything I make will be flawed. If somebody sees something I didn't, it's not because they're necessarily better than me (though they may be), but they have a different perspective. Often, it's something I would have seen if I was in their position and not so close to the code myself.

And because of this love for a good solution, I've trained myself to have a love for good criticism. Every piece of criticism is an opportunity. You are not perfect. You have room to grow and always will. Criticism is potentially a door to this room for growth.

Just internalize the mantra of self improvement. "I was wrong" is a wonderful thing. It means the same thing as "next time, I will be right".


If it's a snarky comment in a review, they're the problem, not you. If it's an honest review, then that's life, it's about the code, not about yourself.

Can you look 2-3 years back at your original code and not find any problems? Then that's a problem :P We all learn, evolve, and improve, so at the end of the day, any feedback is better than no feedback.


This is related to your question, but not directly answering it.

I have been privileged to exist in area where a lot of feedback to my projects comes from informal means. Friends taking a look at projects or just giving me time to think about issues. This has led to improvement that may not be as efficient, but was more meaningful.

Importantly, a lot of the feedback was positive. Perhaps overly so. It almost always remained positive, even if my code was shit. This doesn't mean I don't recognize when there are bad smells or practices. It didn't spoil me into thinking all my code was great.

I've made careful and deliberate choices to follow that practice of feedback with others and in other spaces.

So that's cool I guess. Others may have other criteria that are important. Sorry it doesn't explicitly answer the question, I just wanted to offer that.


I struggled with this quite a bit throughout my career until about a year ago. For context, I've worked in the insurance industry for 17 years.

So, what changed/helps:

1. I do a weekly therapy session. It doesn't have to be about or related to work, but I noticed that my propensity to take things personally tied to many other broader issues in how I was raised, grew up, etc. It's probably not happening just by chance. Sorting through my broader mental/emotional balance really helped.

2. A lot of folks have the impulse to react and interrupt when receiving feedback. I think, instead, it's easier to simply let that person exhaust their comment to you, and then take a moment collect your thoughts if you actually need or want to respond, which takes me to my next point...

3. Have a framework for deciding whether that feedback is worth it. You don't need to respond in the moment with any particular comment other than to say "thanks." Never write something out and send/post/etc. immediately without taking a step back, re-reading, and calmly evaluating how appropriate that writing really is.

You can then dissect your feedback with a series of questions to understand if the feedback is worth ingesting or not, like: - what can I learn from that feedback? - was that person stressed about something when delivering feedback? - was I stressed when delivering feedback? - how important was the topic relative to the broader goal or priority list of the company? - Etc.

4. Everyone makes mistakes. Even those people you're thinking about in your company that don't. They make mistakes too. There's lot of subjectivity in mistakes as well, which is another way of saying that no one is perfect. The best way to deal with mistakes is transparently own them and then move on rather than dwell - easier said than done - but effective.


Two key points that helped my team through a rough patch were:

- one of my co-workers setup CI automated formatting/style checks (i.e. PEP8, mypy, isort, etc.)

- much more extensive guides on how to contribute good code with many generalized examples as well as do's/don'ts. When new nitpick comments come out in the PRs - the guides were updated to avoid future nitpick PR comments

After some initial pain - we really haven't had issues with PRs anymore whereas before it was pretty painful. That said we've been working together for quite a while now.

I think a lot of times the original author may have something in mind w.r.t. the codebase/architecture/formatting/schools of thought and expect the others will pick up those ideas naturally and they get frustrated when other team members don't.

The other team members being code commented to oblivion get frustrated with what seems obscure, snarky nitpicks.

By making stuff explicit upfront - people can self help/self correct/self edit before the PR is even generated.


My current strategy is twofold:

- First, allow yourself to feel whatever you will feel. This is unavoidable. Let it be. Not only you are not your work, you are not what you feel.

- Also, recognize that no right decision can be made in a state of anger. So if you are feeling any negativity, you must postpone whatever decision you have, writing an email, or any other (within reason of course).


Go to Architecture school for 5 years. Tutors used to keep scores over how many students they could make cry. Anything else will seem tame in comparison. At the end of it you come to think of your work as something you can discard at a moment’s notice, you’ll have no sentimental attachment to it at all, if anything you’ll slightly hate it already anyway.


It's hard because if you care about your work, there is a piece of you in it. However, it's also necessary. I wrote a whole essay about this here:

https://www.observationalhazard.com/2020/11/on-taking-critic...


Realizing you can’t know everything, don’t know what you don’t know, and respecting other people can have had different experiences than you. All without judging yourself negatively for those realizations. They just are facts. No need to be hard on yourself if you put in sincere effort.

Take all criticism as a learning opportunity.


It is personal.

I've had 18 months working on a project where code reviews were going badly wrong so my perspective might be a little different than it was before this and maybe needs some realigning, but your PRs probably aren't anonymous and reviewers absolutely do change their comments depending on who the submitter is.

If they're genuinely constructive comments made in good faith by a warm and open reviewer prepared to take the time to help you address them, I don't tend to find people take them badly. If that's what's really happening then maybe some retrospection is in order. Your code isn't you, it can be changed and improved and once committed it isn't yours alone if it even was before then.

Reviews inherently revolve around social dynamics, personal relationships every bit as much as a dispassionate, logical view of code. As such, they're fraught with difficulties.


Spend time thinking about times you got criticized but instead of trying to justify, explain, rationalize or just ignore it turn toward it and just accept it. Relax and just let all the thoughts (and more importantly) feelings run over you. Don't resist and don't turn away. Just let all those feelings out. Our thoughts and feelings create an imaginary world that most of us live in in our waking life but that's all it is; thoughts and feelings. Its subjective, transient and temporary. When you can just indifferently witness you'll see how temporary and subjective (and silly) it all is. This removes the person. You (the person) is the one that reacts, reaches and resist the thoughts and feelings. Stop that and the person disappears. It's hard at first because you have to sit through all the uncomfortable feelings. It is worth it though.


What you’re going to have to work on is discernment.

You can’t, and shouldn’t blunt or callous yourself to criticism, after all it’s the important feedback that you get from your environment that informs where your attention should be for learning or applying lessons learned.

Rather, the key task now is for you to increasingly categorize and label this feedback in ways that allow you to appropriately evaluate whether the feedback is valid and perhaps does require introspection.

The more you can evaluate things like this, with curiosity as to other reasons that may be contributory, the more you’ll realize at least in my experience that “it’s not about you” in most cases.

Finding that saddle point of anxious introspection and detached boundaries tasks a while so, be patient with yourself and give yourself grace. I know I’m still working hard on it myself and I’ve been in senior leadership a long while now


Here’s an approach you can try with yourself:

When people criticize you, how do you feel? “Bad” is not an emotion, it helps to be more specific.

Do you feel the way you do way because you’re unhappy with your own performance and you wish it was better? Or because you’re unhappy with the other person’s unnecessary (or unkind) criticism of your innocent, honest mistake?

Or other reasons?

Often these kind of personal investigation questions can help. You may get clarity. Once you figure out clearly what’s there for you, try the same “why approach” on the other people involved, in your own head, without asking them. Why did they say what they said? and how did they feel at that moment? And why did they feel that?

If you find it hard to know a reason, try using your imagination.

Maybe there are insights that you will arrive via this process that will transform How are you see it, and that’ll help make everything seem better for you.

I hope you figure it out and get some peace. :)


Practice! Also group crits. While the format differs from place to place, in art / CGI / illustration / animation a crit (critique) is a session where everybody lines up their work and then you go around the room and each person critiques each others work, saying what you like about it, what you dislike, what you would change etc., while the person being critiqued takes on board or pushes back against the criticisms. Because you're taking it in turns to critique and be critiqued, and are doing it in person, there's social pressure to be polite and constructive, however it is still very uncomfortable to begin with. But do it every week for a few years and you end up with a very thick skin. You can take lessons from the process into other areas of your life and even introduce something parallel when developing where you do group code reviews.


Others have made great points. I'll offer a practical approach that worked for me.

I found criticism was difficult because it came as a surprise. It seemed to me as if the person giving the critique was using criteria that I wasn't made aware. This felt unfair.

The surprise, not the criticism itself was the struggle.

my solution was two-fold:

1. Eliminate the surprise by "shopping" my work around early and often for feedback. 2. By doing step 1 I would learn the "hidden criteria" that others would use to judge my work.

At this point I am rarely if ever bothered by criticism. Since I ask for feedback early when I don't feel "done" there is nothing at stake. Early criticism doesn't stick and just feels like we're working together on a solution.

If you go up the mountain and work alone, for a long time, criticism will feel worse. I do the opposite. Might work for you.


This is from a different disciple - creative advertising, but I think it holds up to most other creative tasks. Advertising is renowned for having sometimes very brutal feedback / cancellations at the last minute / being very competitive etc.

An old creative director I knew used to say, almost like a mantra, to the entire group as work was being presented and judged that ‘we are on a journey’.

If you don’t think about it, it could just sound like wanky media BS. But it’s not.

It’s about kind of surrendering yourself to this journey and that being what’s important. Don’t worry about a few mis steps or failures here and there. Leave your ego out of it. We’re still all just on the journey. It’s also about not getting too obsessed with knowing exactly where you’re going. You will figure that out as you go based on things going right or wrong.

I find it a nice way to think about doing anything creative.


Mistakes should be viewed as a systemic issue.

There is a quality assurance approach or theory from W Edwards Deming that needs to be absorbed by institutions, and it’s that everyone is trying to do their best job and it's the machinery that is getting in the way or creating barriers. Most errors arise from processes but anything in an organization could potentially get in the way. One role of a manager is to work to remove these barriers.

You should demand any negative feedback provided is specific and try and see it as someone taking the time to try and help. Given that someone is trying to help, ask questions you can use to improve things and see the feedback giver as a person who has knowledge you lack and can gain.

You also have to be prepared that you will get unskilled feedback and that is a different opportunity for you to stretch leadership muscles.


Mistakes are natural, common and expected. Is how I translate what you mean by systemic.

Is that what you mean?

Otherwise I have to disagree.


My response was taking into account many assumptions, but Deming’s 'Out of the Crisis' is nearly 500 pages on the topic, so I can’t do him justice in a few lines.

Let me try and give you a simple illustration. So imagine you’re a new manager at an ad agency and you task a team of writers with developing some ad copy. You get the documents back and they are filled with typos. The writers are all professionals with experience and training. So you have to ask yourself, in assigning the task did I develop a stable system of copy development? The result is a major amount of rework and may increase the cost of the project or delay the deliverables to the client, so no this isn’t a stable system of production. So as the manager you need to look into the causes of failure, perhaps it was unrealistic timelines, a lack of a dictionary for use by the team, or a lack of internal process the writers should use like proofreading their work before submitting it, or lack of training on effective proofreading. There could be a number of barriers in the system that are getting in the way of quality goals that as a manager you can address.

Of course, some people are in the wrong job or incompetent and that’s another story, but Deming argued that most problems in organizations are caused by poor management and faulty processes, not by individual workers. He advocated for a systemic approach to quality improvement that involves everyone in the organization.


The trick is really accepting that you feel that way. When you get the notification, feel the sting, feel the embarrassment.

Maybe even write a letter in defense of yourself to the critic, but never send it.

Take a few deep breaths, and when you’re ready, move on. You’ll have dealt with the feeling but you won’t have ruffled any feathers.


> Do not attribute to malice that which is adequately explained by incompetence.

It's rare that people are trained in the art of criticism. Most of us try our best, but often fail at criticising the work while separating it from the author. It's hard to criticise while simultaneously empathising with the target.

I often think of this when I've received criticism that stings. Most of the time it's simply carelessly written. Ironically, empathising with the critic reminds me that they're only trying to help.

I still remember working hard on some work before showing it to the boss. He pointed out a number of ways in which it could be improved. I wasn't thrilled with his reaction, but followed his instructions. I was surprised to find that the project was greatly improved, and that the criticism was worth taking on board despite my initial feelings.


Don't focus on being right. Focus on the work being right.

Accept that you might be wrong. Welcome anything that can help you toward the task being done right and be thankful.

Of course, if you can avoid being wrong, do. Because you can't always afford being wrong. (in some professions, it's a life or death sentence for someone)


Lot's of good comments already. I personally needed to shift my mind regarding written messages. When I receive feedback in written form and I think the other person has ill will, I perceive the text as angry written and a personal attack.

When I started checking with others how they interpret it, they always saw it as neutral or constructive. So my assumption of the senders state of mind, influenced the way I perceived the feedback text.

For me it really helped to "baseline" with others and/or often just ask the sender what the intention of the criticism was. Get into an analytical state of mind and figure-out what the intent behind the criticism is. If could be that it's made with the best intentions and can help you get better at what you do.


Play team-based online competitive games and you quickly learn to handle criticism. Play long enough, get to a high enough level and you learn to separate the ad hominem flamers and the flamers who are actually constructively showing where you are wrong (while still using ad hominem attacks of course).


Learn to give feedback that doesn’t hurt people’s feelings.

This lets you more easily see what people are trying to say separate from how they say it.

Classically, programmers tend to be both not very sensitive towards how they phrase feedback, and fragile wrt. criticism of their own work. So many programmers work alone because of this.


You couldn’t feel that way if you had no doubt or did not care about your level or worth as a developer. So you do care about how others perceive your level and you are not totally convinced that your self evaluation is right.

I would say don’t judge yourself too much. You don’t have to be perfect (especially if you are not, and nobody is). You probably are in this business to learn, so give yourself some room to learn a bit (or a lot!) more. People that criticize your work may be wrong. Don’t take their criticisms as absolute truth. In case you feel they may be right, drop your ideas right away, ruthlessly steal theirs and make them yours. This is how you don’t get stuck in local minima. You don’t have to care about having been wrong, there are more constructive things to do.


I don’t take criticism of my work personally because I’m usually the one giving it.

I’m only partly being snarky here. I think constantly about how I should improve past code, why I shouldn’t have done x, etc. Self criticism is healthy and takes some of the sting from external criticism.

Beyond that, I think “lean into the punch” is an affective strategy. If someone says my code is crap I can either 1) fight them and try to explain, justify etc or 2) say “you’re absolutely right”. 2 takes less energy and deflates most reasonable people’s criticism, esp in person. Of course if the criticism is wrong then that’s harder and maybe not even appropriate. But even then, framing it as “a valid criticism, but Im balancing that against X” helps the person feel heard and likewise more likely to hear your reasoning.


As @dusted said, one important thing to remember is the disconnect - the work you do is a culmination of any number of factors on a given day. I couldn't agree more.

For me, the biggest thing though is trying to have a learning or improvement focused mindset. Understanding that most comments and every mistake you make are a step in a direction where you've learned something and gotten better. You, the codebase and the reviewer are all better for the experience.

Also - it IS okay to feel a little bad or frustrated when you've done a piece of work you're particularly proud of and it gets a lot of criticism. It's important to keep the above in mind, but it's also human. Don't feel bad for feeling bad. Just try to regulate it, and remember it's for the better of yourself and everyone.


> 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

I propose this change in attitude: this is a part of you, accept it & learn to use it to your advantage.

Some people don't care when they're criticized, some do. Who performs better at a task: the person who doesn't care or the one who does? Use this desire to not be hurt to fuel you to improve yourself (you've already started with this post, i'm just redirecting the energy.)

The other thing to be aware of is to make sure you're not blaming the other person for the bad feelings. Your feelings are a signal to you, a signal that something is wrong and that you need to do something to fix it.

It sucks at first, to be extra sensitive, but in the long haul it is an advantage.


Probably the best answer I can think of is to just stop caring what people think (about your work/code), I know my work is never perfect (or even good) but I show up anyway. We are not defined by the code we write or the work we do because to be honest most of it is probably not bringing that much value to society anyway; what defines us is our character. Stay humble and look at every criticism as an opportunity to learn and build relationships.

I've been working for a long time now and I have learned the hard way that nobody is perfect and nobody cares if you are perfect, in fact people tend to prefer those at their own level (not perfect), but most of all relationships matter and are probably the most important part of having a healthy and enjoyable career.


Some body stopped you from shipping a mistake. Just like when someone stops you to tell you your fly is down or a shoe is untied, feel a little embarrassed, and a little grateful that they didn't let you walk around like that all day.

> feeling bad for honest mistakes.

Use it as an impetus to get better. If you make the same kind of mistake repeatedly how can you modify the way you write code to not do that anymore. There is a popular saying "the worst code I know of is code I wrote six months ago", but if you aren't analyzing and improving (not just changing), then it will be just as true six months from now. Code from the previous month should be better than the code from two months ago and so on, otherwise you are chasing fashion and quality is stagnating.


I always try to take the view that anyone pointing out my mistakes is just being helpful, and to be grateful for it instead of being offended.

I used to struggle with this like you describe, and still do to some extent, but I think the fundamental cause is just insecurity, at least in my case.

I just have to remind myself that everyone makes mistakes all the time, and that's why we have code review. If someone spots a mistake in my code in review, they just saved me from looking even dumber down the line when something breaks in prod. I've also learned that feedback from others is the single most powerful way of identifying holes in your knowledge.

Over time, by forcing myself to look at things in this framing, I've come to mostly enjoy constructive criticism, and see it as an opportunity rather than be offended.


Your code is bad sometimes, so is everyone else around you. I've seen people who have been doing this for 30 years and think they are gods because they refuse criticism. In reality all they are doing is creating an environment of hostility and suffering because while they were awarded the seniority they hadn't earned the responsibility to own it until they can admit the first critical step

All code sucks, your job isn't to make great code it's to make great products and do your best to reduce the stress on your team, code quality will follow but first you have to be honest, open, and compassionate and sometimes a JR will take that personally and that's ok, eventually they won't or they will find out this industry isn't for them.


I try to project the criticism back to my original thought process when doing the work. Why did I choose the approach I did? Did I consider the issue brought up in the review? How would things have been different if I had?

I find this last part helps me integrate the feedback by effectively running little simulations of how I could have taken a different approach. It seems to deactivate the otherwise prominent memory of the embarrassment of a bad review by replacing it with memories of the simulations. I have a terrible habit of ruminating over incidents from decades ago that my mind has tagged as shameful even though they’re objectively irrelevant… Thinking about detailed steps for different approaches and building associated mental images seems to help divert the shame tag.


The way I like to think about it is that I imagine, and am probably right, that the person on the other end of the review approaches it the same way I do - When I do my reviews, I don't particularly care who's work it is, I only care about the code itself and the problem it's trying to solve. My feedback doesn't come from a malicious place, it comes from wanting the codebase to be in the best possible state it can be given our collective knowledge. Why would the other person be doing it any differently?

Sure, there's always going to be assholes and people that are just straight up mean for the sake of being mean, but in my experience those types of people don't last long anywhere because nobody wants to put up with their shit.


Information is power. If you're doing something wrong you want to find out. If somebody has some opinion about you - you want to find out. Make sure it's easy for people to give you information even when it's something bad about you.

That being said be careful not to go too far with it. People are only humans, in that they have their own interests, flaws, play power and status games and so on. More often than not criticism, even when it appears to be constructive, it's just a jab at you, especially if it's delivered in public. Nobody's work is perfect and hindsight is 20/20. Take everything with a grain of salt and be careful not to undermine your position in companies or your self image by being too welcoming about criticism.


A lot of good comments here, here's one point I haven't seen: If you can, just respond tomorrow. Use the evening to exercise, visit friends, play trivia, etc. I find it can help you force your brain to see the comments as just one part of your whole life.


I like it, whenever someone is criticizing me or my work I take it as an opportunity to improve.

I always second guess and ask for more details, because the person might just be misunderstanding me and I don't want to act on a false negative feedback.

I also make sure to tell them that's like pair programming for life, that the person making the critic is helping me, that I like it and I also tell a funny story to make them comfortable.

I tell the person that when I was in the army I had big angry men with guns screaming insults at me, there's nothing they can say to me that I might take offense.

Give me feedback please.


In addition to the great advice in this thread, it’s worth being aware of something called “Rejection Sensitivity Dysphoria” (RDD). It isn’t a diagnosable condition according to the DSM-V but is often observed coincident with ADHD. Basically many forms of criticism or even observation can trigger a deep and intense fight-or-flight response due to challenges regulating emotions.

Therapy and medication can help. If you think this might be in play it is worth talking to a mental health professional.

https://my.clevelandclinic.org/health/diseases/24099-rejecti...


Sometimes it's hard, but most of the times I find it easy. I think it's because I always assume I could write better code.

That is, after finishing something, if I did a rewrite say a month later then it would have a better design, with better code and hopefully fewer mistakes.

Thus if someone else points out my design or code isn't the best or I've made a mistake they're kinda just pointing out the obvious.

An important note though: this does not mean I don't defend my solutions. They may criticize it, but I judge their criticism before answering. Often I'll agree, after all, most of the time my solutions can be improved. But sometimes I'll disagree and then I'll say that and give my reasoning why.


It really depends on the type of criticism. People criticize for different reasons, some are constructive and some are not. I feel that the onus of good behavior lies on both the criticizer and criticizee. People should strive to listen to and accept valid and well-meant criticism, and try to take that small pain from it as motivation to do better. In the larger picture, organizations and teams will only be able to be better when people accept their mistakes and hone their skills. Having the ability to tolerate discomfort and growth is much like lubricant in a machine that prevents it from overheating, and it's necessary.

However, some people who criticize excessively do it for not entirely altruistic reasons or they lack the emotional intelligence to understand when they are breaching someone's limit of tolerance. Even valid criticism should bear in mind quantity, frequency, and severity of impact on the individual being criticized. I think most people who are being thoughtful in the moment will do this, and try to suss out someone's limits and temperament before unleashing a volley of criticisms, but there are some who use such learning opportunities or their position of authority to vent their sadistic urges, or they simply do not understand healthy boundaries and just criticize relentlessly regardless of impact or effectiveness. I strongly believe that this latter category should not be normalized or accepted.

So you've got to ask yourself, are the people criticizing your code probably doing so with the intention to make you better, or the team better, without undue malice? That's usually the case. Try to focus on their intent to help you do better instead of the disappointment of the criticism itself. But, if you've found yourself in the unfortunate situation of being carpet-bombed with criticism maliciously you don't necessarily just have to put up with that and it would be a good idea to try to find an organization with healthier communication. People who have been in such unhealthy environments before (or had unhealthy family environments) will likely overreact even in healthy environments later, and it can take some time to learn that not everyone is out to get you, they just want you to do better next time.


> But I just hope to learn to stop feeling bad for honest mistakes.

What a strange idea. Or maybe not. I always thought of "feeling bad" over my mistake as a way I perceive the brain doing processing of negative learning feedback. So, "stop feeling bad" equals "stop learning" to me. Now that I think of it, maybe there's a way to detach processing from feelings, but I'm skeptical.

Feeling of accomplishment when you've done everything good is too sparse and not intense enough for me.

As for "not take that personally" I have no suggestions. I naturally presume that people care about code and not about belittling me (until there's enough evidence contrariwise).


It's one thing to feel a pull and drive to do better, and to feel a little bad because you've unintentionally not reached your objective.

It's another to feel shame or unworthiness, especially if that's being loudly injected from an external source.

The former can be a good impetus for learning and growth. The latter is the opposite, and can build such that it can make a negative impact on your overall growth trajectory.

I have co-workers that are able to deliver constructive feedback in such a way that I only feel curiosity and a desire to improve things. Often there's no bad feelings present at all. Much of that is also dependent on my state of mind too.


I feel I am the same way and in every new 1:1 where someone asks how I like to receive feedback, I have learned I need to ask them for it async. I tell people that if they have anything to tell me, to put it in a slack message or email so that I can take the beat, feel negative, feel like I'm being attacked, and then process that emotion before responding.

It's something I'm still working on and as others have said, having worth outside of your career or outside of others is a big portion of my ability to work through the emotions. But while I'm still learning that, I really have found power and stability from letting that emotion pass before responding


I guess it’s a few questions here:

1) is the person honestly just trying to help make the codebase better?

2) is the person wording it in such a way that doesn’t insult you?

3) what is your preferred way they would’ve made their comment, if any at all? Is it reasonable for you to have that preference?

4) what are your thoughts when you receive good faith, non-insulting criticism, and why do you have those thoughts? What is the underlying emotion you’re feeling that’s triggering that kind of thinking? What are the justifications you have under those feelings & are they reasonable ones?

Breaking down why you react the way you do, and all the aspects of that interaction, will help a lot in figuring out how to feel less defensive over it.


Walk away from it, then come back to it in a bit and take the feedback at face value again.

This is obviously easiest with Slack, Google Docs comments, pull request feedback, Hacker News comments, etc. In person feedback might require a poker face and later reflection.

I find, most of the time, that feedback feels a lot less reasonable (and more personal) the first time I see it, but that it feels more reasonable and actionable when I come back to it with a bit of distance. And then there's something to accepting part of their feedback, holding back on some less significant part, for a sort of win/win where you don't have to feel like you gave in on everything.

Easy to say, much harder to do though!


The easy way is to reframe it and create a template for receiving and responding to feedback.

Receive -> Repeat out loud -> Think (take your time) -> Feel -> Filter -> reject/accept -> Respond

Respect other peoples opinions and try to think deeply about them prior to feeling or reacting to them. You may find a significant insight.

Pauses and slower talking receives more respect and comprehension in general.

Defend your work with the sandwich method. Acknowledge and repeat the feedback out loud. Insert a long pause and genuinely think about it. Filter your emotion and identify a logical reason the feedback offends you. Reject or accept the feedback and close with appreciation.


Even though we live in a world where it seems everyone shares opinions freely, that’s mostly just the internet. IRL most people won’t look at you in the eyes and tell you what you think. A healthy workplace is the opposite, where your manager and peers will proactively comment on the quality of your work and your behavior. This might be annoying at times, but you have to look at it like a gift. Most people aren’t at functional workplaces and go through life without ever being seriously chided for unproductive behavior. Or they think their work is higher quality than it could be. Learn to take feedback and you’ll be the best version of yourself.


A frame of mind that helps me is: I am doing important and difficult work and I cannot expect it to land perfectly. Whether it's because I did something wrong or because I didn't explain it well, the "surface area" for someone to see something I missed is pretty large.

So you go into your day expecting that there'd be feedback (and in fact if you don't get any, you should be concerned) Then when you get it, it's not something that smacks you in the fact, it's something you wanted and expected.

BTW no all feedback is useful, you'll still have to filter it for relevance but you need to have an open aperture first.


At one stage in life I had this problem regularly. It was very stressful.

It dawned on me that I was feeling like my own value was bring questioned when I was criticised. The material reality of whether I was actually being criticised fairly or if I even believed it was reasonable to be criticised didn't even factor in. In short, I was having an ego panic.

The fix was unfortunately just a lot of patient introspection. Why do I feel a certain way? Why is one thing my first response instead of something else? Do I like that I do that? Those were the REAL issues. Being contradicted just highlighted it.

Best of luck overcoming your troubles. I am sure you will succeed if you are diligent.


I'll take this one step further.

I am currently writing code that I think is, from a design-perspective, completely wrong. But I've learned to completely disassociate myself with what I code. I'll do the best that I can to accomplish because THAT'S MY JOB. That's how I frame everything. I will protest, I will point out flaws, but once the dust has settled, if my boss says she wants it a certain way, I'll do it. I'm happy to just be coding and if they don't want to listen to my advice then I'll just do what I'm told, go home and enjoy the money that I make by doing the things I want.


Code ownership is a code smell. Your nose is being put out of joint because you interpret criticism of the code as criticism of you. But it's not, it's the team's code, and the team is making suggestions to improve it.


Check out "Thanks for the Feedback: The Science and Art of Receiving Feedback." https://www.stoneandheen.com/thanks-feedback


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!


This is my framework:

1. Acknowledge to myself that I don't know everything. Do the work to the best of my abilities.

2. Anticipate criticism with the optimism that I will learn something from it

3. Receive the criticism, and take time to really understand it. If I don't understand, I ask questions until I do understand. If I do not believe it is better than my solution, I make my point the best I can.

Part 3 is the tricky part because communication is hard. But all team members have to discuss in good faith and understand that the team is more than the sum of its parts; each opinion should hold equal weight (even if its between a junior engineer, and a team lead).


Everyone makes mistakes. The actual mistake is not fixing your mistake. Why take something personally when they are helping you?

The problem is that most people take criticism as if you punched them in the face. If you never criticize another person or thing ever again you'll be way ahead in life. Polite people will never help you, but here's the problem. Your enemies will also not help you. "Never Interrupt Your Enemy When He Is Making A Mistake"

So imagine the rather unique individual who will actually give you criticism. It's the most wonderful thing to experience.

"Love your enemies, for they tell you your faults." -Ben Franklin


Navajo teaching on the subject: https://www.youtube.com/watch?v=QkQDL-bkBnQ


Other comments here give good advice about how to deal with well-intentioned technical criticism: meditation, journalling, etc.

For dealing with snarky or nasty criticism of you or your character, I would highly recommend listening to recordings of Marshall Rosenberg's books and/or seminars on "non-violent communication" (available on Spotify, Audible, etc.) The NVC philosophy is absolutely game-changing: it's to change your focus away from the "jackal comments" and empathise with the human needs underlying them. It's God's work -- connecting and healing for you and your critic.


I realised long ago that I am not perfect, there are limits on my attention to detail, and my ideas are not always the best way to do things. If someone spots one of my momentary lapses of brain, they've done us both a favour. If they know a better way to do whatever we're trying to achieve, great.

If we can delete vast swathes of stuff I wrote last week or last year because something better comes along or we just plain don't need it any more, awesome.

Code is a liability, shipping a working product to the best of our team ability is important and (honest, well intentioned and useful) criticism is one good way to keep learning.


It took me a long tome to mostly get over this, but a turning point was realizing how temporal code is. It’s written in a snapshot in time, to solve a problem that may evolve hour by hour, competing with dozens of other tasks also needing attention.

So what you produced in that maelstrom is really just a reflection of the moment, not of you.

This also helps me not judge other peoples' code. I only see the outcome (the code), not all of the inputs so it's hard to know if this is good work or not in a "is this person good at their job sense" (though obviously there is better and worse code).


I’ve found it helpful to remember that the thing being criticized was created by a past version of me.

A version that didn’t have all the information, a version that doesn’t have the skills and experience present me has, a version not even present in the conversation.

It’s a small way to create some distance between the work and your person.

Another thing to remember is to always ensure the criticism is against the work and against some shared measure of quality.

Too often criticism actually is personal (unintentionally or not) or the criticism is about a requirement that wasn’t shared at the time. Both of which are about the inexperience of the critic not you.


I recently heard a criticism that this forum was looking too far backward in tech history and lore. Can I suggest everyone young and old look back even further in moral history. Start with the secret diary of Marcus Aurelius. It is about 2000 years old, and written by an emperor, and not meant to ever be published. But it is easy to read quickly and will teach you every thing you need to know about how to handle a tiny PR criticism. Don't trust me. Read it. No-one will criticize you for like-harvesting or virtue-signalling the same way again. Or at least a bit less :) All the best.


I actually make my objectivity a point of pride.

Yes, there is a bit of a sting when you put up a PR or a design doc and your teammates basically roast it, but then there is a prideful "oh yeah, I'm someone who doesn't take any of this personally."

It's part of being an engineer, working in engineering culture. It's not personal, and it makes the codebase better. It helps to remember that your goal is the long-term health of the platform, not a little bit of your PR that you thought was clever.

It also helps to avoid toxic teams. In a good team, feedback is offered objectively, without judgement or attack.


I feel that this problem might be a part or some shape of an actually quite complex and many-faced impostor syndrome and the best way to fight it would be to try to learn and accept the idea that it is totally fine to not know something or to not be exceptionally good at something. Moreover, only by accepting these ideas and keeping them in mind helps us open up our hearts for new discoveries and that is the only way how do we learn. It is hard to learn something new if you refuse to accept or have hard times accepting that there are things that you simply do not know yet.


> But I just hope to learn to stop feeling bad for honest mistakes.

A: By trying to fix them.... this is the way.

It is simple, the difference with people that take feedback personally and the ones that don't, is that the last people are willing to make an attempt to fix the problems the others don't want to be bother.

I always take personal feedback with this mentality "ok fine, lets do it your way", if it works and its either better or equal than my solution then fine good for you, if it isn't then its the awkward/refreshing? moment when you have to tell them they were wrong and you have proof.


How do you take criticism outside of work? It feels like an exercise in self-reflection. It is easy to attribute code to intelligence, but it is not that simple. When people say "This code is no good", you need to realize that their delivery in feedback, while flawed, could stand to hold some truth, and that doesn't make you any less intelligent. I've been writing software for well over a decade and the most impactful thing I've learned is to lean into and embrace my failures. Try to remove ego from the situation as much as possible. Good luck.


The code is not yours. You are a hired gun and should do what you are told. I have a different opinion all the time about PR comments but I always do the "thumbs up" and change it if it is functionally the same.

The main criteria for code is does it work and some try hard will always want you to over engineer the simplest of tasks, let them have it, who cares. You should not let your job define you and be your whole identity.

Be passionate about your own projects, don't hang out with coworkers in your spare time and never attend a christmas party without overtime pay.

You are not your job so why care about PR comments.


> I see this as one of my major flaws and try hard to mask how I feel.

It's not a flaw. You're learning. Don't judge the sapling as if it's a full grown tree. For me, acknowledging my "bad" feelings was the thing that helped me deal with them constructively the most.

Even better, talk about them with peers you feel safe with. Say "your comment brings up feelings of... In me." instead of "you make me feel...". With the right person, that's a doorway into mutual understanding and reframig the experience for yourself.

Everybody has these feelings, you'll find out.


It's probably a bit late now. But be deliberate in your choices. So if you get critique of them you have a reason and a new view to grapple with. If you follow trends, or just do what others did because thats what they did. Well then you'll find critique hard because you were just a follower. But if you made a choice, cut a corner because of a reason, and got called out on it then you can reflect on that and all of the ego stuff just slides away. I solved it this way, because a bad solution now was better than a great solution two days from now etc etc.

Make deliberate decisions.


Stop judging others so harshly it’s probably the #1 way. Whatever measure you use is going to be used on you. Step #2 is probably to listen fully to the end before ever speaking. This is hard, and took me a long time to get right. Just let them speak.

When receiving feedback, start by saying internally, or even verbally, I realize that I’ve made a mistake, and I’m thankful you have my best interests in mind and feel comfortable enough to approach me about it. I tried my best, but what did I not understand correctly about the problem I was supposed to solve, and what would have you done instead?


> When receiving feedback, start by saying internally, or even verbally, I realize that I’ve made a mistake

No, feedback is someone else's opinion - don't assume that it's absolutely correct, listen to it and weigh it up and then decide if you agree with any of it.

You have to be able to accept feedback without taking it personally, but you should always be objective about it.


I was like this but reality beats it out of you over time as you are experiencing right now.

The reality is you will make mistakes, even if you are the best programmer in the world.

You can shift your mindset and accept that you are making mistakes which you are blind to see and then get feedback as early and often as possible to deliver a better outcome.

Now I welcome any type of feedback, regardless of the tone because you can think about it and fix it if it needs fixing.

Anything worth building requires multiple iterations to get right.

Adopting this attitude will also help you in the workplace because people love to work with people that take nothing personal.


I believe it goes something like "sometimes you win, sometimes you learn". The ends are important, but they do not justify the means. In this case, if the means are you did your best at the time with what you knew at the time, you did good. It's all you can do. Don't worry about what you can't control. Criticism is free growth - no need to attach a price to it by taking things personally. As to how, just remember how you feel when you bring something up to your manager, or a senior executive, or another engineer - you mean well. So do they.


My most successful strategies for my personal growth in this area have been

1. Work to separate my personal identity from my work. This is really hard for me and takes regular reflection and work, but over time it is possible to separate the two.

2. Frequently remind myself that everybody makes mistakes, it is simply part of being human.

3. Practice humility by welcoming the feedback and expressing gratitude for the ability to learn and grow. A little self-deprecating humor doesn't hurt either, and can soften the intensity of the feelings associated with receiving criticism.

Best of luck in your personal growth journey


In the context of things that aren't outright mistakes..

It's important to take some feedback as .. others desires for features, and attempts to share experience with you.

It is easy to use software we write for ourselves, it is important to understand that no one will find our software as usable as we do. Taking feedback is how we get to write software that is usable by more people.

And as you grow in your career, you will meet people who had negative experiences in different ways than you. When this is shared via feedback, it is best to learn from other peoples mistakes than to repeat them.


Taking criticism of your work personally is fundamentally egotistical. The code is not part of you.

If you're making mistakes and feel bad about that, create a checklist and go over it before you ask for reviews on your PR.

If people leave criticism on your PR, ask them how they would do it!

If people point out mistakes, ask them how they would avoid making those mistakes!

If you feel personally attacked or criticized on a PR review you should present the situation to your manager and get an unbiased opinion from a 3rd party.

Comments and discussion are for the code, not you. Don't make it about you. Focus on collaborating with your teammates.


I feel this issue is most likely a reflection of the way your workplace measures and conveys performance. If in the back of your mind you feel your sustenance is at stake due to criticism, you'll never be able to take it lightly.

Ultimately looking at your overall performance (rather than individual bumps up and down in a short period of time) is the way to put employees at ease.

You can't fix how your employer measures and enforces performance but you can learn to evaluate your own work in stretches of 3-, 6-, 12-months rather than at the granularity of a single PR or a single mistake


I mean... Nobody likes having their mistakes or imperfections pointed out, and it feels worse online, where expressing empathy is harder than in person. It's ok to feel bad.

Remind yourself that their feedback, whether it's warranted or not, is just a part of the process of finding the fit within a team. Over time you'll develop a relationship together and find common ground. Try to develop trust in each other, adapt to each other. That will make it feel less bad, and help you write code in a way that your team mates appreciate (even if it's not your preferred way).


1) Take something that you don't take seriously.

2) Compare the submodalities of that to the submodalities of something you do take seriously.

3) Change the submodalities of the latter to those of the former. You will no longer take it seriously.

- - - -

What are submodalities? Qualities of modalities.

So what are modalities? Jargon for the subjective experience of the senses (visual subjective experience. auditory subjective experience...)

Our subjective experience has a structure, you can deliberately change the structure to change your subjective experience.

It's actually pretty easy once you get the hang of it.


Stoicism has a lot of information about how to react to the world and your emotions. A lot of people think it’s just have a stony outward appearance and burying your emotions, but it’s actually much deeper than that. Recognizing that you ultimately choose how you react to a piece of criticism is the first step. Understanding that the flairs of emotions that you have and your thoughts are not you is another. Once you understand that it becomes easier to practice (and you have to practice) stoicism in your everyday life, including during criticism


You give yourself permission to make mistakes. Too many of us come from a background where making mistakes result in bad grades, being marked as a failure, being held back. But making mistakes is how you learn. When you're no longer getting a grade for how you did as an individual along the way, but rather are "graded" by how well your team delivers final results, then you appreciate that constructive criticism is entirely necessary for getting winning results. Ultimately, by being on winning teams, you promote your own growth.


1/2) “Just because you are right does not mean I am wrong”

There is a meme gif that sums this up perfectly

The gif in question has two figures discussing a 6 on the ground which is 6 from one person’s perspective and 9 from the other person’s perspective.

2/2) “I never make predictions, especially about the future” aka Acceptable choices at the time

If you did good work, and operated with as many of the facts that you had at the time, then that is a great outcome.

Not all the facts are known. Even when all the facts are known the choices may be a coin toss. Do not beat yourself up if a choice did not work out


1. Don't care too much about my job/code/etc. Does it really matter?

2. Is this suggestion a good one? Then I will use it, regardless of how it was worded. Is there something to disagree with? Let's talk why it's a bad (or good) idea.

3. Having feedback is better than not having feedback. Or being in a situation where people do not question your technical desisions and just follow along. Non-ideal feedback is inevitable part of that.

4. Do you always give perfect feedback? Think about that next time you see a junior dev submitting a O(n^2) solution to O(log(n)) problem.


In a lot of interactions, the person giving feedback is just doing their job.

I’ve been a team lead and CTO, and when I was presented with some strategy or deliverable, it was my responsibility from that side of the table to speak from experience and point out banana skins and improvements.

There is really nothing personal at all in these interactions, it was just trying to deliver a better product as a team.

If you are putting forward bad work, or I am giving poor advice then the business has a performance management problem, but the to and fro of feedback is just a normal part of teamwork.


> banana skins

Thanks for saving your co-workers from a possibly tragic slip and fall.


It’s understandable to feel personal attachment to one’s work, but it’s important to remember that criticism is not a reflection of your worth as a person. Instead of taking it personally, try to view it as an opportunity for growth and improvement. It may be helpful to seek feedback from multiple sources and identify patterns in the critiques so that you can address specific areas for improvement. Additionally, practicing self-care and maintaining a positive attitude can help you stay grounded and resilient in the face of criticism.


Learn about the concept of diffusion as explained in ACT (acceptance and commitment therapy) best taught by the book: A Liberated Mind by Steven C Hayes. Basically following a set of practices to distance your thoughts from yourself so you can not buy into them.

One of the practices I've felt most helpful is to name the entity that is arguing in your mind and is telling you to take it personally. I named my voice Herman. I often tell him to shut up. It's a great way to distance yourself, albeit, it does sound a little mad.


Something that has helped me, in many similar situation is to restate my intent.

Reminding myself that my goal is to be a better engineer tomorrow and not really to do a great job right now. I am after getting better, current work that i am doing is just way to get better. Taking such a position seems to solve lot of problems.

Criticism becomes something that i am actually after. I am not attached to what I build in the past. Of-course it is crap, i would not do it the same way now as i am better.

Take pride in getting better. Not in in the job done.


What someone else thinks is their business - it's caused not by you but almost everything else that happened in the universe. Sometimes people just didn't eat breakfast, or someone beeped their horn at them on the way to work. Sometimes people are imbalanced and give inappropriate attention to the sign of fault. All of these things are not your responsibility.

What is your responsibility is if you chose to listen or not - you don't have to be involved or give someone else your attention if you don't want.


One thing that’s helped me is to realize that the person submitting the criticism wants the same thing as I do-a better thing- and that it’s not my work but ours.

I think software is creative and a sort of art so work is personal, but it’s collaborative and multiple people work on something. So even though I wrote it and they criticize, that means they are interested and wanting to improve the thing together.

That’s better than not caring or disinterest. Even if it’s their job and the are paid to make it better, it’s easier to build with feedback.


One of the best things anyone ever told me, one of my old bosses once said to me, when I was frustrated and angry about a bug I created, “There are two kinds of experiences in life, winning experiences and learning experiences. And what you’re having right now is a losing experience.”

I subsequently learned to keep my perfectionism in check. As others here have said, honesty is the prerequisite to solving any problem, so please count your self-awareness in this area as a big win. Take your learning experiences in stride.


Interesting typo, “losing”.


I think you get it. :)


“Man’s search for meaning” is a book that partly teaches that regardless of the situation, you have control over how you react. I take this to mean regardless of your day, you can still choose to be happy. I’ve had similar communication woes to you, and it’s easier for me to remember I do not control the feedback (or it’s tone, content, etc) but I do control my reaction to it. So if you want to improve as a person, you can do that by having a positive reaction even if you don’t feel that way.


I punch a pillow. J/K.

Personally, there's nothing you can tell me that is denigrating or unflattering about me that I don't already think about myself.

I am a short, fat, brown skinned, unattractive male immigrant of average intellect.

I already beat myself up quite a bit so it makes it very easy to accept criticism from others. It also keeps me constantly trying my best because I never feel like I'm secure in my standing that I can just relax. Keeps you humble too.

But at least I saved a ton of money on my insurance by switching to Geico.


"I did the best I could with the knowledge and resources I had at the time."

That is confidence/self-forgiveness summed up in a mantra.

You have ideas floating around in your head about yourself and external "validation" of those ideas result in pain. When someone does something that results in you feeling pain, it's natural to feel defensive.

So it's a matter of shifting your focus from external (in)validation towards internal validation.


Just separate all critics in 2 parts:

1) Professionals in your sphere: Take as much critics from professionals in your sphere as you can. Sometimes you need to even pay for this. Analyse and go forward. The more mistakes you will make the faster you will reach your goal. Act it as a game.

2) All others: Just tell them magic words: "This is only your opinion, Thanks!" and do nothing.

Be happy )))


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 :)


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.


Depends on environment you work in. I had a great chance to work with people who showed me how it’s done properly and told what can I do better and I did. That was awesome constructive place. At the moment I am in very toxic place, looking for a new job. And I don’t feel anything constructive. It’s really personal. The colleagues try to use every weakness and my every error to take advantage of. Hopefully soon I will be in a better place. Where I can learn again instead of fighting back.


That sounds awful. Try to be aware so as to not bring any bad adaptations to your new job.

An old colleague shared a quote: "dysfunctional behaviors are functional in dysfunctional environments".

I've had to change up my style when I've moved to better (less political/dysfunctional) teams. I've also worked with some that never changed their mindset after being on a bad team: they then propagate that same broken behavior at their new workplace.

Best of luck in finding something better, it's out there.


In almost all industries: you are splitting the check, not the atom.

As others have said, it's a senior dev thing, after awhile you realize you won't care by next week. There are some coworkers that are jerks, but they are usually in the extreme minority if you are working at an ok place.

In the lab we used to say "Well, at least no one died!", usually to defuse a situation that was bad. Like say, water from the ceiling leaking on to your half a million dollar laser...


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.


There is more than meet the eye. Some people will mess with you in a subtle way. They are able to play with your emotions in a way you wouldnt think is possible because they learnt at the very young age.

You've got to learn to differentiate "you are acting like a child" and "someone somewhere is playing with you". Listen and trust your feelings. If you're feeling bad, 90% of the time it's your body warning you of some external danger.

Force yourself to trust yourself.


'taking it personally' would mean it affects your own self-perception or sense of worth.

The simplest remedy is discovering your self-worth notwithstanding the comment. Remember your intrinsic value and the accumulated value you've already brought to bear.

Your ability to bring all criticism back into this context lets you treat it from a more detached (clinical) position. Judge the merit of the opinion, plan out any potential improvement or remedy, and frame your response accordingly...


I'm just dead inside so I don't care unless it is going to result in a late night. I really don't like software development; haven't my entire 20+ year career. It pays a dumb amount of money though and I'm a tech lead so not really any other options except a minimum 50% payout to change. Which I've done before when I took a 4 year break from software.

So I just do the best I can which is apparently pretty good and just trudge on without caring.


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


It helped me to understand that one of the reasons I'm upset about someone pointing out flaws in my work is that it could directly affect my livelihood. Too many problems and I might not get a good raise, or even get fired.

The company I'm at isn't really like that, but I've worked at enough that it's really, really hard not to think they will be. And so the instinctive reaction is to defend myself. I think I do pretty good at controlling it now, though.


A good company should have processes in place to minimize the chances that people make mistakes. When mistakes inevitably happen, all the company made the mistake as a whole, not the single person. What happens next should be: what happened? Why did it happen? How are we fixing it? What are we doing not the make it happen again? plus possibly other mistake minimization processes.

If your company is not firing people for making too many mistakes it seems that it's structured in that way or a similar one.


It starts by not taking the work itself personally. Then any criticism of it is not personal either. You are not the result of your craft. You are the craftsman doing your best in a given environment, under certain conditions, in a given scenario.

Life is complicated. You are not omnipotent. These are very basic absolute truths.

You need to actively recognise this, and make it a part of your core mentality, and mentality drives the sentiment. Sentiments drive emotions. Emotions control how you react.


An easy going, easy to read/listen, pretty short pair of books that I would suggest taking a peek at, by don Miguel Ruiz, in the order they were published, would be..

"The Four Agreements" https://amzn.eu/d/cB522Cj

and

"The Fifth Agreement: A Practical Guide to Self-Mastery" https://amzn.eu/d/3inVZsD


In some cases, you can preempt criticism by being critical of your own work first in a public manner, such as maybe calling out something that you anticipate another dev might not like and explaining why you did it that way. That said, you may just run into people who like to complain and nitpick, dealing with them is more about being mentally and emotionally prepared to stay calm and grounded and try to steer conversations to a productive place.


I welcome criticism of my work, as long as it is valid and constructive criticism. Like "have you considered naming this X" or "have you considered this edge case? Think about doing this" is constructive and welcome so I can improve my work.

Unconstructive stuff that is almost meaningless and without content like "this is code smell" or "should refactor this" etc. is not, and I will not appreciate that kind of criticism.


Set your goal correctly. Your goal isn't to be flawless, it's to produce optimal output. I think looking at criticism through that lens will help.


I like the "Retrospective prime directive:"

> Regardless of what we discover, we understand and truly believe that everyone did the best job they could, given what they knew at the time, their skills and abilities, the resources available, and the situation at hand.

Assume this attitude when you're looking at other people's work and questioning their decisions. Assume that others will do the same for your work.


IMHO the best way to handle a negative feedback is to try to learn what was wrong and why you made mistake in order to improve and don't repeat them again and again. Everybody can make mistake, the difference between a mediocre professional and a great professional is that the great will not repeat the mistakes.

Remove any kind of personal attack, analyze your actions and think about how you may improve to avoid making mistakes and getting negative feedbacks again.


from my experience, acquiring the self-awareness you need in order to articulate this problem is the biggest hurdle to solving it -- you're on your way!

early in my career, i shared this hangup and because i was so emotionally invested in the products that i worked on, i considered criticism of my work == criticism of me personally.

i think the next step is evaluating how effectively you are separating your work and personal life. when i have struggled with this issue the most, it has correlated with me being too emotionally invested in what i'm working on.

make sure that you have projects and interests outside of work that fulfill you so that you don't rely an outsize amount on your work for fulfillment. often this means having better guardrails about work-life-balance -- do you clearly define when you are and aren't available for work, for example?

the other thing is simply reminding yourself that your work isn't you, and it doesn't define your value. working with complex systems, we are going to screw up at times, it's an inevitability. if you aim to not make mistakes, ever, and bristle when they are pointed out or criticized, you're going to struggle over the longterm to get along with the people you collaborate with.

ironically, i have found that being more open and accepting of the "dumb" shit i do leads others to think more highly of me as an engineer. i think most of us can think of "that person" we've worked with who can't take criticism and recoils when questioned -- when you do, how did that you feel when you experienced that behavior firsthand? if i had to guess, it probably wasn't positive. we can do better!


My personal approach is to not identify with my work. The code is a mean to an end which is solving the problem at hand. If someone has a better approach, they are contributing. If they are bitching in the comments, it means that they have nothing better to do and my time is more important than dealing with them.

It does not always work, especially if I'm tired or distracted, but if I start catching that I'm getting annoyed, I try to take a break.


Understand that the code you’ve written doesn’t belong to you. It belongs to the company.

Take no offence if the company wants it done in a particular way as they’re paying for it.


My tactic is to meditate on the fact that there is always someone better than me at some thing that I’m doing at some point in time.

Learned this lesson mostly from sports, fwiw.


I am on opposite spectrum where I don't fully understand why people take constructive criticism negatively. Over years, I have learned to offer criticism only if asked and only with a lot of praise. (Though I still sometimes make mistakes of being direct with people I am close with).

My parents are highly critical, perhaps, that's why I am not bothered by constructive criticism. Though useless and unasked criticism still bothers me.


I got over it when I saw how often criticism was used as either a control mechanism or as a way to distract from the criticizers flaws or mistakes. I’ve found it sadly uncommon that someone comes from a place of earnest desire to offer meaningful feedback that doesn’t come with an agenda. So often criticism is subjectively stylistic rather than substantive, at which point it’s hard to take it as anything less than personal.


So for me, I take criticisms personally, but only personally. However, it comes across to others that I am upset with them and hence I have heard a lot during my career that "hey, we are very careful giving you feedback, because you can take it personally and react".

I don't know what to do, because I don't like burdening someone else, or failing myself to a point where someone has to give me feedback. Just a perfectionist attitude.


First of all, everyone takes them personally on some days/circumstances and to varying extents.

I try to categorize these bits of feedback by “is it at least partially true?” and “was it well-intended?” If it’s either of those things (most are both), I want to figure out what I can learn from it and realize that I’m the only possible person who will care about this feedback in 2 weeks’ time, so it’s up to me whether to care about it or ignore it.


First, think about if want to do good work (that you can say this is good).

How to know if you are not convinced of that? If it feels like you need courage to fix or redo something. Similarly, if you boast about your courage.

To me that's the difference between an A and B player, both are good but for B doing good work is somehow painful.

To answer your question, since nobody is omniscient, realize that if you feel bad for making an honest mistake you are fighting Nature.


I treat criticism as a valuable resource to help me grow, and I'm grateful that somebody took the trouble to help me do that.

I remember someone once asked how their business could be more successful. The reply was to fail more often!

We will often learn best from our mistakes, if we let a bit of our ego go and avoid being defensive.

Having said that, I'm not some saint! I have to remind myself that criticism is valuable to me, it's natural to feel a bit defensive.


I got better at taking criticism when I started unpacking my depression and anxiety in therapy. My self worth was so low, any critique of my work felt like further evidence I was a worthless person. I think it can go the other way too, where you're ego is so huge you can't fathom having made an error and get defensive. So my small bit of advice is to be mindful of where your feelings are coming from.


What works for me is to just ask everyone for everything that is not great with my code and really encourage them not to hold back. By doing it this way I get a lot of great feedback, and it gets less dramatic somehow. If people can sense that you can't take this kind of feedback they will behave differently and you might pick up that they are unconfortable, making you feel like you suck even more :D Good luck


it takes a lot of experience and wisdom to know when criticism is valid or not and that just takes a lot of time (decades) to learn. Even then, it's a hard pill to swallow. For me, it's much easier to take valid criticism from someone above me or below me on the org chart rather than a peer.

People above me on the org chart are usually coming from a broader picture and, at worst, in the back of my mind I can tell myself "this is just marching orders". For people below me on the org chart I usually have the mindset of I'm just an old fart and this is an opportunity to maybe learn something new or communicate better.

I have to really work to not end up in a confrontation when a peer criticizes my work. My usual mental reaction is "who the eff are you to say anything about anything!". How I cope is I wait 24hrs before responding, usually I'm way less emotional after some time. 9 times out of 10 the criticism is not something warranting a fight and i come away from the experience having learned something.

In my business peers are competition though so having such a hostile reaction to peer criticism may not be typical.


I design products, sometimes for others and sometimes for myself. A lot of that process is visual design. Everyone has an opinion when it comes to visual design. I stopped letting criticisms bother me because they had one of a few outcomes. 1 - it created an improvement of the product. Great! and I got to learn something 2 - someone had an opinion. None of these things warrant having your feelings hurt.


It is important when a team works with PRs that it is clearly agreed upon what should be reviewed during PRs. PRs is not the place to discuss solutions. If that is your problem then solve it before you start coding.

I view PRs as a kind of luxury. At many corps the deadline is yesterday and any single mistake you make ends up in production without reviewing or testing.


All feedback is a gift. And like gifts, some are good and some are bad. No matter how bad the gift, say thanks, and then later on you can ignore or throw away that gift.

In the context of something like a PR, a comment that suggests something but you disagree with, you simply tell them that with a bit of supporting evidence. If you do agree with their suggestion then that's an awesome gift they've given you!


I can't speak specifically to development/programming, but in a more general technical sense I have noticed that I take pride in my own work and knowledge. When that is criticized, I take it personally regardless of how innocuous the comment might be. Anything negative or critical about it is (to varying degrees) offensive to me. I realize it's stupid and irrational, but it is the gut response I have. My temperance comes from identifying this character flaw within myself.

I think the core problem therein is specifically the word "pride". That is to say, a lack of humility. It is a raising of my own abilities above some set standard. It is to find some "special" value in my own actions and ability. It is a desire to be recognized for my work.

Humility then, is what I need. Humiliation is the means in which I learn humility - to be frustrated and upset with the response from others, but to not respond with those feelings and instead absorb the information as best I can.

To put it clearly: You don't stop being offended by criticism, but learn to process it more productive ways.

You learn to deal with people pointing out your shortcomings by examining the shortcomings that they point out. It then is a matter of realizing that those are shortcomings. After realization, with time, comes acceptance. After acceptance, (hopefully) a motivation to do better. This is a process that in my own experience takes years to accomplish. This isn't to say that, even if you were to do this you would somehow become the most humble person ever, but simply a slightly less prideful one. To work as hard as before, but a slightly softer head.

You will still have many areas you might be extremely touchy about - maybe even retreading old areas you thought you had overcome. (Been there!) I don't think that there is some "magic cure" to this kind of sensation. I simply think that you start to identify the process of dealing with it in a more constructive manner over time. Part of that requires learning more about yourself, and identifying patterns of behavior others bring up.

Arrogance (pride) is an absolutely huge part of my own life. Trying to tame that requires feeling a sense of humiliation on a routine basis. I don't think I'll ever become "numb" to it, but simply be able to process the repercussions more quickly than I had previously.


Chill out, realize that if you hold to a higher standard, then everyone else will have to adhere as well.

If someone is asking for changes, that implicitly means they're willing to review those changes as well. If it's good feedback just comply. Realize that if that person is holding you to a high standard, they're probably holding others to the same standard, so your life will be easier.


Focus on the opportunity being presented to you to improve your work. It's a gift. Embrace the fact that ultimately your work can only improve thanks to feedback. Realize that by taking feedback personally, you're actually discouraging future feedback and indirectly you are actively decreasing the quality of your work.

Changing your perspective can make it easier to take feedback non-personally in the future.


Two things that helps me a lot:

- Take a time to think about that criticism. Don't answer immediately.

- Realizing that someone make and effort to make constructive criticism shows common interest in the issue. Without it, nothing valuable is build.

I personally value more constructive criticism in my work than compliments. I'm not saying that compliments are useless, but the prevalence of compliments could make criticism personal.


If somebody tells me "you are wrong" i take it personally. If they tell me "this looks wrong" and explains why, they are not criticising me but my work, which might truly have been wrong. It's the difference between "you" and "it" being wrong, where only one of those is objective.

Another nice example:

"I'm so sorry, but this looks stupid"

Vs.

"I'm so sorry, but you're being stupid"


TBH I think in both your examples the problem is the word "stupid" and not the structure of the sentence. Also just deciding whether some statement is a personal attack on the usage of you vs it seems a bit shallow. I would wager that most people writing these comments don't even think much about the difference.

As others have written: always assume best intentions first and try to read the comments in the most favorable way.


I find it very hard to not take criticism seriously, if I’ve invested a lot of effort and especially if the criticism coming out of left field.

Here’s my story: Just over a year ago, I was working at a FAANG co and got head hunted by a recruiter for a promising growth stage startup. Everything was great, until they hired a non-technical director for engineering, and the founders handed the reins of engineering to this guy and mentally checked out from all things engineering. A few months later, he goes on to hire a pseudo technical slacker who cannot code without CoPilot/ChatGPT as my team lead(hard to believe, I know). I kept asking to switch teams, but it fell on deaf ears. Finally after getting a stellar 6 month performance review, my non-technical manager gave me a needs improvement rating for the 2nd year end perf. And this was in spite of being the most prolific engineer in the whole company, with ~20 engineers. It turns out that my manager always wanted me out, and had been building a fictional narrative behind my back, out of my requests to switch teams for months. Needless to say, I wanted to leave at that very instant, but resigned served the notice period and left soon thereafter.

Now, I’m working on my own startup for over a month now. I’m working super hard and I haven’t been this happy in a long time. Life IMO, is too short to put up with toxic BS like what my manager put me through.


Recognition is the first step. It’s important to realize that it is normal to be defensive about criticism. I’d argue that’s the default human condition and most people don’t even realize they do that.

Being able to absorb criticism without personalizing it is a skill that needs to be learned and practiced. And you will not always get it right even when you get pretty good at it.


Anyone who dishes out criticism should be able to take yours seriously and change his own code. That means you're partners in helping each other get better. Anyone of your peers who thinks his $%^& smells like roses and everyone else's stinks should be avoided, passive-aggressively if needed (not talking managers who should tell you what to do).


One technique can be listening to the self-discovery of others. This is germane to your concern: https://www.tiktok.com/t/ZTREgGosr/

This individual explains how their process of sharing feelings on something is often perceived as an accusation by others.


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.


Leaving a snarky comment isn't constructive, it's just toxic. To answer your question: Try not to identify with the code you write and be grateful for any useful tips and pointers. Looking back your code from 6 months ago will almost always be shit. When it isn't you might've hit a plateau and should start worrying about that.


You are judging yourself and others in the wrong way and have bought into the falsehood that people are good or bad based on performance. You therefore take criticism as a threat to your virtue. Don’t judge yourself or others by performance. Once you’ve fixed that problem with the way you view others, it will also fix your own self esteem problems.


Being able to look at your own code and notice what's wrong with it is the first step.

There are always at least trade-offs made between conflicting quality goals. Understand that others will value trade-offs differently. In a team, their preferences count as much as yours.

You wrote the code, but it is not you. Critique of the code is not critique of you.


You develop thicker skin as you get more push back. Also don’t think your code is the best way, which comes from being open minded. If there is an asshole that really rub it in and call names, sure you let them know but mostly they won’t. In other words practice the above and you will be able to take criticism like a good team player


I find that it’s important to be objective with respect to these things. Some people are very good at this, have great ideas and you should listen to them. Most are not, do not and you probably shouldn’t.

In other words, criticism from someone you rightly respect is to be seen as a gift.. a learning opportunity. The rest (vast majority) can be ignored.


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.


Become your own worst critic, particularly of all your old code, while at the same time understanding that everything is imperfect and you need to get work done today. Helps if you stick around in a codebase for multiple years, so you start seeing all your old bugs, layered on top of all the previous authors bugs.


If you are improving every day, look back at your work from 5 years ago and how it isn’t your best and didn’t define you to improve to today.

In sums ways you’d hope todays work wasn’t don’t improving or you would end up having pages.

Criticism is that if it’s not improved upon.

The operation who gets to learn, grow and improve is the winter compared to the person pointing it out.


Park your ego at the door when you get to work.

Base your ego on the success of your relationships (mom, dad, siblings, wife, kids, gf, friends whatever you have today).

It will take investment, self awareness and ability to forgive and forget.

You could direct this investment to work relationships BUT more than likely none of those folks will be at your funeral.


Ask for feedback early.

Nothing sucks more than working alone several weeks on a PR and then getting reviews about the whole approach being wrong. This applies to both for the reviewer and the recipient.

Better work in tandem together with someone and share the ownership of the design.


I distance myself from my work. My goal is to fulfill requirements to and build the best product. That requires taking consensus into account (even though it is sometimes correct to ignore it). Everything should come down to reason, not ego. Your team is there to make you and the code/product better.


1. That feeling needs to go away. Accept the intent of the criticism; fix the problem and move on. 2. I know I'm not perfect and do miss things or make mistakes. 3. As an engineer, any code I write I own it only for a short while before I move on and someone else owns.


Because no matter what you do... if you come back to it with hindsight there is always some improvement you can think of. Someone coming in after the fact and telling you where you could have done better is hindsight.

Take it as a gift. If someone didn't care about you and your work you would never hear a word.


My mentor pointed out my defensive nature a long time ago and quizzed me on it. My response was that the product of my work was like a baby. Very quickly he replied « you’ve got an ugly baby - so what. Make sure it grows up beautifully » that stuck with me for sure and helps me look at issues objectively.


I take it personally, as it is. It is not generic feedback for everyone, it is personal feedback towards me.

In order not to get upset or bogged down by feedback i start with saying: thank you. Then I try to remind myself of how careful I try to be when providing feedback to others and/or how hard it can be at times.


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


Stop acting with ego in real life and it will just naturally trickle down to code.

Just because you made it doesn't mean it is great, applies to code, things and kids equally.

And vice versa just because someone didn't like it doesn't mean it is bad or have problems. But if most people did, well, maybe it does.


By seeking a true understanding of someone else's perspective. It's a mistake to think that experienced/senior/whatever means "usually correct". No, it means "knows how to resolve conflict and misunderstanding"


The author is dead, the work is the work, and process creates the work.

If there's problems with the work, you can look for improvements to the process that made it.

If you're criticizing yourself or beating yourself up, you won't find what things could be done differently because you're too busy saying woe is me


A big development for me with this was realizing that good engineering is not about constant perfection, but about making pragmatic improvements and adapting to constantly changing circumstances. Seek the 20% effort solution which solves 80% of the problem and let day-to-day disagreements slide.


Most things I do suck when I look at 6 months later. If that wasn't the case you are not really improving.


For better or for worse, getting bullied a lot and being the most university hated kid in my middle school prepared me for a lifetime of antagonistic emails and snarky internet arguments so that nothing that people say online or at work will produce an emotional response from me.


Accept it. Let it hurt for a moment, think about it, own the mistake and then fix it.

The good news is that pain is what's going to help you learn, we form memories better when we experience an emotion than when we feel detached.

You'll feel good about it the next time when you get to apply the learning!


Perhaps it helps you to see a PR for what it can be instead:

As the point we're you are allowed to get good feedback.

Next time press the button for opening a PR and think 'ha I'm curious what I learn today!'

Don't open a PR and assume you will be merging it soon, open it to be able to work on your fine-tune process


Separate your sense of identity and self worth from your work. Find those things outside of work, and criticisms and failings won't feel so personal. Also remember literally everyone makes mistakes and gets things wrong. The thing not everyone does is handle those instances well.


In my opinion, it always helps if you get to know the people reviewing your work personally. Sometimes, this happens naturally. You don't have to be buddies; however, if you understand a person's background, biases, and experience, it adds a lot of context to anything they say.


Some people live off of cynicism and showing the world they are right at opportune moments.

There is a difference of valid criticism and cynicism though. The people who criticize because they want you to do better are those to keep open ears for. Those who are just cynics can be largely ignored.


In a way, it's easy (I'm being deliberately flippant here, I know it's not easy) - if continual learning and growth is one of your goals, the worst thing that could happen is never getting feedback. Getting feedback means you have information to process and improve.