Sijin Joseph
sijinjoseph.com · Personal blog · on HN since 2013
Sijin Joseph is a programmer who wrote the Programmer Competency Matrix, a table grading skills across many areas of software development.
What HN saysCommenters recommend the matrix as a language-neutral, clear way to self-assess skills and support performance reviews, though one notes it is hard to be honest with yourself.
26HN people shared it
22linked it in comments
5stories submitted
335story points
2 years agolast shared
2013people per year2026
Most-shared posts
- 1Programmer Competency Matrix (2016)25 people · 335 points · first shared 2013 · 106 comments on HN
- 2Programmer competency matrix1 people · first shared 2017
What HN people wrote when they linked it
erhserhdfd · 2024-11-04
This is spot on. Obviously there is a lot to dislike about performance reviews, but big companies need some process to determine who gets a raise, who gets promoted, etc. Although flawed, performance reviews are the best process for that.
I think the things that companies can do to make them better are:
1. Have well established career frameworks (aka career ladders) ahead of time. These should be as detailed as possible. https://sijinjoseph.com/programmer-competency-matrix/
2. Have transparency about the ranking system and distribution to all current employees and future employees.
3. Ensure that some amount of accountability is shared at the department level and also at the team level, so you can have somewhat objective conversations about trade-offs between departments and teams.
westurner · 2018-02-28
Something HTML with local state like "Programmer Competency Matrix" would be great.
http://sijinjoseph.com/programmer-competency-matrix/
https://competency-checklist.appspot.com/
https://github.com/hltbra/programmer-competency-checklist
Davidbrcz · 2017-01-02
I find the following matrix extremely useful for that purpose : http://sijinjoseph.com/programmer-competency-matrix/
It is not specific to any language and it gives a grade on many many relevant aspects of everyday programming (IDE, automatic build, framework, data structure...)
mping · 2016-09-23
This is the best resource that I could find on this topic, very clear: http://sijinjoseph.com/programmer-competency-matrix/
EleventhSun · 2014-03-12
I found this to be quite interesting - the Programmer Competency Matrix. It's hard to be honest with yourself with these things, but worth a look anyway:
http://sijinjoseph.com/programmer-competency-matrix/
hackula1 · 2013-09-12
Things seem aimed a bit more at designers than developers. If it was to be more developer-centric it would definitely need some references to things like GoF patterns, dependency injection, code reuse, testing/testability, loose coupling, etc. Someone could have a perfect score on this and potentially be terrible, even at web development specifically. If someone had a perfect score on the programmers competency matrix, however, they would be a sure thing.
http://sijinjoseph.com/programmer-competency-matrix/
The best sort of skill tree is one where it is hard enough that you cannot make it down every path in the time that it takes to play the game (in this case a career). Someone needs to create a new competency matrix with a broader scope.
xtracto · 2019-05-15
I can tell you something that has worked very well for me:
1. Grab a sub-set of the competencies that you NEED to have https://sijinjoseph.com/programmer-competency-matrix/
2. From that subset, setup questions for the different levels
For example, for the VCS competency we have:
source code version control
Lvl 1 questions:
"- What is the difference between Git and Github?
- What is a branch?
- What is a pull or merge-request?
- What is a commit?
Lvl 2 questions:
- Mention other VCS besides Git
- Mention good practices of a Commit (short title, description content, etc)
- Describe one branching model (aka gitflow or other)
- What is a cherry-pick?
- Describe good practices of a Pull/Merge request
Lvl 3 questions
- What is the difference between a Merge and a Rebase? When to use them?
- What is Git Bisect? how to use it?
- Git vs Mercural or other DVCS.
- What is partial clone?
- What is a Git Submodule?
- What are Git Hooks
3. Split your 1 hour interview into 2 parts: Coding and Q&A. For the coding part, ask them to build something, in their machine, with the language of their choice, sharing screen. The problem should be something for 1 hour, and split in steps (I usually do 6). With this problem you will score coding ability, cleanliness, defensive coding and similar stuff. I usually score between 1 and 3 (1 - Below Average I have seen, 2 - Above Average I have seen, 3 - Amazing/Impressive)
The second 30min part is Q&A, use the questions to check whether…
RonnieOwnsLexus · 2023-03-11
I am still early in my 20's although i have been incredibly blessed with good opportunities.
This is what I am currently planning https://sijinjoseph.com/programmer-competency-matrix/
hnruss · 2018-11-27
There are many ways to quantify how good of a programmer you are.
- You can compare yourself to other developers (there are plenty of qualities to compare)
- You can review your statistics (commit frequency, average file size, accuracy of time estimates)
- You can compete in programming competitions
- You can evaluate yourself using the Programmer Competency Matrix: https://sijinjoseph.com/programmer-competency-matrix/
Also, "Good" is subjective. Some programmers are "good" in certain contexts, but "not good" in others.
macintux · 2018-09-20
Orthogonal content that inspired me to finally get serious about learning functional programming, and led me to Erlang: http://sijinjoseph.com/programmer-competency-matrix/
Sure, it's flawed, but isn't everything?
azekhv · 2017-06-25
There is a nice competency matrix for that: http://sijinjoseph.com/programmer-competency-matrix/
scandox · 2017-03-26
This appears to be a refresh of a 2008 post? He originally links to it from this post:
http://sijinjoseph.com/2008/04/30/programmer-competency-matrix/
Also of note is that he explicitly says it is biased towards non-visual (I think he means non-GUI) developers.
itamarst · 2016-12-17
Can't say I learned much useful from getting (most of) a CS degree. I dropped out to get a programming job, which was much more useful :)
So good news: you didn't necessarily miss very much. Get a basic algorithms/data structures book and skim it, and you're good to go.
But like all programmers there's lots more to learn, and mostly you will learn it on the job from coworkers. Things like testing and API design and performance analysis.
http://sijinjoseph.com/programmer-competency-matrix/ is useful (you don't need to be top at all of it, though!) but leaves out a lot of important skills.
brudgers · 2016-12-12
The programmer competency matrix:
http://sijinjoseph.com/programmer-competency-matrix/
znt · 2015-07-02
For start, have a look at programmer competency matrix: http://sijinjoseph.com/programmer-competency-matrix/
If you don't have access to "smarter" peers as others have said, reading source code of successful open source projects may also be helpful.
Splendor · 2015-04-08
I use Sijin Joseph's Programmer Competency Matrix[0] as a guide.
[0]: http://sijinjoseph.com/programmer-competency-matrix/
ChanderG · 2015-03-09
This perfectly puts an handle on what is happening:
http://sijinjoseph.com/programmer-competency-matrix/
gaelow · 2014-07-14
This one is much better: http://sijinjoseph.com/programmer-competency-matrix/
It provided me with practical, straight-forward and helpful advice on where to focus to improve my programming skills.
daffodil2 · 2014-04-14
I'm not sure what "fit to be a developer" means. People (with very few exceptions) are not born with labels that say "able to write software professionally" or "not able to write software professionally". Try to understand what has prevented you from landing jobs so far. Go through http://sijinjoseph.com/programmer-competency-matrix/ to determine what you lack, and then work on improving those. (Not saying that that link is the ultimate criteria for determining one's suitability as a programmer, just that if you really don't know what you're missing, it will give you some ideas)
bjourne · 2014-03-11
huhtenberg · 2013-11-05
The fact that this list has been around for a while doesn't make any less inaccurate and massively biased. That's basically a milder version of that "Indian Programmer Competency Matrix" - both are notable for how frequently they are plugged into conversations and not for their actual content.
[0] http://sijinjoseph.com/programmer-competency-matrix/
arjunvpaul · 2019-03-24