7 ms·
Programmer Competency Matrix
- iLemming 12y agoServes to feed ego of a programmer: "Done that, know this - oh, I'm pretty good" vs. "Done that, have no idea what this is - oh, I don't care, this post is bullshit! I know I'm a good programmer"
- mooreds 12y agoAh yes, the Dunning Kruger effect in full force: http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
- deleted 12y ago[deleted]
- milspec 12y agoYou can't even make it to level 0 unless you use an IDE. I guess you're level -1 if you're an experienced old person using "vi" and "make".
- olooney 12y agoThere is a level beyond what is shown on the chart: the mythical O(1), constant time, which those who speak of do not know, and those that know do not speak of...
- sarciszewski 12y agoThis is such a terrible rubric. Where's the points for "doesn't write vulnerable software that an 8th grader could trivially exploit"? Oh wait, India? My experience with India has led me to believe the country sits at "largely incompetent, with a few great folks": https://scott.arciszewski.me/misc/Linkedin/Fail.html https://scott.arciszewski.me/misc/Linkedin/Fail.html
- grkvlt 12y agoYou have toremember there are ~1 billion people in India. So just playing the numbers game there are three-four times as many incompetent programmers there than in the USA. Of course, that doesn't mean India is 3-4 times worse than the States. Although, thinking about the maths for choosing a representative sample size from a population, it looks like for large populations the required sample size to get representative data will be equivalent. I don't know enough to work out how un-representative a small-N sample will be, with population size varying. Anyone?
- cyphunk 12y agoDid I miss it or is there nothing in here in relation to secure coding. Ship first I guess.
- mahyarm 12y agoUnfortunately, secure coding is a specialty. Most software has the security requirements of a house, which is minimal at best.
- krylon 12y agoIf you understand this matrix as a rough guideline, to identify the general areas where you might want to work on your skills, it is not without merit. But I think the complexities of software development make it fairly hard - if not impossible - to view someone through such a two-dimensional lens. Kind of like an IQ test. Knowing how somebody did on an IQ test might allow you to tell a genius from an idiot, but for the wide grey area in between, it is pretty useless, and downright dangerous if people start taking it to seriously.
- smoyer 12y agoThis is a pretty handy guide to technical skill levels but I've found (over my 30+ year career) that these skills only comprise about 15% of being a successful software engineer (lower case). Software engineering is all about communications: There communicating your desires to the computer which I'd estimate at the above mentioned 15%. And the rest which is communicating amongst a large enough team to create something useful (and many problems are bigger than a single person can solve). There's communicating with your future self - I easily forget my previous code by about six months out. There's also communicating with another future maintainer, which is somewhat harder than communicating with the future you. Start-ups tend to disregard many of the skills (and related costs) of the remaining 85% because failing to successfully get to market and become profitable is deadly on it's own. But the successful start-up will eventually have to transition to a more maintenance/continuity/reliability focused organization and there are plenty of pitfalls during that transition. (Note that I realize there are wide variations in how that transition can occur). At some point, any communications that was put off becomes technical debt ... and like the old commercial says - "You can pay me now or you can pay me later". Either way, developers that only know the technical skills on this competency matrix will either have a lot to learn or be out of work.
- michas 12y agoThis gets posted to HN every couple of months... Can we, maybe create somethink like HN "Hall of Fame", where we will store all-time best submissions? just to avoid resubmitting it every time new generation of programmers digs them out.
- doktrin 12y agoyay. another yardstick I can use to demonstrate my own ineptitude. solid level 1.5 of fail here.
- FractalNerve 12y agoDoes someobody have a nice printable version that doesn't look ugly when printed? I would love to hang this onto our wall in the office. Not sure if making this into an Infographic is less work than creating a css style that allows printing it correctly.
- Lingster 12y agoWhat a BS Matrix
- ryan-c 12y agoThis was first posted on hackernews here: https://news.ycombinator.com/item?id=232192 https://news.ycombinator.com/item?id=232192 It's about seven years old now, and is showing its age in a few places. The version control like seems most in need of updating now - git is widely used.
- Jimmy 12y agoWhy isn't there a row for "figuring out how large, poorly-documented legacy systems work"? That's what most of my daily development tasks consist of, anyway.
- amelius 12y agoUnfortunately, most new stuff on e.g. github isn't much better in this respect. So this is a competence most programmers have.
- golergka 12y agoAlso, anger management.
- matthewrhoden1 12y agoI couldn't agree more. Unless it's a startup, or the company produces "throw away" solutions. You're usually dropping in on a product where either the previous team was fired or it was boot-strapped by one guy who knew was he was doing, supported by 5 junior devs fresh out of college.
- vonmoltke 12y agoDon't forget the oh-so-common "We've built our core library up over years of different products, so it's kind of a mess".
- chajath 12y agoI don't know about the experience part. I think it's dangerous to assume that the more years experience you got, the better programmer you are.
- notatoad 12y agoI think its better to read that section the other way around: if you have 10+ years of experience, you should be in the level 3 bracket in (at least some) other sections. If you're a first year programmer, it might be acceptable to be in level one in other categories.
- cheatsheet 12y agoIt has been a paranoid hypothesis of mine that the best programmers wind up programming people instead.
- AnimalMuppet 12y agoThat doesn't have to be paranoid. That's exactly what good management is (also coaching). Done right, it's very valuable. Unfortunately (or fortunately?) at least at the moment, it's outside my skill set...
- cheatsheet 12y agoBut how do I know that I want my mind to be the way X wants my mind to be, without shaping it like that and biasing my assessment afterwards? How do I know whether I wanted my mind to be this way? How did my mind get this way? I know it's paranoia but sometimes I think ideas are more like viruses in more than the colloquial internet memetic sense. Like the brain literally has difficulty letting go of ideas because of the ways various ideas may alter brain structure and consequently influence perception.
- iamcurious 12y agoFollowing on that analogy: Skepticism would be the immune system. Nihilism would be an autoimmune disorder.
- LoSboccacc 12y agothis page, I looked for this page for years after finding it an unspecified amount of time ago. thanks. this is the page that kicked my introspection as developer and made me discovery code complete and so many awesome literature about software as engineering and not as development.
- tekacs 12y agoThis is pretty handy - I found it pretty useful to help me find where my strengths (and weaknesses!) lie, just by reading off where I'm Level 3 and where I'm Level 2. :) It also feels like a great and clear challenge to action to up everything to Level 3. :D I'll probably end up showing this to all my friends starting off in our field. :D
- sarciszewski 12y agoThis covers about 1% of what it really means to be a developer, and it does so poorly in a very biased manner. I'm being generous when I say 1%.
- tekacs 12y agoPerhaps[1]. It doesn't mean it's not a valuable or indicative 1%. Moreso, this does a surprisingly good job of balancing between practical (vocational) skills and background knowledge. [1]: though it depends what you work on - this happens to constitute a large portion of what's required for my work.
- mahyarm 12y agoI dunno, if all of my co-workers were level 3 in all of these categories, subtracting the company, platform and publishing specific items, it would be a big improvement! What is the other %99?
- dgomez1092 12y agoThank you for sharing these standards for being a better engineer.
- sarciszewski 12y agoStandards?
- c4b3r42 12y agoAn ENGINEER is a person that passed the PE exam (Professional engineer exam). IF YOU DID NOT PASS IT YOU ARE NOT AN ENGINEER. http://www.ieeeusa.org/policy/positions/Engineertitle0213.pdf http://www.ieeeusa.org/policy/positions/Engineertitle0213.pd... http://www.nspe.org/ http://www.nspe.org/ A programmer is not necessarily an engineer! Only those that passed the PE are, and not many do that. So stop using the term as it is not applicable.
- vonmoltke 12y agoNo, and your linked position paper from IEEE does not support your statement. Their position is that anyone with an ABET-accredited degree should be able to call themselves an engineer, and that licensure is required for the legally-protected titles.
- c4b3r42 12y agoMy position may be antiquated (I became engineer in 1995), but still valid. ABET accreditation requires that a person graduate from an accredited program and degree, the only degree that applies here is Software Engineer. http://www.abet.org/uploadedFiles/Accreditation/Accreditation_Step_by_Step/Accreditation_Documents/Current/2013_-_2014/eac-criteria-2013-2014.pdf http://www.abet.org/uploadedFiles/Accreditation/Accreditatio... How many programmers are Software Engineers? Not many from my perspective as a hiring developer. So again I say Programmer != Engineer PS For a program to be ABET the instructors must be Professional Engineers (Pass the PE Exam) go figure: "The overall competence of the faculty may be judged by such factors as education, diversity of backgrounds, engineering experience, teaching effectiveness and experience, ability to communicate, enthusiasm for developing more effective programs, level of scholarship, participation in professional societies, and licensure as Professional Engineers. "
- salibhai 12y agonot loading for me Google cache: http://webcache.googleusercontent.com/search?q=cache:qh2y61oyYxoJ:sijinjoseph.com/programmer-competency-matrix/+&cd=1&hl=en&ct=clnk&gl=ca http://webcache.googleusercontent.com/search?q=cache:qh2y61o...
- j2kun 12y ago> Able to recognize and code dynamic programming solutions, good knowledge of graph algorithms, good knowledge of numerical computation algorithms, able to identify NP problems etc. I'm pretty sure the author means "NP-hard" problems. And putting dynamic programming at the top of the algorithms tier is a pretty low bar. My guess is the author of this table isn't so strong on algorithms and hasn't explored what's beyond an introductory algorithms class. Edit: the reason I say "pretty sure" is because there are a lot of people who work on practical problems that are not in NP because the problem does not have well defined solutions. But in the context of the rest of the table, the author likely did not intend to make this fine distinction.
- sp332 12y agoYeah, P != NP hasn't been proven, so identifying problems in NP that are not in P might be impossible! Maybe identifying exponential or higher-order functions would be more tractable :)
- huhtenberg 12y agoOh, god, not this "Indian TopCoder superiority guide" again. Here's a previous discussion https://news.ycombinator.com/item?id=4626695 https://news.ycombinator.com/item?id=4626695 with links to 6 more discussions before that.
- deleted 12y ago[deleted]
- Scuds 12y agoIt's cute, five minutes to read, and easy to pass around, like an infographic. And, like an infographic, it's a kind of mental junk food.
- fmac 12y agoThis is useful for every person who is beginning to learn programming in a hard way. Also, experienced programmers can polish their knowledge with this competency matrix. Thank you for this work!
- artmageddon 12y agoSo the site's not loading for me, but if it's what I think it is, I remember coming across this a number of years ago and feeling really shitty about my skills.
- sarciszewski 12y agoThe only thing to feel shitty about is having wasted minutes of your life reading this fallacious rubric and then thinking it actually meaningfully measures developers.
- artmageddon 12y agoEdited my post to say "years ago", since I missed it the first time. I agree now, and I brushed it off at the time too.