First of all, the third column here is highly editorialised. If you have a look at anything related to languages, he always lists Erlang, Oz, Prolog -- I wonder why? I won't go into a diatribe on this-or-that nonsense but it would be fairer to talk about languages by their capabilities i.e. either include more languages like Ocaml (which is my hill to die on for "high-society" languages) or just say "has pattern-matching and concurrency primitives".
As for the Systems Programming section, does he really think that knowing how a compiler works is a system-related topic?? and why is that level 1? shouldn't the first level be understanding things like system calls, filesystems, drivers, kernel operation? processes? etc. Once again I think this matrix has been constructed with little consultation from domain experts for that area.
I agree for the most part with the criteria for programming itself, but I need to nitpick at the claims about using IDEs. Why is "written a custom macro" a tier-3 requirement for IDE proficiency? wouldn't it be more reasonable to say "has written a plugin"? and moreover what does this really have to do with programmer competency? a beginner could write a macro or plugin for VS Code for example. Therefore I don't think it's a good marker.
I guess like most discussions on programming, it is about 60:40 in terms of objectiveness. The remaining 40% is largely grounded in the author's personal experiences and you can tell that he had trouble deciding what the top-tier programmers would be capable of, preferring largely complexity-increasing exercises instead of complexity-reducing tasks. And for me the latter is the sign of an expert.
> As for the Systems Programming section, does he really think that knowing how a compiler works is a system-related topic?? and why is that level 1? shouldn't the first level be understanding things like system calls, filesystems, drivers, kernel operation?
I think the idea is that most people will start exploring the world of programming from higher layers working their way down. People use software, then they write software with tools (languages), then they try to understand the tools, then they try to understand what the output of the tools mean on a yet deeper level, going down the rabbit hole all the way down (to physics? but I guess the lines is drawn elsewhere).
This may be wrong but it's obvious from the rest of the matrix that this is probably just based on how the author and maybe their friends gained "proficiency".
None of this is generally applicable. I do think the,matrix is still valuable. It provides a view of how some people may evaluate competence (even if misguided wrt ordering/levelling) and provides a set of goals that are not bad per se. Being on the highest levels mentioned there does probably in fact translate to a certain high degree of experience and competence.
I would go on further and say that it's not only for the recruiters but also for the hires to understand whay are the general skillsets they can have to expand over a period of time.
Block-chain Dev, Android Dev, AI/ML devs are domain specific but in each of those there are atleast 3-4 domains mapping out in general from the PCM.
There will be a domain specific competency matrix on top of PCM.
First of all, the third column here is highly editorialised. If you have a look at anything related to languages, he always lists Erlang, Oz, Prolog -- I wonder why? I won't go into a diatribe on this-or-that nonsense but it would be fairer to talk about languages by their capabilities i.e. either include more languages like Ocaml (which is my hill to die on for "high-society" languages) or just say "has pattern-matching and concurrency primitives".
As for the Systems Programming section, does he really think that knowing how a compiler works is a system-related topic?? and why is that level 1? shouldn't the first level be understanding things like system calls, filesystems, drivers, kernel operation? processes? etc. Once again I think this matrix has been constructed with little consultation from domain experts for that area.
I agree for the most part with the criteria for programming itself, but I need to nitpick at the claims about using IDEs. Why is "written a custom macro" a tier-3 requirement for IDE proficiency? wouldn't it be more reasonable to say "has written a plugin"? and moreover what does this really have to do with programmer competency? a beginner could write a macro or plugin for VS Code for example. Therefore I don't think it's a good marker.
I guess like most discussions on programming, it is about 60:40 in terms of objectiveness. The remaining 40% is largely grounded in the author's personal experiences and you can tell that he had trouble deciding what the top-tier programmers would be capable of, preferring largely complexity-increasing exercises instead of complexity-reducing tasks. And for me the latter is the sign of an expert.