You Don’t Need A Thick Skin

code, community, empathy 0 comments suggest edit

I have a confession to make.

I sometimes avoid your feedback on the Twitters. It’s nothing personal. I have a saved search for stuff I work on because I want to know what folks have to say. I want to know what problems they might run into or what ideas they have to improve things. Nonetheless, I sometimes just let the unread notifications sit there while I hesitate and cringe at the thought of the vitriol that might be contained within.

I know. I know. That’s terrible. It’s long been conventional wisdom that if you’re going to write software and ship it to other humans, you better develop a thick skin.

Hey, I used to work at Microsoft. People have…strong…opinions about software that Microsoft ships. It’s the type of place you learn to develop a full body callus of a thick skin. So I’m with you.

But even so, when you invest so much of yourself into something you create, it’s hard not to take criticisms personally. The Oatmeal captures this perfectly in this snippet of his brilliant post: Some thoughts on and musing about making things for the web.


That is me right there. I’m not going to stop shipping software so the best thing to do is work harder and develop a thicker skin. Right?


I strongly believed this for years, but a single blog post changed my mind. This post didn’t say anything I hadn’t heard before. But it was the experience of the author that somehow clicked and caused me to look at things in a new way. In this case, it was Sam Stephenson’s blog post, You are not your code that did it for me.

In his post, he talks about the rise and fall of his creation, Prototype and how he took its failure personally, and the lesson that he learns as a result.

I have learned that in the open-source world, you are not your code. A critique of your project is not tantamount to a personal attack. An alternative take on the problem your software solves is not hostile or divisive. It is simply the result of a regenerative process, driven by an unending desire to improve the status quo.

This sparked an epiphany. Reinforcing a thick skin detaches me from the people using my software. Even worse, it puts me in an adversarial position towards the folks who just want to get something done with the software. This is so wrong. Rather than work on a developing a thicker skin, I really should work on developing more empathy.

Show of hands. Have any of you ever been frustrated with a piece of software you’re trying to use? Of course you have! Now put your hand down. You look silly raising your hand for no reason.

How did you feel? I know how I’ve felt. Frustrated. Impotent. Stupid. Angry. Perhaps I said a few words I’m not proud of about how I might inflict bodily harm on the author in anatomically impossible ways should we ever meet in a dark alley.

I certainly didn’t mean those words (except in the case of bundled software written by hardware companies. That shit makes me cray!). I was simply lashing out due to my frustrations.

And it hit me.

The angry tweets calling my work “a piece of crap” is written by folks just like me. Rather than harden my stance in opposition to these folks, I need to be on their side!

I need to remove the adversarial mindset and instead share in their frustration as a fellow human who also understands what it’s like to be angry at software. I no longer need to take this criticism personally. This shift in mindset unblocked me from diving right into all that feedback on Twitter. I started replying to folks with something along the lines of “I’m sorry. That does suck. I know it’s frustrating. I’m going to have a word with the idiot who wrote that (namely me)! Email me with details and I’ll work to get it fixed.

The end result is I’m able to provide much better support for the software.

By doing this, I’ve also noticed a trend. When you sincerely address people’s frustrations, they tend to respond very warmly. Many of them know what it’s like to be criticized as well. People are quick to forgive if they know you care and will work to make it better.

Sure, there will still be moments where I have a knee jerk reaction and maybe lose my temper for a moment. But I think this framework for how to think about feedback will help me do that much less and preserve my sanity. I am definitely not my code. But I am here to help you with it.

Found a typo or error? Suggest an edit! If accepted, your contribution is listed automatically here.



18 responses

  1. Avatar for Rob Conery
    Rob Conery December 17th, 2012

    I completely agree with this! As anyone who reads my blog is aware, I tend to have some strong opinions when it comes to things I like and dislike.
    It hurts coming the other way, too - as you're saying. But I do think Sam's post missed a crucial point: most of the time people enjoy ripping apart the person, as well as the code.
    For instance: when you read something that confuses you or you think is bad, a typical thought might be "WHO WROTE THIS CRAP". The "WHO" part doesn't matter - yet many people really want to know who because they can now make themselves feel better by identifying someone not as smart as them.
    This is one of the reasons I've stopped blogging as much these days. I would write code to illuminate and understand things - and the amount of "You just LOVE to chase new, fashionable things! I don't have time for all this cool kid stuff".
    The whole cycle has become boring. There comes a time when you thicken your skin so much you can't feel anything, including your desire to create. For me, open-sourcing the things I write is a pain vector. The podcast, which I love dearly, would probably have died were it not for Hanselman cheering me on.
    I like well-thought our criticism. I crave it! When it comes it fires me and keeps me going because I *learn something*. Usually the other person does too. This seems the exception, however, and it's sad.

  2. Avatar for ijrussell
    ijrussell December 17th, 2012

    I used to just shrug it off and say "You can't please all of the people all of the time" but I had the same epiphany as you. Yes there are still people out there who you will never please but the vast majority are exactly the same as us and are genuinely interested in improving our software.

  3. Avatar for Darren
    Darren December 17th, 2012

    This post sucks :-P

  4. Avatar for Joe Brinkman
    Joe Brinkman December 17th, 2012

    I followed a very similar path and found that the negative comments would really affect my mood. Once I viewed them as an opportunity to improve and started engaging the customer I found that my mood also improved. I no longer found these comments to be negatives, but to be positives.

  5. Avatar for Laurent Bugnion
    Laurent Bugnion December 17th, 2012

    I totally recognized myself in that comic when I saw it. Like, going on Amazon and obsessing about the one bad review for my books. OMG.
    I am really blessed with my OSS code and its community in that they provide constructive feedback and usually have a big thank you somewhere in their emails/tweets that helps to accept whatever they have to say about the quality of the code (or lack thereof). But yeah, I cannot agree more with you about what you say: Trying to put yourself in the user's shoes and understanding what they go through and why they are having the issue, and why it matters to them, it's really a big mark of respect, and it doesn't go unnoticed.

  6. Avatar for haacked
    haacked December 17th, 2012

    @Rob if you stop blogging, then the terrorists win. Or something like that. You bring up an interesting point though. Critiquing a blog post is a bit different because there's not a "I'm trying to use this and I'm frustrated" angle, but more of a "I disagree with you."
    When someone says "You're just chasing the latest fashion.", perhaps there's a subtext there you can get to the bottom of. Why do they feel that way? Are they feeling threatened perhaps. Perhaps they feel so threatened they're missing the obvious benefits of this new thing and only focusing on the negatives. In any case, it's an opportunity for more insight. Or, just ignore it as trolling and move on. ;)
    @Joe, yeah I think that's the big part. Even though I saw these as opportunities to help, I'd still let it affect my mood negatively. But now I look at it as a challenge to see if I can "turn that frown, upside down." ;)

  7. Avatar for Ian Patrick Hughes
    Ian Patrick Hughes December 17th, 2012

    "In just a few short years Prototype went from best practice to anti-pattern..."
    That sentiment really strikes a chord for me. As software developers we will frequently spend so much time and effort on a single concept that when that magic moment happens when we've pulled it off...we feel proud and happy. *dust hands* Maybe put that code up on a shelf, admire it for a bit, and then move on.
    However, the web is an archive of history while other technologies move so fast. I have received negative messages from people who were using something I wrote in 2004 as if it shipped right before they came across it. You know what? Things have improved. I've improved. Arg!
    I'll be keeping "I am definitely not my code. But I am here to help you with it." in mind going forward.

  8. Avatar for Richard Baum
    Richard Baum December 17th, 2012

    A life lesson here that applies to much more than code.
    By the way, I really like the new book. A great guide through a lot of technology.

  9. Avatar for Andy Brummer
    Andy Brummer December 17th, 2012

    it is also an awesome parenting technique. how to talk so that kids will listen and how to listen so that kids will talk, is a great read for being helpful in emotional situations.

  10. Avatar for Rob Conery
    Rob Conery December 17th, 2012

    @Phil The subtext seems pretty clear and I think you hit it: Change Sucks. This is for many reasons but I find it's because when a person feels they've mastered a thing, they *know* it. Like the line from Fight Club where Edward Norton was lamenting his apartment being blown up and how he was almost complete.
    "I know thing X. It works - why do you need to go and suggest something new? You must have a habitual need to keep trying new things... try getting some work done for a change".
    I think it's healthy to challenge new ideas - it's how they become better ideas or get blown up for the bad ideas they apparently are. I'm not sure when this happened to me, personally - I think it's when I went to bat all those years trying to get people to try MVC and Rails (and duking it out with Brinkman if I recall correctly...) - that somewhere along the line it became a bit of a sideshow.
    After seeing recent events unfold and losing it when my kids got off the bus on Friday - I think something inside me broke. I like writing code, I love making videos, I also like to write. I utterly abhor the discussion patterns that follow a public display of anything new.
    I don't know. Maybe I'll move to Hong Kong and hang out with Karl :).

  11. Avatar for jenson
    jenson December 17th, 2012

    Arrghh there's nothing worse than having a rant and someone saying "there there, now now, what can we do to make it all better?". Just sit and take it beeatch!

  12. Avatar for John Atten
    John Atten December 17th, 2012

    Within the limit of my experience, I totally agree with Mr. Haack. The cartoon also summarizes nicely how I feel with respect to positive vs. negative feedback on my cute little beginner type blog.
    I learn to code on weekends and evenings. I am slow, and I will likely never be "caught up" sufficiently to write/blog/create some slick new wonder of coding. But I love what I do, and I write about it, for myself, and because someone else in my shoes may run across what I have done and find it useful.
    To the Robs and Phils, and others who actually know what you are doing, and publish code/blogs etc, your content and code is what allows folks like myself to catch the fire, and learn.
    This is a universal problem, not limited to programming. However, there are many parallels between what you propose here, and what Mr. Bailey discusses here:
    In particular, this observation seems relevant:

    "The worst part of this is knowing that some of these “OSS Elite” were the geeks and freaks and nerds in high school, that got picked on by the jocks and other popular kids. Apparently the new found success in the open source community has caused selective amnesia in these “leaders” and they either don’t remember or don’t care about how it felt to be trampled upon by the popular voice in the room. The victims are becoming the perpetrators, and we are often laughing right along side with them.

    Thanks for the great post.

  13. Avatar for James Newton-King
    James Newton-King December 17th, 2012

    There are some people who are naturally argumentative. Most of the time it's great, they raise good points for you to take on-board and improve.
    I've learned recently that there are the people who combine being argumentative and pigheaded. Facts don't matter to them, you're wrong and they will make sure everyone knows that. Not caring about these kind of people is something you have to learn.

  14. Avatar for Dimitar Dimitrov
    Dimitar Dimitrov December 18th, 2012

    I love your blog Phil. Great post. It's nice to know that there are other developers out there struggling with the same issues that I am.
    On your post, the big question is - how do you get there, in this mindset. You know sometimes comments turn to insults and really get to me (or maybe they're not insults but my critique tolerance drastically drops when it comes to my code).
    I guess part of it is that we really LOVE to code and take our work seriously. I'll try to look at things a little bit differently from now on.

  15. Avatar for Josh
    Josh December 21st, 2012

    When you sincerely address people’s frustrations, they tend to respond very warmly.

    Negative criticism is always hard to take. The best thing you can do is roll with the punches. Or as some may say, "kill them with kindness" :-)
    If you want to see a good example of sincere people, look at Rackspace's support team. Those guys are so damn nice. No matter what the issue is, I can never get mad at them. They have a very positive culture, and that's how I feel about your blogs as well.
    At the end of the day, you just have to be the better person. Be the person you want to be and good will follow.

  16. Avatar for joey
    joey January 15th, 2013

    This post didn’t say anything I hadn’t heard before. 

  17. Avatar for Daniele Muscetta
    Daniele Muscetta February 11th, 2013

    Interesting... how does the "thick skin" applies to PM's (as in Microsoft PM's - you were working in that role) versus "Developers"....

  18. Avatar for amyhoy
    amyhoy March 18th, 2014

    Hi there! Good move on responding to the underlying emotion, not the words out of people's mouths. As a product owner who does support, I've learned most people are so used to being totally ignored, denied, corporatespeked, etc., into hell that if you do respond like a person, they feel quite a bit of shame at their original behavior.

    One thing, though… if one comment from a stranger makes you spiral into a pit of self-doubt, there is something wrong. It's not that you need a thicker skin, it's that you need to learn to dissociate the way people view you from the way you view yourself. Maybe you've been abused in the past or maybe you just abuse yourself by beating yourself up, silently, internally, when you do things wrong, and so the external voices are just familiar reminders. But that's not a healthy reaction, not for you or anyone. That's something to work on -- feeling good about yourself, no matter what people say. Because of your actions, not your image, not the way people think about you.