Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    S

    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.

    Visit blogHN submissions
    Career & WorkProgramming
    What HN says

    Commenters 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.

    Stats for nerds
    26HN people shared it
    5linked in comments
    335story points
    Nov 2024last shared
    2013people per year2024

    Top posts on HN

    1. 1
      Programmer Competency Matrix (2016)
      25 people · 335 points · first shared 2013 · 106 comments on HN
    2. 2
      Programmer competency matrix
      1 person · first shared 2017

    What HN people wrote when they linked it

    • xtractoMay 2019

      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…

    • erhserhdfdNov 2024

      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.

    • hackula1Sep 2013

      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.

    • itamarstDec 2016

      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.

    • daffodil2Apr 2014

      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)

    • hnrussNov 2018

      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.

    Related

    James Hagueprog21.dadgum.com472 people

    Things That Turbo Pascal is Smaller Than

    James Hague
    Personal · last shared 2026
    Indian Geekindiangeek.net20 people

    Programmer Competency Matrix

    Indian Geek
    Personal · last shared 2013
    Joel on Softwarejoelonsoftware.com2.8k people

    Victory Lap for Ask Patents

    Joel on Software
    Personal · last shared 2026
    Jay McCarthyjeapostrophe.github.io16 people

    Writing a Vi-like Graphics Editor in Racket

    Jay McCarthy
    Personal · last shared 2026
    Jeremy Kunjeremykun.com194 people

    A Programmer's Introduction to Mathematics

    Jeremy Kun
    Personal · last shared 2026
    Yossi Kreininyosefk.com387 people

    Yosefk - My history with Forth & stack machines

    Yossi Kreinin
    Personal · last shared 2026
    Joseph Wilkblog.josephwilk.net21 people

    Building Clojure Services at Scale

    Joseph Wilk
    Personal · last shared 2023
    Paul Khuongpvk.ca106 people

    SBCL: The Ultimate Assembly Code Breadboard

    Paul Khuong
    Personal · last shared 2026