Tag Archives: feedback

Making Feedback More Effective

Patrick Kua recently wrote a Guide for Receiving Feedback. He mentions that one way to understand how to receive feedback is to understand how to give it.

Here are some suggestions for giving feedback that will help to anchor desirable behaviours and enable change in less desirable behaviours.

Give feedback in the second person

One purpose of feedback is to keep desirable behaviours and to change less desirable behaviours in the person you are feeding back on. Who is the correct audience for this information? Is it the manager of that person?
Using the third person isolates you from the person, and can encourage the use of generalisations.

Consider:

Gina worked very hard on this project. She always seemed to be at her desk long after everyone else had gone home.

versus:

Gina, you are very dedicated. I remember, one Friday, I got home and realised that I had left my keys on my desk. When I came back to the office to get them, you were still there. It must have been half past eight.

Which feedback would have the most effect on you? Why?

Anchor desirable behaviours in the present

When you are giving feedback on desirable behaviours, use the present tense. Specific examples can be given in the past tense.
For example:

David gave a great presentation to the board. The audience loved it and gave him a round of applause

David gave a great presentation? Was it a fluke? Can he do it again?

Consider this alternative:

David is a great communicator. His presentation to the board captivated the audience for the entire hour, and received a spontaneous round of applause.

David is a great communicator. The fact that he is implies that he will continue to be a great communicator.

Address it to David:

David, you are a great communicator. The presentation you gave to the board was amazing, the audience was captivated. You really deserved that round of applause.

Which feedback would have the most effect on you? Why?

Anchor less desirable behaviours in the past, suggest alternative behaviours

Giving feedback about undesirable behaviours is difficult. We want to get the message across without appearing to be overly cruel or negative.

Geoff thinks that he’s the only one who knows what’s going on. He always tells people how to do their jobs

How does the person giving the feedback know what Geoff thinks? Does Geoff always tell people how to do their jobs? How do you think that Geoff will respond to this feedback?

Give specific, past examples of the behaviour, suggest a way forward:

Last week, Geoff asked me to do the monthly report, and then told me how to do it. I felt as though he was questioning my competence. If Geoff wants me to do the report, he only needs to ask me.

How will Geoff react to this one?

Address it to Geoff:

Geoff, last week you asked me to do the monthly report, and then you told me how to do it. This upset me, as it felt like you were questioning my competence. I’m happy to do the report, you only need to ask me.

Which feedback do you think would have the most effect on the way Geoff interacts with the person giving the feedback?

Feedback on this post is valued and encouraged


My current understanding of feedback was gained from my interactions with other great coaches, including Liz Keogh, Antony Marcano, Rachel Davies and more.
A special mention goes to Chris Pollard for really opening my eyes to the value of language and well-formedness when giving feedback to elicit change.

Installing Eclipse

I’ve just bought myself a netbook, and following the example set by John Smart with his article on installing Eclipse, I’ll document what I do with a clean install of Eclipse.

First Things First

I download the Eclipse IDE for Java Developers. The download is less than half the size of the Java EE edition, and I can always add the extra plugins later (if needed)

Plug it in

I install the mercurial plugin. There is a pattern that I use for pushing mercurial changes to other SCMs (eg. subversion) that I will describe in another post. I intend to use Ivy for my dependency management, so I install IvyDE. I then install the code quality plugins that John mentions, as well as the Metrics plugin. (the following links are the urls for the update sites)

I also install JUnitMax. This is a new plugin from Kent Beck that runs your unit tests after every save. It’s currently on paid beta, and I highly recommend it. Subscribe here, it’s only $2/month

Templates

I update the following templates in Java -> Code Style -> Code Templates

Method Body

// ${todo} Auto-generated method stub
${body_statement}

This evaluates to an empty (apart from the comment) method for void types, or return null;. I’ve already discussed my thoughts on returning null, and I would rather my code failed if it hits an unimplemented method rather than continue in a potentially unsafe manner. So, I change this to:

throw new UnsupportedOperationException("TODO: Implement this method");

Catch block body

// ${todo} Auto-generated catch block
${exception_var}.printStackTrace();

I’ve also discussed my thoughts on checked exceptions. I prefer to not silently hide the exception with a stack trace, I also don’t want to make my callers deal with checked exceptions, so I change this template to:

throw new RuntimeException("TODO: Handle this exception better", ${exception_var});

Test Templates

I also create a new test template in Java -> Editor -> Templates. I copy the Test method (JUnit 4) and add some Behaviour Driven Design style guiding comments. Because I’m lazy, I name it T :-)

@${testType:newType(org.junit.Test)}
public void should${DoSomething}() throws Exception {
  // Given 
  ${cursor}
  // When
  // Then
}

Favourite Imports

I add the following classes to Java -> Editor -> Content Assist -> Favorites so that I can get type completion on my favourite static imports

  • org.hamcrest.CoreMatchers.*
  • org.hamcrest.Matchers.*
  • org.junit.Assert.*
  • org.mockito.Mockito.*

Code formatting

These are the changes I make to the default Eclipse settings for my personal code.
In Java -> Code Style -> Formatter

Indentation -> General Settings -> Tab Policy => Spaces only 
Indentation -> General Settings -> Indentation size => 2
Indentation -> Indent -> Statements within 'switch' body => on
Control Statements -> General -> Insert new line before 'else' in an 'if' statement => on
Control Statements -> General -> Insert new line before 'catch' in a 'try' statement => on
Control Statements -> General -> Insert new line before 'finally' in a 'try' statement => on
Control Statements -> 'if else' -> Keep 'return' or 'throw' clause on one line => on
Line wrapping -> Line width and indentation levels -> Maximum line width => 132

I also make the following changes to the compiler warning settings (Java -> Compiler -> Errors / Warnings)

Potential Programming Problems -> Serializable class without serialVersionUID => Ignore
Unnecessary Code -> Unused Import => Error