Becoming a Better Developer Part 9: How to Criticize a Software Developer Without Getting Punched

There comes a point in every person’s career when we have to offer criticism of someone else’s work. For software developers and managers this can be especially difficult since most programmers view the software they write as an extension of themselves, and take criticism of that software very personally.

We all know how to criticize, but the question is how to criticize well.

Be Specific
The #1 rule of good criticism is be specific.

In Freaknomics, Steven D. Levitt examined phrases in real estate listings that had a positive correlation on sale price (meaning a higher sale price), and ones that had a negative correlation (lower sale price). The results were as follows:

Higher Sale Price
state of the art
move in condition

Lower Sale Price
well maintained
great neighborhood

What you’ll notice is that higher sale prices resulted from being more specific. Tangible, real things like granite, corian, maple, new, outweigh ambiguous, possibly made-up things like fantastic, charming and wonderful.

And so it is with criticism. Telling someone their code is “total crap” is not helpful. Telling them they misspelled two variable names, have several place where they’ve repeated code, and they need error handling in all of their methods is much more helpful. It not only allows them to improve their current code, but perhaps it will help them out in the future, as well. They still may get mad, but that’s up to them.

It certainly takes more time to itemize mistakes, but it’s worth it.

Criticize the Code, Not the Person
If someone writes crappy code, talk about the code, not about the person’s ability to code. If someone doesn’t meet a deadline, talk about how that affected you and what needs to happen in the future, don’t talk about how the person is a complete slacker (at least not the first time you discuss it). Doing so will help keep the conversation less personal.

Be Constructive
Without much effort at all I can give you a list of negative things about Los Angeles: traffic, smog, too many people, and a distinct lack of trees.

I could also give you a list of bad things about the internet: spam, viruses, poorly-designed websites, and pornography. Just because I can point out a ton of negative things doesn’t mean that the internet is not worth your time, and doesn’t mean you shouldn’t live in L.A. For all the negatives there are tons of positives to outweigh them, at least for the 10 million people who live in L.A. County, or the 1 billion people on the internet.

It’s easy to be negative. It’s easy to come into a situation and complain. It’s easy to point out the flaws in everything (have you ever read the comments on Digg or Slashdot?). If you don’t have a suggested solution in mind it’s going to be difficult for people to respect your opinion. Someone who complains often will be ignored rather quickly.

Constructive critisism is helpful; venting just pisses people off. Before you criticize something stop to think if it really matters to you and needs to be improved, and make sure you’re talking to the person who can do something about it.

Start Small, Get Big
Growth Secrets for Self-Funded Startups. It'll Change Your Life.
What you get for signing up:
  • A 170-page ebook collecting my best startup articles from the past 5 years
  • Previously unpublished startup-related screencasts
  • Exclusive revenue-growing techniques I don't publish on this blog
"The ideas and information Rob provides should be required reading for anyone that wants to create a successful business on the web." ~ Jeff Lewis
Startups for the Rest of Us...
If you're trying to grow your startup you've come to the right place. I'm a serial web entrepreneur here to share what I've learned in my 11 years as a self-funded startup founder. Luckily several thousand people have decided to stick around and join the conversation.

For more on why you should read this blog, go here.


#1 Bobby on 09.28.06 at 3:56 pm

This doesn’t apply to just coders either.

#2 http:// on 09.28.06 at 4:35 pm

Cool article! Well said.

#3 http:// on 09.28.06 at 5:01 pm

Misleading Article Title! it should really be “How to Criticize Software Without Getting Punched by the Developer”

#4 Brian on 09.28.06 at 5:51 pm

Change our code? No way.. it’s like our children man! Seriously, I liked the article. In other words, it’s all about being tactful. Code reviews benefit no one if they degrade into verbal (or physical) punching matches.

#5 http:// on 09.28.06 at 6:52 pm

>> Someone who complains often will be ignored rather quickly Or, in my experience, promoted to manager.

#6 http:// on 09.28.06 at 9:37 pm

I find the positive correlation with sale price argument highly misleading. The fact is that houses with granite counters or state-of-the-art kitchens actually do have a higher value, and lying in the real estate listings is probably not very productive. So the vague words are for covering up the fact that the counters are formica and the kitchen is standard. Note too that we have no way of measuring how “actually expensive” these words are, so the whole exercise is suspect. This is a case of how to lie with statistics. And what do real estate prices have to do with good criticism anyway?

#7 http:// on 09.29.06 at 1:17 am

I have been reading People Skills by Robert Bolton. It talks about communication and how to do it right. Well worth the time to read it.

#8 http:// on 12.12.06 at 8:53 pm

>>>> Someone who complains often will be ignored rather quickly >>Or, in my experience, promoted to manager. Sad but true in some places. Developers who complain loudly get more notice than quiet developers. But the article is great. It really applies to any kind of profession, but I think developers need this kind of reminder more than, say, testers. It’s easy to tell someone their code is crap and a waste of your time, but that kind of comments pollute the team environment (unless the developer is really bad and you’re firing him/her). Much better to give specific constructive critisism.