Working with your angry coder

by Michael O'Hearn on January 2, 2009

Computer Geek FighterWe all know the type. They often go around shouting stuff like “tables are for tabular data” and “you should never use that library!” They storm off and pout if you don’t listen to them. They read about the newest trend and want to go back and fix all of the work that was done the wrong way.

I am this guy. I read A List Apart, Martin Fowler, Joel Spolsky, and Stevey’s Blog Rants. In my library I have Code Complete, Patterns of Enterprise Application Architecture, Framework Design Guidelines,  and The Pragmatic Programmer. I take what I learn, market them to others as facts, and get upset if they don’t jump and go about doing things differently. Why won’t they listen? Do they not get it?

I’ve worked with this guy too. A friend of mine used to lament, “Whoever wrote this code should be shot.” He was referring to my code. For a while after that I would cringe whenever he came to discuss something “neat and cool.” Even if code belongs on The Daily WTF, what good can come of being mean to the author?

“I wish he would quit!”

Dirty CarpetDealing with the angry coder can ruin your day, but if you step back to look at his motivation, you might realize that he’s not such a bad guy after all. He’s not thinking negative things about you. He’s really not even thinking negative things about your code. He is just thinking about potential improvements. All he sees is a dirty carpet that needs a vacuum cleaner.

  • Don’t take it personally: Try to remember that no matter how animated he may be, it’s not because of you. If you get defensive — which is a very natural and ingrained response — things will almost certainly escalate into frustration. Don’t feel the need to defend your code or your decisions.
  • Just say no: Don’t beat around the bush. If you don’t want to hear it, declare that you are not interested in this right now.
  • Be grateful: I know this one could be hard at first, but once you get into the habit, it feels and works great. Fake it until you make it. Eventually you will realize that he truly is trying to help you and it could likely change your relationship.
  • Take some space: If your discussion turns heated, don’t be afraid to put off the entire discussion until later. There is a very good chance that after waking up the next day, at least one of you can look at things from a different perspective.

“But standards and best practices need to be followed!”

The sky is falling!When you are the angry coder, it seems like people who don’t listen or automatically intuit new ideas are lazy or apathetic. Sometimes they are, but more often change is hard. It is a never ending process in this profession, one from which even you are growing. Take a look at some of your older code and consider: How do you rate against your high standards?

  • Show them the money: If you can show someone the benefits of what you are suggesting instead of the downsides of the way things are currently done, they may be much more receptive to change.
  • Accept no for an answer: Sometimes it may seem like the sky is falling, but it probably isn’t. Try to forget the worst case scenario, and focus on the most likely scenario. Your company will still sell its widgets, even if you have a few deprecated HTML tags.
  • Don’t be critical: There is one thing criticizing your coworker is guaranteed to do: ensure they have their defenses up the next time. Instead, invite your coworkers to be co-conspirators in promoting the next big thing.
  • Choose your battles: Just because you know how to better something doesn’t mean you should. You don’t want to stretch yourself too thin.
  • Listen: No one will listen to you if they know you won’t listen to them. When they are excited about something, hear them out fully. Think carefully before adding to their idea because they may view it as you taking over.
  • Apologize: If you realize later that you were too harsh, fess up. Your coworker is probably still upset about it, and, even if they are not, what can it hurt? It might make you feel better too.

I hope you find some of these tips helpful and I would be very grateful if you would share your own insights in the comments. Hopefully, if we put a little extra effort into understanding each other, we just might catch ourselves occasionally smiling on our commute home.

Truce

To anyone I have offended while in angry coder mode: I am sorry.

To my angry coders: Thank you. I have learned a lot from you and appreciate your passions. Even if I sometimes wish you’d just quit.

{ 2 trackbacks }

links for 2009-01-05 « pabloidz
01.05.09 at 7:01 am
Angry Coder Mode | Soapbox Rants and Raves
04.12.09 at 1:46 pm

{ 10 comments… read them below or add one }

arifn 01.02.09 at 7:03 am

I agree with you.. the key is understanding.

MFR 01.04.09 at 6:11 am

I just fired the dumbest programmer in my team. It feels good.

Casper 01.04.09 at 12:32 pm

Nice post, it makes sense although I thought I was just a reforming perfectionist rather than an angry coder.

Colleen 01.05.09 at 3:22 am

I can relate to this. The thing is, what was shiny up to the standards code five years ago is laughable today, unless you're just constantly refactoring and incorporating new tools librariess and techniques. The fact that that old code is chugging (a la oscommerce??) means that it's good for something.

Nikita 01.05.09 at 4:28 am

Michael, nice post. I think, that it shows that you have a lots of experience in dealing with different types of people, while developing software.

"Angry coders", as you call them, makes such a strong negative impact on motivation and morale of the team. I have seen a couple times, how some people wanted just to leave the time because of that.

If there is a person of this type in the team, appeared somehow, I think it is a management(recruiting) mistake. Negative impact because of such a person can be much bigger, than the benefits of their work.

Fernando 01.05.09 at 7:57 am

I have just realized I'm an angry coder. That doesn't feel any good.
Well. I have to admit I find impossible to contain myself when I see something that could be "Greatly" improved (As in "Oh! My! How many selects did you say you are doing inside that loop?!?!?"). I always though my partners were a bunch of careless code cowboys. I should start thinking thrice before talking from now on :) .

Anyway, thanks a lot for helping me realize that kind of coder did exist.

mohearn 01.07.09 at 10:27 am

Thank you. Yes, I think perfectionism is one of the key ingredients to making an angry coder. Applying perfect standards to yourself is hard, but once you start applying them to others too, it gets infinitely more difficult :)

mohearn 01.07.09 at 10:44 am

Thank you.

I agree that often someone can have such a negative impact that they can hurt the team.

My wife just shared with me a recent This American Life episode that talks about "bad apples" and has funny stories about experiments where they have an actor take on certain stereotypical bad apple roles.

http://www.thisamericanlife.org/Radio_Episode.asp...

However, it seems to me that many traits that go into making a great developer also could give them "angry coder" tendencies: passion, striving to learn and improve techniques, wanting to share what you've learned with others.

mohearn 01.07.09 at 10:48 am

You are most welcome. And thank you for the wonderful comment. I am glad to have helped you look from another point of view.

ArianaKape 05.13.09 at 10:09 am

I will leave a reply as soon as I try it Thank you

Leave a Comment

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>