I am a fairly green manager of a small team of 6 software developers. In addition to managing, my responsibilities include providing technical direction, making overall architectural and implementation decisions, and some regular writing day-to-day code.
As part of our development process, we have another developer on the team review code before sending it off for QA and subsequent release. This serves as a quick sanity check, but also enables developers to share knowledge, both general and about areas of our code base they may have more experience with. Everyone on the team has said that this process is valuable, myself included.
One of our less experienced developers tends to get angry when his code is critiqued, particularly when I am reviewing it. This developer has asked for additional feedback, specifically during these code reviews. Yet when that feedback is provided, the response from the developer is anywhere from being calmly disappointed to outright anger. Usually I am calmly thanked for the feedback, only to find out a week later that this developer has been angry about that feedback without raising the issue. The most recent occurrence, the developer accused me of pointing out flaws in code as some sort of a game that I get a kick out of, claiming that the issues I called attention to were trivial. (On this latest feedback, the issues pointed out were minor in comparison to prior code reviews, where most things pointed out were critical problems. This is a good thing as the developer has been learning and improving over time. Even still, the things pointed out were unacceptable as-is and needed to be fixed prior to release.)
During code reviews, I see myself as a peer to the other developers. (In fact, we have always called them peer code reviews. Anyone on the team can review anyone else's code. While I review an awful lot of code, it's because I am often available to do so in between meetings and what not.) This developer has told me that he seems my approval of his code as mandatory, even though that is not policy and it has been said numerous times that he can have anyone on the team review his code.
This particularly developer is a bit volatile and has been known to outburst at folks from time to time. His productivity depends largely on his mood for the particular week. He takes any feedback personally, even if it is minor feedback with clear solutions provided. He has perceived complicated social situations and conspiracies between individuals in the office that to my knowledge do not exist.
I see my management role as a supporting role of the team, doing whatever I can to enable them to be successful in what they do. The situation is the same company-wide. We encourage employees to talk to whomever they want (no need to go through the "chain of command"), we provide all the training you can eat, and almost everyone is receptive to feedback, positive or negative. I look at things objectively and strive to provide clear solutions to clear problems. This developer seemingly looks at things from an interpersonal perspective and is focused on determining everyone's underlying motivations rather than focusing on the work at hand.
I hope that provides enough information to set the scene. If not, please ask for clarification. My questions:
- How can I provide feedback to this developer in a way that allows it to be perceived by this person for what it truly is... feedback, not a personal attack?
- I can certainly lower my expectations but I believe this is a disservice to the developer an the company. Am I correct on this? (No other developers on the team, past or present, have had a similar problem.)
- My manager has also worked to deal with this developer directly and hasn't been able to offer much advice. He has told me to spend the majority of my time on my best employees. While I think this advice applies, I truly want to help this one developer as I believe he is capable of good work if he had a different perspective. I understand that it's hard to get the whole picture from this post, but is the situation hopeless? Should I lower expectations for this one developer, do the bare minimum for him, and spend more time mentoring other developers?