Annual Performance Evaluations for Programmers

Here is a template I use as a development manager. Please note that the categories are mandated by the company and are scored on a 1-5 scale (5 is highest) and then averaged for an overall score. The interpretations of the categories are my own as applied to a programming team.

Job Knowledge: Is an expert in both the technology and problem domain relevant to his job. Stays on top of changes to technology and leverages them to improve the timeliness and quality of his work without needing a supervisor to push.

Accuracy: Cases sent to testing by this programmer are almost never kicked back by the testing team for obvious problems. The code written by this programmer almost always has unit tests written that are sufficient in scope and code coverage. This person does not have to be reminded to go back and add unit tests and almost always writes test cases before writing new code.

Work Habits: This person understands and manages priorities extremely well without a lot of follow up required by the person who assigned or supervises the task other than status updates which should be timely, concise and communicative. Willing to put whatever effort is necessary in to get the job done.

Problem Solving/Decision Making: When obstacles present themselves, this person takes ownership and removes those obstacles to remain productive, but also knows when to involve their supervisor to get assistance in getting to the end of that task as expediently as possible. Further, they are an active force to removing obstacles for others. This person has a solid grasp of what issues can be deferred and which need to be cleared before progress can continue. This person is a frequently the catalyst that provides momentum to a project.

Interpersonal Skills: When conflict arises, this is the person who is the calming influence and often steps up as a mediator when tempers flare. In stressful situations they calmly assess the problem, avoid personalizing issues and focus on a solution. Others enjoy working with this person and they actively engage in behaviors that improve team cohesiveness. People frequently request this person to work on their projects.

Communication: Communicates in a manner that is timely, relevant and concise. This person goes out of their way to make sure that others are informed about things that are relevant to them and speaks up frequently as a proponent of more communication. Also important is the person’s ability to adjust the technical detail of their communications to the intended audience appropriately and phrasing things in terms of the other person’s needs.

Leadership: Promotes the corporate and departmental values even when the supervisor is not present. Is a source of peer pressure for doing things the right way instead of the easy way. Does not shirk confrontation when it needs to happen. Boldly steps out of comfort zone to stand up for integrity and quality.

Customer Service: They are the person in every meeting that brings up the customer. When customers have complaints or are being difficult, they instinctively take the customer’s point of view and start trying to understand and solve their problem instead of being dismissive, even when the customer is not around. Generally known as an advocate for the customer, especially difficult customers. The customer can mean both internal and external clients, but when these conflict this person always sides with external clients.

Training: Completed training plan with vigor and enthusiasm and exceeded it where possible. Frequently suggests training opportunities for others. Volunteers and takes the initiative to set up training for others in the organization on topics that they are familiar with. When receiving training, this person eagerly tries to distribute their knowledge out to others. When this person learns something or creates new code their first instinct is to leave a breadcrumb trail to lead others to the discovery.

Scoring Methodology: When I score them, I reserve the highest score (5) for people that not only exemplify the particular trait, but are also are a catalyst for improving others in that category.

A word of warning: Beware of metrics based performance evaluations. You will get EXACTLY what you measure and often in ways that are not what you’d expect. Programmers are especially good at finding ways to meet metric driven goals without furthering the underlying objective of the metric. For example, how many ways can you think to improve your LOC (lines of code) per week if you knew it would affect your compensation that don’t improve the product or speed of the project?