The One Skill You Need To Master To Succeed And Grow As A Developer

criticI am going to give it away right here in the first sentence, it's the ability to ask for and take criticism. Yeah I know technically it's two skills. Before you switch off and browse away to look at funny cats with bad grammar, I don't mean the ability to say:

"Well, of course I can take criticism, I am hip, I am with-it."

It's like asking people if they are good in bed, it's not as if anyone is actually going to say that they are terrible. And yet most developers (most people) can't take criticism well and even fewer know how to ask for criticism and have it be received without uncomfortable silences.

Humans don't tend to be able to get a lot of insight into their own failings, so we need an outside opinion. Feel free to disagree with me here, but I'll tell you this. There are dozens of things I want to learn that I think will improve my skills and make me better at what I do, but it has always been external advice into how, where and what I should tackle that has given me the biggest boost in my growth as a developer. This advice was accidental every single time, just imagine if I could achieve a little bit of repeatability here. I wonder if this is the exact same thought that the dudes who were implementing waterfall for the first time had? Rigid processes aside, taking criticism and using it constructively is especially important for developers. It is basically a matter of survival within our field. There is so much to learn and new stuff comes along at a faster rate than you're able to "master" (when I say master, I mean become aware of) old stuff. We want our efforts to propel us forward in leaps rather than at the speed of a leisurely crawl (although there is something to be said for crawling as well, but I will get to this some other time).

So Why Are People Bad At Taking Criticism?

Well, it doesn't really help that most people are really crap at giving constructive criticism. There is just not a lot of criticism going around, how are you supposed to get good at it if you hardly ever get a chance to practice? Plus, our primal response to criticism is confrontational, either offensive or defensive (depending on personality), goes back to the cave days.

"I've survived right? So how dare you say I am doing something wrong!".

Double plus, developers are worse at this than most, we're ornery, we like to argue, we pick on minute details. By rejecting criticism we can immediately scratch too many itches, it's hard to ignore for the promise of some intangible benefits at a later date.  

What About Asking For Criticism?

Remember how I said that most people are crap at giving constructive criticism? Well, they know it. They also know you're bad at it. We're not particularly comfortable when we're asked to do stuff that we are no good at. So, they don't ask you and you don't ask them, everyone is happy (kind-of). It's a global conspiracy that everybody buys into – easier that way. Sort of similar to how everything is overpriced 10-fold in the enterprise world (including software), but it is easier to try and get a piece of the pie rather than call the whole industry on it. And when they try to make us criticise other people, like for those crazy annual reviews that most companies have (I've got thoughts about them); we do our best to get it over with as quickly as we can and try to use as many words as possible to say as few constructive things as we can get away with.

What To Do

Ha, I don't have all the answers. Just because I observe an issue and see the benefits if it were removed, doesn't mean I know how to remove it :). I am not particularly great at taking or giving criticism, I am a lot better than I used to be, but there is a long way to go. I've already given one tidbit of advice that can get you on your way – practice. The one surefire way to get better at something is to keep doing it. Find some people you trust, and go crazy on each other – hopefully you'll still be friends afterwards :).

Here is some more advice, when asking for criticism, it really helps if people don't know you're doing it. You need some serious communication wu-shu to pull this off, but I have seen people who were awesome at this. Unsurprisingly considering everything I said above, these people were also awesome at a lot of other things.

Last piece of advice – grow a thick skin without becoming deaf to what people are saying about you. It's a sad life when you go around taking everything personally, but at the same time you don't want to dismiss it. There is a saying in Russian "to coil on the moustache" (it seriously doesn't translate well, considering it's metaphoric nature), but it essentially means, you examine a piece of information for relevance and take it under advisement if you find it useful. So, ummm, do that.

Seriously, if people followed some of this advise, we could improve workplace atmosphere across the board. Then maybe people could relax a little bit more at work. Of course there are already places where if people were any more relaxed they'd need business hammocks. I think I am veering off-topic a little, having a short attention span sucks. Somebody really aught to pull me up on that.

Image by lism.

  • Korny

    I think you are wrong.

    you don’t need the words “as a developer” in the blog title :)

    • http://www.skorks.com Alan Skorkin

      Yeah, it is kinda universally applicable isn’t it :)

  • Pingback: Confluence: KM: Software Development

  • Pingback: Dew Drop – February 23, 2010 | Alvin Ashcraft's Morning Dew

  • Female developer

    I think this applies very much to developers because, as written, “Double plus, developers are worse at this than most, we’re ornery, we like to argue, we pick on minute details.” Lately I’ve been thinking about why I’m less good at using interpersonal skills after joining developers’ social enviornment during my education and carriere. The reason might be that many of us have less developed interpersonal skills, and such skills aren’t neccessarily much rewarded in this environment – because developers LIKES to argue and be edgy! Consecuently, people just don’t bother developing these skills further… What do you think?

    • http://www.skorks.com Alan Skorkin

      Well it’s actually interesting you should say that. I believe that often developers are actually sort-of proud of their quirks and of the fact that they are difficult to deal with. So, they not only don’t try to develop some of their people skills, they actively oppose anyone who tries to get them to do so.

      • Female developer

        Exactly! That’s just what I experience and/or think, as well. Very intersting topic! I’d love to read and learn more about this, how to use such insight and futher develop my interpersonal skills . Got very inspired after reading a rather scientitic book on emotional intelligence by Daniel Goleman, and I think your blog is great. Do you have any litterature or blogs to recommend??

        • http://www.skorks.com Alan Skorkin

          Thanks, I am happy you enjoy my writing :). To answer your question, it all depends on what kind of topics interest you. I follow several hundred blogs, probably close to a hundred are developer-centric in one way or another, with a couple of dozen regularly updated. I could certainly do a list, infact it is probably a good idea for a post :).

          With books it is even more complicated, even with developer-centric literature, you could break it up into developer relevant, soft-skill, soft-coding, hardcore-coding, coding theory etc. And then there are the books that I would love to read, but haven’t gotten around to it yet :). Actually would probably make another good post :).

          If you’re really keen and don’t want to wait for me to write those posts (can take quite a while :)), send me an e-mail via the contact page and let me know what interests you and I’ll see if I can put something together for you.

        • Amit

          One of the best books I’ve ever read on interpersonal relations is “How to Win Friends and Influence People”. It’s full of basic insights into how to work with people, insights that are obvious once you’ve learned them, but not at all obvious if you’re a socially awkward developer (like me). Among other things, it’ll teach you how to provide criticism in a positive, easy-to-digest way, and the flip-side of it is that you’ll learn how to take criticism better. Can’t recommend it enough.

          • http://www.skorks.com Alan Skorkin

            It is a bit of a classic that one, although it can be criticized on many different fronts, not the least of which being the fact that it can be a little to simplistic and is a bit too full of anecdotes and less full of practical tactics. However, I am with you, I also enjoyed it, if purely for it’s hsitorical significance, it started a whole genre :).

    • Sam

      I’m a network/system admin, but my gosh, that’s me. When I’m busy working out a problem — the servers are down, the tape drives are spewing — tell me that things don’t work and then leave me the heck alone. I will fix the problem and then tell you that is now fixed. You can now work again, yah!

      In introspect, I probably could be nicer when I said “no”. I have found that most people have their quirks and buttons, even the bright smiling admin staff.

  • Jay

    If you think taking criticism is difficult, try dishing it out in a manner that the recipient can take without getting all defensive (even when they ask for it).

    My favorite (not) part if the annual performance appraisal process for my direct reports was the “areas for improvement” section.

    • http://www.skorks.com Alan Skorkin

      Yeah, that is definitely the goal, unfortunately it is another one of those things that is way more difficult than it seems. The problem is that everyone needs an individual approach, what will be well received by one person, will be completely rejected by another. There are general guidelines like quantifying, giving examples and not using generalizations, but they are only helpful in an amorphous way. When you actually get to it, it always comes out wrong or you always forget some of the things you were going to say, leading to a complete fail.

  • Ahmed

    Nice article.
    Practice without feedback is a long way.
    Feedback roots are critism.
    So accepting (or better searching for) critism is a short way to raise your bar.
    For giving critism, rule #1: avoid personality attack and focus on the task.
    For taking critism rule #1: be humble
    Thanks,
    Ahmed.

    • http://www.skorks.com Alan Skorkin

      I agree about avoiding personal attacks, although it is so very difficult since many people will take any suggestion as a personal attack. Being humble is always good advice in most situations, I should try to follow it more myself :). You have to make sure you’re not a pushover either, but it is certainly possible to find a good balance, I’ve seen it.

  • Pingback: Markus Tamm » Blog Archive » Links 24.02.2010

  • http://matlabdatamining.blogspot.com/ Will Dwinnell

    Bravo! This is a very good insight. Among technical people I have known, the ones who are the most knowledgeable, the most capable and the most reliable are the ones who can and do say “I don’t know.” The inability to admit that they ones doesn’t know something is, in my opinion, a serious handicap and an impediment to personal development.

    • http://www.skorks.com Alan Skorkin

      All you have to do is read books (i.e. software literature) and you will pretty quickly discover how little you know. The more I read, the more I realise just how little I actually know, the more my reading pile grows. Makes you want to cry sometimes :)

  • http://davearonson.com Dave Aronson

    There is a place you can practice giving and receiving criticism gracefully, plus other communication and leadership skills: Toastmasters (http://www.toastmasters.org/). It’s not just about giving speeches. IMHO it’s the A-Number-One best self-improvement investment you can make — and it’s dirt cheap… and fun. See http://reports.toastmasters.org/findaclub/ to find a club near you.

    And on another note, both giving and receiving criticism well, is absolutely crucial in the more modern collaborative styles of software development, especially practices such as pair programming.

    • http://www.skorks.com Alan Skorkin

      Hi Dave,

      That is actually an excellent tip. Toastmasters is normally considered a great place to practice your public speaking skills (that’s what it’s for after all). But you’re correct in saying that if you do it, you will get a lot of opportunity to receive and give feedback which is definitely good practice. Thanks for mentioning it, I can’t believe I didn’t think of that :).

  • Pingback: TapaGeuR » ITGIF – “IT-God” It’s Friday #15

  • Herman Sheremetyev

    I’d say “to wind into your moustache”, but yeah, it doesn’t translate well at all ;)