Programmer Competency Matrix
sijinjoseph.com
sijinjoseph.com
Here's a previous discussion https://news.ycombinator.com/item?id=4626695 with links to 6 more discussions before that.
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.
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.
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.
Google cache: http://webcache.googleusercontent.com/search?q=cache:qh2y61o...
Unfortunately (or fortunately?) at least at the moment, it's outside my skill set...
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.
Example: Say I have trouble finishing tasks assigned to me. A bad manager fires me. A different bad manager tries to manipulate me. A good manager works with me to help me learn how to get better at finishing stuff. Does that change me? Yeah, maybe it does. But unless I regard "the way I am right now" as the perfect standard for who and what I'm supposed to be, change isn't this thing to be regarded with paranoia. It's not something that you should desperately seek to undo, except that you can't quite figure out how to do so because you're different now. It's a good thing. (At least, it can be, done well by good bosses.)
Another example: My boss sees that I'm not good at Android. He sends me to some Android training. That changes my skill set, but not who I am in any fundamental sense. But my boss is still, essentially, programming people.
With that said, though, still don't lose your ability to trust...
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.
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
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
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.
What is the other %99?
Not sure if making this into an Infographic is less work than creating a css style that allows printing it correctly.
> ABET accreditation requires that a person graduate from an accredited program and degree, the only degree that applies here is Software Engineer.
Wrong again. First off, there are 271 ABET-accredited Computer Science degree programs. Holders of those CS degrees are eligible to call themselves engineers by the IEEE's criteria as well as to sit a PE exam. Second, the subject of the degree is irrelevant. I have a a Bachelor's of Science in Electrical Engineering, but have been an electrical engineer, systems engineer, and software engineer at various points of my career. I do not have to stop using "engineer" just because I lose the "electrical". I can sit for any PE exam I wish.
> (You) For a program to be ABET the instructors must be Professional Engineers
> (ABET) The overall competence of the faculty may be judged by such factors as ... licensure as Professional Engineers
How did "may" turn into "must"? I wonder how my university has been pulling the wool over ABET's eyes for so long, since most of the engineering professors are not PEs. Hell, I don't think some of them have any industry experience at all.