Live data from Hacker News

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

news.ycombinator.com

311–320 of 653 posts

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

#311

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 simi…

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.

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.

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

#312

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 simi…

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…

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

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

#313

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 simi…

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

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

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

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

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

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

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

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

#317

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 th…

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.

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

#318

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 simi…

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

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

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

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

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

#320
post #312

Earlier quoted context omitted.

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…

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 pro…

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.

Post reply on HN