So at my work, they’re currently thinking about implementing a new feedback system so that the employees can know about everything they’ve possibly done wrong. I don’t know any developers that can possibly avoid a “you didn’t work hard enough”, or a “you didn’t code well enough comment”. There isn’t a day I go by where I don’t look back at my code and say to myself, “I could’ve coded it better”, or felt that I could’ve gotten more out of that day. This is part of a programmer’s growing process. The issue I have with implementing an impersonal feedback system is that I feel it might do more harm than good.
On the plus side is that it can highlight all the weaknesses of the programmer, but depending on how you highlight those weaknesses, it can be a boon or a detriment to the programmer. A good manager can ascertain to whether or not these “rumors” are true, where they exercise to their best judgment on feedback that would be beneficial and those that wouldn’t. They can determine what will be the ultimate result of such comments, a systematic approach won’t. There are ultimately negative feedbacks that might have a positive effect, and there are ones which won’t. An example of a good negative feedback would be “you should try better to adhere to the coding standards we’ve implemented”. An example of a bad one is “you’re ability to code clean and efficient code is questionable”, or possibly, “people in your team have said you act overly confident in everything you do”. You effectively turned a friendly supportive environment into a hostile environment, where everyone is watching out for themselves and themselves only. They keep words and thoughts to themselves, very careful of expressing the lack of knowledge in fears that someone would give them a negative feedback regarding the code, even worst, if they were quiet and kept to themselves, they’ll be slapped with a “lack of communication negative feedback”. The moral of the story is that unless you’re perfect, you’ll most likely get negative feedback, and even if you’re near perfect, you’ll still get negative feedback. This impact to the confidence in yourself, and in your environment can’t be a good thing. So before the implementation of this system, I’ll like for it to be carefully reviewed.
I believe the team lead should be assigned the responsibility of providing feedback on the programmers under him. I believe he should be more than sufficient due to the fact that the team lead is in a position where he can oversee the activities and determine whether or not these activities have had a negative, positive, or no impact on the project. Due to his experience and ability to empathize with the developers he can also determine whether or not such activities are necessary or unnecessary and then advise accordingly.
Although I’m not sure if this system would be without its faults, I do believe a system where the team lead will take charge of growing and shaping his men makes more sense than having his men grow on their own by attempting to avoid random stray bullets flying at them.