TIL #63: Programmer Competency

It is important when evaluating the competency of a software engineer that you do so on an even playing field. You don’t evaluate one person using a different criteria than you evaluate someone else.

This is especially important in interviews or reviews. In order to choose the right candidate for a job, you need to be able to compare the candidates equally. In fact, it would be illegal to discriminate on the basis of race, gender, sexual orientation, or any number of factors protected by equal opportunity laws in the US.

Even Playing Field

So the question becomes, how do we even the playing field such that each person can be evaluated using a core set of competencies?

Well, in the question lies the answer. You need to define a core set of competencies, each with a numerical scale that allow you to rate a prospective applicant based on specific nondiscriminatory criteria.

In addition to those core competencies, you might also define a separate list of technical competencies specific to each career path, such as architect, engineer, and leader competencies.

Defining Competencies

I’d suggest starting with a list of skills that you value at your company. Think of the types of things you like to hear in interviews. Consider the topics that you feel identify someone’s level of passion.

Once you’ve got your list of skills, break them down into at least three levels – beginner, intermediate, and advanced. You may also have more and utilize a numerical scale such as 1 for beginner and 5 for expert.

Decision Making

Having a system like this in place really helps in the decision making process. If you have 5 candidates, and one scores significantly higher than the others, then your choice is practically made for you.

I understand there may be certain aspects you like to consider in your hiring process that don’t translate well into numerical competencies like this, but I would advise you to consider if those traits really matter? If they aren’t measurable, how much value do they really add?


One interesting side effect of utilizing a competency scoring system is that you have the ability to followup months after making your hiring decision to see how accurate your evaluation was.

This gives you the opportunity to make adjustments to your scoring system to improve the quality of the results in the future. For example, if you judge someone as being advanced in a topic, but after hiring realized they were actually a beginner, this gives your the data you need to improve your evaluation process going forward.

Example: Programmer Competency Matrix

I recently came across[1] a programmer competency matrix on Sijin Joseph’s website[2]. This is what gave me the inspiration to write this post. If you don’t have time to create your own competencies, or if you just need an example to follow, definitely check it out:


Final Thoughts

In closing, I think it’s important to note that having this competency system doesn’t mean you just go down the line and ask questions specific to each competency. You want your interviews to be more of a conversation and less of an verbal examination.

Ask good questions that indirectly provide you with the answers you need to know in order to make your judgement on the level of an individual’s competency. Just bare in mind that the ultimate goal is to remain as objective as possible.