Chad Fowler's book, The Passionate Programmer has a chapter entitled 'Mind Reader'. In it Chad talks about a colleague who was always turning in work ahead of it being asked for.

That's where Rao's magic trick came in. He didn't talk much in those conversations, but he was anything but disengaged. He was listening carefully. And, giving away his secret as no magician would, he later told me the trick was that he was only doing the things that I had already said I wanted. I had just said them in ways that were subtle enough that even I didn't realize I had said them.

I think we both agree on the fact this is no trick. It's better than that. It's someone listening intently, capturing ideas and suggestions no matter how small they are.

Based on experience this is a task in itself. I've been in many a meeting where suggestions have been banded about, but never followed up. Then months later when the team did get some time to implement these ideas, they were almost forgotten and so needed another meeting just to remind everyone about them. Despite this happening several times, there was little motivation from the team to record each of these ideas, let alone try these ideas out on their own.

The other day I refactored a bit of code that was duplicated across the code base a number of times. It was one of those little jobs that had been mentioned in the past by the client but never written down on the board as something we would like to have. As I was already working on changes in a nearby section of the code, I decided to refactor out the duplication. It took me just over a half hour to do. Happy that it was working correctly, I pushed my changes up for testing and moved onto the next card. The client might not spot it right away, but it's there. A small improvement to the code that just took me an extra half hour to do. A duplication removed that means that any changes to those parts of the code can now be done in one place rather than four.

My problem isn't that I don't listen, it's that I don't capture enough during those meetings and what I don't capture I end up forgetting. I don't record the small things in favour of the big picture and while many might see that as a good thing, the small things give us small wins that contribute to the bigger picture.

From now on I'm going to make a point of capturing more details during my meetings with the clients and keep a list of minor changes that have been recognized but not formally requested. As long as these changes are small, tested and don't impact the code base in a negative way then I say it's fair game to be implemented.