programmer competency matrix _ sijin joseph

21
(http://sijinjoseph.com/) Perspectives on Software, Technology and Business About (http://sijinjoseph.com/about/) Contact (http://sijinjoseph.com/contact/) Programmer Competency Matrix (http://sijinjoseph.com/programmer-competency-matrix/) Programmer Competency Matrix Note that the knowledge for each level is cumulative; being at level n implies that you also know everything from the levels lower than n. Computer Science 2 (Level 0) n (Level 1) n (Level 2) log(n data structures Doesn’t know the difference between Array and LinkedList Able to explain and use Arrays, LinkedLists, Dictionaries etc in practical programming tasks Knows space and time tradeoffs of the basic data structures, Arrays vs LinkedLists, Able to explain how hashtables can be implemented and can handle collisions, Priority queues and ways to implement them etc. Know data bino heap Splay etc. algorithms Unable to find the average of numbers in an array (It’s hard to believe but I’ve interviewed such candidates) Basic sorting, searching and data structure traversal and retrieval algorithms Tree, Graph, simple greedy and divide and conquer algorithms, is able to understand the relevance of the levels of this matrix. Able dyna solut of gr know comp able prob Basic understanding of Understands kernel mode vs. user Unde prog n 2

Upload: sorin-sorinos

Post on 18-Jul-2016

229 views

Category:

Documents


9 download

DESCRIPTION

Programmer Competency Matrix

TRANSCRIPT

Page 1: Programmer Competency Matrix _ Sijin Joseph

(httpsijinjosephcom)

Perspectives on Software Technology and Business

About (httpsijinjosephcomabout) Contact (httpsijinjosephcomcontact)

Programmer Competency Matrix (httpsijinjosephcomprogrammer-competency-matrix)

Programmer Competency Matrix

Note that the knowledge for each level is cumulative being at

level n implies that you also know everything from the

levels lower than n

Computer Science

2 (Level 0) n (Level 1) n (Level 2) log(n)

data structures

Doesnrsquot knowthe differencebetween Arrayand LinkedList

Able to explain and useArrays LinkedListsDictionaries etc in practicalprogramming tasks

Knows space and time tradeoffs ofthe basic data structures Arrays vsLinkedLists Able to explain howhashtables can be implemented andcan handle collisions Priority queuesand ways to implement them etc

Knowledge of advanceddata structures like B‐treesbinomial and fibonacciheaps AVLRed Black treesSplay Trees Skip Lists triesetc

algorithms

Unable to findthe average ofnumbers in anarray (Itrsquos hardto believe butIrsquoveinterviewedsuchcandidates)

Basic sorting searching anddata structure traversal andretrieval algorithms

Tree Graph simple greedy and divideand conquer algorithms is able tounderstand the relevance of the levelsof this matrix

Able to recognize and codedynamic programmingsolutions good knowledgeof graph algorithms goodknowledge of numericalcomputation algorithmsable to identify NPproblems etc

Basic understanding of Understands kernel mode vs user

Understands the entireprogramming stack

n 2

systemsprogramming

Doesnrsquot knowwhat acompilerlinker orinterpreter is

compilers linker andinterpreters Understandswhat assembly code is andhow things work at thehardware level Someknowledge of virtualmemory and paging

mode multi‐threadingsynchronization primitives and howtheyrsquore implemented able to readassembly code Understands hownetworks work understanding ofnetwork protocols and socket levelprogramming

hardware (CPU + Memory +Cache + Interrupts +microcode) binary codeassembly static anddynamic linkingcompilation interpretationJIT compilation garbagecollection heap stackmemory addressinghellip

Software Engineering

2 (Level 0) n (Level 1) n (Level 2) log(n)

source codeversion control

Folder backupsby date

VSS and beginning CVSSVNuser

Proficient in using CVS and SVNfeatures Knows how to branch andmerge use patches setup repositoryproperties etc

Knowledge of distributedVCS systems Has tried outBzrMercurialDarcsGit

buildautomation

Only knowshow to buildfrom IDE

Knows how to build thesystem from the commandline

Can setup a script to build the basicsystem

Can setup a script to buildthe system and alsodocumentation installersgenerate release notes andtag the code in sourcecontrol

automatedtesting

Thinks that alltesting is thejob of thetester

Has written automated unittests and comes up withgood unit test cases for thecode that is being written

Has written code in TDD manner

Understands and is able tosetup automatedfunctionalloadperformance and UItests

Programming

2 (Level 0) n (Level 1) n (Level 2) log(n)

problemdecomposition

Only straightline code withcopy paste forreuse

Able to break up probleminto multiple functions

Able to come up with reusablefunctionsobjects that solve theoverall problem

Use of appropriate datastructures and algorithmsand comes up withgenericobject‐orientedcode that encapsulateaspects of the problem thatare subject to change

systemsdecomposition

Not able tothink abovethe level of asingle fileclass

Able to break up problemspace and design solution aslong as it is within the sameplatformtechnology

Able to design systems that spanmultiple technologiesplatforms

Able to visualize and designcomplex systems withmultiple product lines andintegrations with externalsystems Also should beable to design operationssupport systems likemonitoring reporting failovers etc

n 2

n 2

communication

Cannotexpressthoughtsideasto peers Poorspelling andgrammar

Peers can understand whatis being said Good spellingand grammar

Is able to effectively communicatewith peers

Able to understand andcommunicatethoughtsdesignideasspecsin a unambiguous mannerand adjusts communicationas per the context

codeorganizationwithin a file

no evidence oforganizationwithin a file

Methods are groupedlogically or by accessibility

Code is grouped into regions and wellcommented with references to othersource files

File has license headersummary well commentedconsistent white spaceusage The file should lookbeautiful

2 (Level 0) n (Level 1) n (Level 2) log(n)

codeorganizationacross files

No thoughtgiven toorganizingcode acrossfiles

Related files are groupedinto a folder

Each physical file has a uniquepurpose for eg one class definitionone feature implementation etc

Code organization at aphysical level closelymatches design and lookingat file names and folderdistribution providesinsights into design

source treeorganization

Everything inone folder

Basic separation of codeinto logical folders

No circular dependencies binarieslibs docs builds third‐party code allorganized into appropriate folders

Physical layout of sourcetree matches logicalhierarchy and organizationThe directory names andorganization provideinsights into the design ofthe system

n 2

codereadability

Mono‐syllablenames

Good names for filesvariables classes methodsetc

No long functions commentsexplaining unusual code bug fixescode assumptions

Code assumptions areverified using asserts codeflows naturally ndash no deepnesting of conditionals ormethods

defensivecoding

Doesnrsquotunderstand theconcept

Checks all arguments andasserts critical assumptionsin code

Makes sure to check return values andcheck for exceptions around codethat can fail

Has his own library to helpwith defensive codingwrites unit tests thatsimulate faults

2 (Level 0) n (Level 1) n (Level 2) log(n)

error handling Only codes thehappy case

Basic error handling aroundcode that can throwexceptionsgenerate errors

Ensures that errorexceptions leaveprogram in good state resourcesconnections and memory is allcleaned up properly

Codes to detect possibleexception before maintainconsistent exceptionhandling strategy in alllayers of code come upwith guidelines onexception handling forentire system

IDEMostly usesIDE for textediting

Knows their way around theinterface able to effectivelyuse the IDE using menus

Knows keyboard shortcuts for mostused operations

Has written custom macros

API

Needs to lookup thedocumentationfrequently

Has the most frequentlyused APIs in memory

Vast and In‐depth knowledge of theAPI

Has written libraries that siton top of the API to simplifyfrequently used tasks and tofill in gaps in the API

frameworks

Has not usedany frameworkoutside of thecore platform

Has heard about but notused the popularframeworks available forthe platform

Has used more than one framework ina professional capacity and is well‐versed with the idioms of theframeworks

Author of framework

2 (Level 0) n (Level 1) n (Level 2) log(n)

requirements

Takes thegivenrequirementsand codes tospec

Come up with questionsregarding missed cases inthe spec

Understand complete picture andcome up with entire areas that needto be speced

Able to suggest betteralternatives and flows togiven requirements basedon experience

scriptingNo knowledgeof scriptingtools

Batch filesshell scripts PerlPythonRubyVBScriptPowershellHas written and publishedreusable code

Able to design good and normalized

Can do basic databaseadministrationperformance optimizationindex optimization writeadvanced select queries

n 2

n 2

databaseThinks thatExcel is adatabase

Knows basic databaseconcepts normalizationACID transactions and canwrite simple selects

database schemas keeping in mindthe queries thatrsquoll have to be runproficient in use of views storedprocedures triggers and user definedtypes Knows difference betweenclustered and non‐clustered indexesProficient in use of ORM tools

able to replace cursor usagewith relational sqlunderstands how data isstored internallyunderstands how indexesare stored internallyunderstands how databasescan be mirrored replicatedetc Understands how thetwo phase commit works

Experience

2 (Level 0) n (Level 1) n (Level 2) log(n)

languages withprofessionalexperience

Imperative orObjectOriented

Imperative Object‐Orientedand declarative (SQL)added bonus if theyunderstand static vsdynamic typing weak vsstrong typing and staticinferred types

Functional added bonus if theyunderstand lazy evaluation curryingcontinuations

Concurrent (Erlang Oz) andLogic (Prolog)

platforms withprofessionalexperience

1 2‐3 4‐5 6+

years ofprofessionalexperience

1 2‐5 6‐9 10+

domainknowledge

No knowledgeof the domain

Has worked on at least oneproduct in the domain

Has worked on multiple products inthe same domain

Domain expert Hasdesigned and implementedseveral productssolutionsin the domain Well versedwith standard termsprotocols used in thedomain

Knowledge

2 (Level 0) n (Level 1) n (Level 2) log(n)

toolknowledge

Limited toprimary IDE(VSNetEclipse etc)

Knows about somealternatives to popular andstandard tools

Good knowledge of editorsdebuggers IDEs open sourcealternatives etc etc For eg someonewho knows most of the tools fromScott Hanselmanrsquos power tools listHas used ORM tools

Has actually written toolsand scripts added bonus iftheyrsquove been published

languagesexposed to

Imperative orObjectOriented

Imperative Object‐Orientedand declarative (SQL)added bonus if theyunderstand static vsdynamic typing weak vs

Functional added bonus if theyunderstand lazy evaluation curryingcontinuations

Concurrent (Erlang Oz) andLogic (Prolog)

n 2

n 2

Tweet 467 StumbleUpon 8 points Share 328 1558

11kLike

strong typing and staticinferred types

codebaseknowledge

Has neverlooked at thecodebase

Basic knowledge of thecode layout and how tobuild the system

Good working knowledge of codebase has implemented several bugfixes and maybe some small features

Has implemented multiplebig features in the codebaseand can easily visualize thechanges required for mostfeatures or bug fixes

knowledge ofupcomingtechnologies

Has not heardof theupcomingtechnologies

Has heard of upcomingtechnologies in the field

Has downloaded the alphapreviewCTPbeta and read somearticlesmanuals

Has played with thepreviews and has actuallybuilt something with it andas a bonus shared that witheveryone else

2 (Level 0) n (Level 1) n (Level 2) log(n)

platforminternals

Zeroknowledge ofplatforminternals

Has basic knowledge ofhow the platform worksinternally

Deep knowledge of platform internalsand can visualize how the platformtakes the program and converts it intoexecutable code

Has written tools toenhance or provideinformation on platforminternals For egdisassemblers decompilersdebuggers etc

books

Unleashedseries 21 daysseries 24 hourseriesdummiesserieshellip

Code Complete Donrsquot Makeme Think MasteringRegular Expressions

Design Patterns PeoplewareProgramming Pearls AlgorithmDesign Manual PragmaticProgrammer Mythical Man month

Structure and Interpretationof Computer ProgramsConcepts TechniquesModels of ComputerProgramming Art ofComputer ProgrammingDatabase systems by C JDate Thinking Forth LittleSchemer

blogs

Has heard ofthem butnever got thetime

Readstechprogrammingsoftwareengineering blogs andlistens to podcastsregularly

Maintains a link blog with somecollection of useful articles and toolsthat heshe has collected

Maintains a blog in whichpersonal insights andthoughts on programmingare shared

Thanks to John Haugeland (httpfullofbs) for a

reformatting of it that works much more nicely on the web

Share this

n 2

Share 230

7 More

43 Comments Add your comment

Umnov Denis December 21 2011 at 0457 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3541)

Thank you very useful

Anonymous January 24 2012 at 0310 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3550)

hh

Sdfw April 3 2012 at 1925 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3558)

Your mom is hot

Zahid Rasool May 28 2012 at 0215 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3560)

why

Anders Bornholm (HttpWwwOsirisguitarCom)November 6 2012 at 0810 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3569)

Excellent breakdown of skills

Sebastien November 27 2012 at 0705 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3576)

It could be perfect with 5 levels based on Dreyfus model of skill acquisition

Nomota November 29 2012 at 0550 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3577)

Here I want to add at two more skills ndash Documentation

ldquoDocumentationrdquo (2^n Donrsquot know which kind of documents should be prepared

n^2Knows structured document deliverables within a software project n Has hisher

own set of reference documents from multiple projects log(n) Can design proper

formats and guidelines for a new SW project)

ldquoOce Tools Versatilityrdquo (2^n Has very basic understanding of Oce tools n^2 suers

diculties without proper format or table of contents n knows how to make document

templates use short-cut keys sometimes log(n) frequent use of short-cut keys and

denes hisher own macros or template formats utilizes extra-Oce tools if necessary

in combination with Oce tools)

Sijin November 29 2012 at 1153 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3578)

Thank you for the feedback Irsquoll be updating the matrix in the next year and will consider

your feedback

Yem Goslashdfather(HttpWwwFacebookComYemGodfather) December 23

2012 at 1623 (httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-

3580)

nah I do agree with the guy still anyhow tell us why you think that itrsquos a piece of

garbage

Tron March 3 2013 at 1540 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3583)

Excellent breakdown of needed skills for coding to sdm_64 and his ilk you have

revealed your incompetence by criticizing what you do not understand

Vector December 9 2013 at 1623 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3638)

Great content bad web design Looks like a free wordpress theme

Professional Programmer December 17 2013 at 1204

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3642)

wherersquos the smugness Irsquom cleverer than you and can use big words area of the matrix

this is the kind of thing that keeps this dude the dateless wonder he undoubtedly is ndash I

can just imagine the interview where he grinds some poor junior into the ground just to

massage his own oversized ego good programmers understand a problem and make a

solution in code ndash everything else is bullshit ndash if yoursquore interviewing yoursquoll know this in the

rst 2 minutes if you have to use this matrix to do that yoursquore not cut out as a manager

of human beings ask your clients (you know the ones who pay you) if they give a shit if

you know Erlang AND Prolog ndash bet I know where to nd you at parties

Juan David Pastaacutes Rivera December 22 2013 at 0347

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3644)

I feel more important the ability of learn new things more than a xed skill set I am not

sure if competence is a word that encapsulates this ability I am referring to but I like

more speed than position not saying I underrate position

MacgtPC December 30 2013 at 2336 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3649)

As a woefully incompetent programmer I appreciate the explicitness in this chart I only

wish someone would explain design competency in concrete terms such as you have

used for programming

Ramstar January 2 2014 at 1312 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3651)

If this is a litmus for the tested it is one for the tester

Brian Deeks January 3 2014 at 1905 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3652)

While I disagree with some of these what I take issue with will be dierent for other

programmershellipas perhaps they hit too closely to home Nice list

You should have one more category GUIweb application usability

2^n Messy dialogs and layouts unusable interfaces message boxes everywhere

horric colors and icons skinned interfaces that donrsquot match anything else in the OS

n^2 Nicer icons tab order works naturally lets the OS handle skinning of the

application

n Figures out what colors look good together message boxes only show on critical

issues doesnrsquot always follow the specication for UI design to the letter in an attempt to

make userrsquos lives less like a living Hell

log(n) Stands behind users on a regular basis to silently watch them actually use the

application disappears for days or weeks at a time to pick away at the newly discovered

usability issues until user interaction is smooth as butter and the users stop cursing at

the application Gets frequent positive feedback on the usability aspects and hailed as a

hero throughout the organization for creating the worldrsquos rst usable piece of software

Willing to repeat the process an unlimited number of times with an unlimited amount of

patience

Sijin Joseph (HttpSijinjosephCom) January 4 2014 at 0710

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3655)

Brian ndash Thank you for the feedback Like the GUIWeb usability idea but not sure if

yoursquore kidding about log(n) level

Neil Terry January 5 2014 at 1256 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3657)

Irsquove been looking for something with Visual Designer or GUI on it too My Team are a bit

of a mixture of Visual Designers and Developers Look forward to any enhancements

you might make

Raj January 21 2014 at 0208 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3660)

Nice matrix

MediumMech February 24 2014 at 0058 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3664)

Yes it was a rather blunt wake-up call for me I always assume therersquos someone better

than me and Irsquom not really a professional right now anyways but it always sucks to learn

you know less than you thought you did Oh well at least I have some guidelines to

learn from

Carthax March 7 2014 at 0946 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3668)

Irsquove been teaching myself programming for a number of years and have always known I

was only scratching the surface Seeing this article made me realize exactly how much

more I have to learn I know

gthelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

lt this much to learn to be competent and I dont think Disqus will let me put enough

dots in to describe what it would take to be a master

Martin March 10 2014 at 0945 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3669)

1) I would have used the scale in reverse then it (sort of) becomes a measure of

productivity 2) Add a category for SW Life Cycle with rows such as system analysis

documentation project planning CMMI Ranges from No clue understands concepts

runs with scissors works with designshellipSW Maintenance can write them well able to

implement and improve process

Sijin Joseph (HttpSijinjosephCom) March 10 2014 at 1059

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3670)

Thank you for the feedback Martin Will incorporate into next version

Gyubok March 16 2014 at 1414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3673)

Its because hersquos missing the uiux section

WebDeva March 18 2014 at 1118 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3675)

Irsquom questioning my own readiness to apply for entry-level or junior Web development

jobs Based on your matrix Irsquom somewhere between level 0 and level 1 (higher in some

areas like communication because I have several degrees code readability because I

simply love writing beautifully organized and well-documented code et al) I have about

a year of post-bacc computer science I quit the program when I realized I was more

interested in Web app development than compilers and OSes I have experience with

PHP Java C++ MySQL I can create read update and delete data What would be

helpful for someone like me is the addition of some sort of correlation Maybe an

additional grid with representative job titles at each level

Ani A March 28 2014 at 0414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3678)

+1 for ldquoDocumentationrdquo (can add use of PandocMarkdownAsciidocDocbook in case of

log(n) )

Vishal April 2 2014 at 0951 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3681)

very helpful why not a wiki page so that this can be revised and updated with more

categories

A Concord Resident April 15 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3685)

Everything Crushed I am a ZERO (average score) This is one hell of a list to live up to

Irsquove been well I guess now wasting the past decade of my life I have an interview this

week and I now feel like Irsquom bringing squat to the table So much work to dohellip Is there a

future in MS Access Db Development Yeah right

Dirk Herrmann April 22 2014 at 0401 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3686)

Thanks for the interesting matrix However I am confused about the column headlines

In your introductional text you say being at level n implies knowing everything below n

Then the columns also use n but additionally give levels 03 Combined with the

expressions this leads to the following 2^n with n=0 gives 1 n^2 with n=1 gives 1 hellip But

this is probably not what is meant Therefore what is the n in the column headlines

about and what does for example 2^n indicate Thanks for the clarication

HaakonKL May 3 2014 at 0347 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3687)

So Irsquom just a student but I have a few questions

Why is the Little Schemer in the Level 3 grouping

Itrsquos not a hard book to read

Why is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

Why is PowerShell not a shellscript

Itrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

And speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

If yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

Sijin Joseph (HttpSijinjosephCom) May 6 2014 at 0822

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3688)

Hi HaakonKL ndash Thank you for your time and feedback Replies below

gtWhy is the Little Schemer in the Level 3 grouping

gtItrsquos not a hard book to read

Having read this book shows a dierent type of programmer one whorsquos interested in

going beyond the how and asking why Yoursquod be surprised how many programmers

yoursquoll run into in your professional life who havenrsquot heard of the book or the language

for that matter

gtWhy is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

There is a dierent between knowing normalization and applying it based on your

specic needs In all practical scenarios you have to make choices and the choices

depend on the type of system usage which is why knowing about normalization is

below being able to understand and apply it eectively

gtWhy is PowerShell not a shellscript

gtItrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

Fair point Powershell is a full-blown programming language that exposes the complete

Net API which is why I lumped it with other general purpose scripting languages like

Python and Ruby

gtAnd speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

gtIf yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

True But this was just an example of tool knowledge Could you suggest something

similar for OSX or Linux

HaakonKL May 9 2014 at 0912 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3690)

For OSXLinux

man and info is a must

But therersquos also stu like sort uniq grep sed awk git etc for whenever you have text

you want to do things with

And then therersquos xpath and xquery as command-line tools if you need to do things to

xml-les (or should that be in the database section) jQuery is not quite the same thing

for JSON p

You should also be really comfortable with your package manager If yoursquore on say

Ubuntu and donrsquot know how to add in PPAs to get the newest version of some specic

software you want then yoursquore missing out

As for PowerShell I think I agree with you at least a little bit You make it sound useful

for the same sort of glue-code that Python and Perl is used for in the Unix world and in

that case yoursquore right and Irsquom wrong

Sijin Joseph (HttpSijinjosephCom) May 9 2014 at 1043

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3691)

Thank you Irsquoll incorporate this feedback into my next revision

Izkata May 21 2014 at 2218 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3694)

Itrsquos a bit excessive (weeks yeesh) but is otherwise a fairly accurate description of

usability testing

We tend to have one person doing the testing then the whole team secretly watches

through webcam+screen sharing to see how they react and what they do

Miraculixx June 11 2014 at 1720 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3698)

Irsquom questioning the focus on Erlang and Prolog and dynamic programming for log(n)

These are very particular elds and are not on par with all the other log(n) areas

Michael Bostwick June 13 2014 at 1315 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3699)

hellipI wish there was a PDF download

Allister Quinn June 18 2014 at 0817 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3701)

So someone with a rst class degree in Computer Science going for a software

engineering job would be expected to be somewhere between Level 1 and Level 2

Rodrigo Haguiuda July 10 2014 at 1526 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3702)

Could you provide a printer friendly version of the matrix

2Triangle July 11 2014 at 0501 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3703)

So I just graduated High School and have been reading SICP and TAOCP on-lsquonrsquo-o for

half a year Irsquom still trying to implement Chapter 1 Reading through the next chapters is

fun but itrsquos not fullling because I havenrsquot fully understood the rst

Are these books just too hard On Amazon therersquos a great review for TAOCP ldquoI bought

this bookset because they look nice on my wall And chicks think Irsquom smartrdquo Irsquom guessing

not many people have read it

Sijin Joseph (HttpSijinjosephCom) July 11 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3704)

My recommendation would be to skim through the books and keep coming back to the

books over the years as you gain more experience Yoursquoll learn something new every

time

Focus on building stu algorithms are only one aspect of software engineering building

stu will expose you to more aspects that will be more valuable to you in the early

stages

James Hawk III July 29 2014 at 1713 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3708)

Well I guess thatrsquos one guyrsquos opinion

George September 9 2014 at 1030 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3736)

Ultimately many interview questions are garbage since they simply reward those

people who memorize answers In your job are you allowed to look at MSDN do google

searches etc to solve problems The answer is likely yes Why are interviews so

dierent Itrsquos like taking a test in college In college you crammed and memorized the

info for that specic test but had no real understanding of it to use in the real world

For instance on a recent interview for a Sr Level developer they asked what indexes

are and the dierence between clustered and non-clustered indexes in SQL I knew

what indexes are but couldnrsquot recall the dierence between non-clustered and clustered

indexes The reality is who cares If I need to know the dierences thatrsquos what google is

for The best software developers are the ones who have a built-in curiosity about

technical things know how to research things and use that in their daily development

Irsquom coming to the conclusion that most tech interviews are a waste of time for everyone

involved Instead put the person in front of a PC give them an hour to write some

simple programs which illustrate their skill level This will be a far more accurate

assessment of the personrsquos skill than technical questions would give you And it gives

the interviewer the opportunity to go more in depth and ask about design decisions

performance issues and see the persons thought process on how they gure out stu

they donrsquot know about

But given that we live in the real world the matrix is a helpful starting point to know

what areas software engineers may need to brush up on for interviews I will give my

own critique of it from my 20 years of CC++C experience

Most people will never have the Level 3 (or even Level 2) knowledge in some areas

because they donrsquot use that skill set on a daily basis or the framework they use

abstracts things for them

For instance how often do does the average developer in a modern language think of

advanced data structures like B-trees binomial amp bonacci heaps etc While the

developer should have heard of most of these data structures and should be able to

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 2: Programmer Competency Matrix _ Sijin Joseph

systemsprogramming

Doesnrsquot knowwhat acompilerlinker orinterpreter is

compilers linker andinterpreters Understandswhat assembly code is andhow things work at thehardware level Someknowledge of virtualmemory and paging

mode multi‐threadingsynchronization primitives and howtheyrsquore implemented able to readassembly code Understands hownetworks work understanding ofnetwork protocols and socket levelprogramming

hardware (CPU + Memory +Cache + Interrupts +microcode) binary codeassembly static anddynamic linkingcompilation interpretationJIT compilation garbagecollection heap stackmemory addressinghellip

Software Engineering

2 (Level 0) n (Level 1) n (Level 2) log(n)

source codeversion control

Folder backupsby date

VSS and beginning CVSSVNuser

Proficient in using CVS and SVNfeatures Knows how to branch andmerge use patches setup repositoryproperties etc

Knowledge of distributedVCS systems Has tried outBzrMercurialDarcsGit

buildautomation

Only knowshow to buildfrom IDE

Knows how to build thesystem from the commandline

Can setup a script to build the basicsystem

Can setup a script to buildthe system and alsodocumentation installersgenerate release notes andtag the code in sourcecontrol

automatedtesting

Thinks that alltesting is thejob of thetester

Has written automated unittests and comes up withgood unit test cases for thecode that is being written

Has written code in TDD manner

Understands and is able tosetup automatedfunctionalloadperformance and UItests

Programming

2 (Level 0) n (Level 1) n (Level 2) log(n)

problemdecomposition

Only straightline code withcopy paste forreuse

Able to break up probleminto multiple functions

Able to come up with reusablefunctionsobjects that solve theoverall problem

Use of appropriate datastructures and algorithmsand comes up withgenericobject‐orientedcode that encapsulateaspects of the problem thatare subject to change

systemsdecomposition

Not able tothink abovethe level of asingle fileclass

Able to break up problemspace and design solution aslong as it is within the sameplatformtechnology

Able to design systems that spanmultiple technologiesplatforms

Able to visualize and designcomplex systems withmultiple product lines andintegrations with externalsystems Also should beable to design operationssupport systems likemonitoring reporting failovers etc

n 2

n 2

communication

Cannotexpressthoughtsideasto peers Poorspelling andgrammar

Peers can understand whatis being said Good spellingand grammar

Is able to effectively communicatewith peers

Able to understand andcommunicatethoughtsdesignideasspecsin a unambiguous mannerand adjusts communicationas per the context

codeorganizationwithin a file

no evidence oforganizationwithin a file

Methods are groupedlogically or by accessibility

Code is grouped into regions and wellcommented with references to othersource files

File has license headersummary well commentedconsistent white spaceusage The file should lookbeautiful

2 (Level 0) n (Level 1) n (Level 2) log(n)

codeorganizationacross files

No thoughtgiven toorganizingcode acrossfiles

Related files are groupedinto a folder

Each physical file has a uniquepurpose for eg one class definitionone feature implementation etc

Code organization at aphysical level closelymatches design and lookingat file names and folderdistribution providesinsights into design

source treeorganization

Everything inone folder

Basic separation of codeinto logical folders

No circular dependencies binarieslibs docs builds third‐party code allorganized into appropriate folders

Physical layout of sourcetree matches logicalhierarchy and organizationThe directory names andorganization provideinsights into the design ofthe system

n 2

codereadability

Mono‐syllablenames

Good names for filesvariables classes methodsetc

No long functions commentsexplaining unusual code bug fixescode assumptions

Code assumptions areverified using asserts codeflows naturally ndash no deepnesting of conditionals ormethods

defensivecoding

Doesnrsquotunderstand theconcept

Checks all arguments andasserts critical assumptionsin code

Makes sure to check return values andcheck for exceptions around codethat can fail

Has his own library to helpwith defensive codingwrites unit tests thatsimulate faults

2 (Level 0) n (Level 1) n (Level 2) log(n)

error handling Only codes thehappy case

Basic error handling aroundcode that can throwexceptionsgenerate errors

Ensures that errorexceptions leaveprogram in good state resourcesconnections and memory is allcleaned up properly

Codes to detect possibleexception before maintainconsistent exceptionhandling strategy in alllayers of code come upwith guidelines onexception handling forentire system

IDEMostly usesIDE for textediting

Knows their way around theinterface able to effectivelyuse the IDE using menus

Knows keyboard shortcuts for mostused operations

Has written custom macros

API

Needs to lookup thedocumentationfrequently

Has the most frequentlyused APIs in memory

Vast and In‐depth knowledge of theAPI

Has written libraries that siton top of the API to simplifyfrequently used tasks and tofill in gaps in the API

frameworks

Has not usedany frameworkoutside of thecore platform

Has heard about but notused the popularframeworks available forthe platform

Has used more than one framework ina professional capacity and is well‐versed with the idioms of theframeworks

Author of framework

2 (Level 0) n (Level 1) n (Level 2) log(n)

requirements

Takes thegivenrequirementsand codes tospec

Come up with questionsregarding missed cases inthe spec

Understand complete picture andcome up with entire areas that needto be speced

Able to suggest betteralternatives and flows togiven requirements basedon experience

scriptingNo knowledgeof scriptingtools

Batch filesshell scripts PerlPythonRubyVBScriptPowershellHas written and publishedreusable code

Able to design good and normalized

Can do basic databaseadministrationperformance optimizationindex optimization writeadvanced select queries

n 2

n 2

databaseThinks thatExcel is adatabase

Knows basic databaseconcepts normalizationACID transactions and canwrite simple selects

database schemas keeping in mindthe queries thatrsquoll have to be runproficient in use of views storedprocedures triggers and user definedtypes Knows difference betweenclustered and non‐clustered indexesProficient in use of ORM tools

able to replace cursor usagewith relational sqlunderstands how data isstored internallyunderstands how indexesare stored internallyunderstands how databasescan be mirrored replicatedetc Understands how thetwo phase commit works

Experience

2 (Level 0) n (Level 1) n (Level 2) log(n)

languages withprofessionalexperience

Imperative orObjectOriented

Imperative Object‐Orientedand declarative (SQL)added bonus if theyunderstand static vsdynamic typing weak vsstrong typing and staticinferred types

Functional added bonus if theyunderstand lazy evaluation curryingcontinuations

Concurrent (Erlang Oz) andLogic (Prolog)

platforms withprofessionalexperience

1 2‐3 4‐5 6+

years ofprofessionalexperience

1 2‐5 6‐9 10+

domainknowledge

No knowledgeof the domain

Has worked on at least oneproduct in the domain

Has worked on multiple products inthe same domain

Domain expert Hasdesigned and implementedseveral productssolutionsin the domain Well versedwith standard termsprotocols used in thedomain

Knowledge

2 (Level 0) n (Level 1) n (Level 2) log(n)

toolknowledge

Limited toprimary IDE(VSNetEclipse etc)

Knows about somealternatives to popular andstandard tools

Good knowledge of editorsdebuggers IDEs open sourcealternatives etc etc For eg someonewho knows most of the tools fromScott Hanselmanrsquos power tools listHas used ORM tools

Has actually written toolsand scripts added bonus iftheyrsquove been published

languagesexposed to

Imperative orObjectOriented

Imperative Object‐Orientedand declarative (SQL)added bonus if theyunderstand static vsdynamic typing weak vs

Functional added bonus if theyunderstand lazy evaluation curryingcontinuations

Concurrent (Erlang Oz) andLogic (Prolog)

n 2

n 2

Tweet 467 StumbleUpon 8 points Share 328 1558

11kLike

strong typing and staticinferred types

codebaseknowledge

Has neverlooked at thecodebase

Basic knowledge of thecode layout and how tobuild the system

Good working knowledge of codebase has implemented several bugfixes and maybe some small features

Has implemented multiplebig features in the codebaseand can easily visualize thechanges required for mostfeatures or bug fixes

knowledge ofupcomingtechnologies

Has not heardof theupcomingtechnologies

Has heard of upcomingtechnologies in the field

Has downloaded the alphapreviewCTPbeta and read somearticlesmanuals

Has played with thepreviews and has actuallybuilt something with it andas a bonus shared that witheveryone else

2 (Level 0) n (Level 1) n (Level 2) log(n)

platforminternals

Zeroknowledge ofplatforminternals

Has basic knowledge ofhow the platform worksinternally

Deep knowledge of platform internalsand can visualize how the platformtakes the program and converts it intoexecutable code

Has written tools toenhance or provideinformation on platforminternals For egdisassemblers decompilersdebuggers etc

books

Unleashedseries 21 daysseries 24 hourseriesdummiesserieshellip

Code Complete Donrsquot Makeme Think MasteringRegular Expressions

Design Patterns PeoplewareProgramming Pearls AlgorithmDesign Manual PragmaticProgrammer Mythical Man month

Structure and Interpretationof Computer ProgramsConcepts TechniquesModels of ComputerProgramming Art ofComputer ProgrammingDatabase systems by C JDate Thinking Forth LittleSchemer

blogs

Has heard ofthem butnever got thetime

Readstechprogrammingsoftwareengineering blogs andlistens to podcastsregularly

Maintains a link blog with somecollection of useful articles and toolsthat heshe has collected

Maintains a blog in whichpersonal insights andthoughts on programmingare shared

Thanks to John Haugeland (httpfullofbs) for a

reformatting of it that works much more nicely on the web

Share this

n 2

Share 230

7 More

43 Comments Add your comment

Umnov Denis December 21 2011 at 0457 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3541)

Thank you very useful

Anonymous January 24 2012 at 0310 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3550)

hh

Sdfw April 3 2012 at 1925 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3558)

Your mom is hot

Zahid Rasool May 28 2012 at 0215 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3560)

why

Anders Bornholm (HttpWwwOsirisguitarCom)November 6 2012 at 0810 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3569)

Excellent breakdown of skills

Sebastien November 27 2012 at 0705 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3576)

It could be perfect with 5 levels based on Dreyfus model of skill acquisition

Nomota November 29 2012 at 0550 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3577)

Here I want to add at two more skills ndash Documentation

ldquoDocumentationrdquo (2^n Donrsquot know which kind of documents should be prepared

n^2Knows structured document deliverables within a software project n Has hisher

own set of reference documents from multiple projects log(n) Can design proper

formats and guidelines for a new SW project)

ldquoOce Tools Versatilityrdquo (2^n Has very basic understanding of Oce tools n^2 suers

diculties without proper format or table of contents n knows how to make document

templates use short-cut keys sometimes log(n) frequent use of short-cut keys and

denes hisher own macros or template formats utilizes extra-Oce tools if necessary

in combination with Oce tools)

Sijin November 29 2012 at 1153 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3578)

Thank you for the feedback Irsquoll be updating the matrix in the next year and will consider

your feedback

Yem Goslashdfather(HttpWwwFacebookComYemGodfather) December 23

2012 at 1623 (httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-

3580)

nah I do agree with the guy still anyhow tell us why you think that itrsquos a piece of

garbage

Tron March 3 2013 at 1540 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3583)

Excellent breakdown of needed skills for coding to sdm_64 and his ilk you have

revealed your incompetence by criticizing what you do not understand

Vector December 9 2013 at 1623 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3638)

Great content bad web design Looks like a free wordpress theme

Professional Programmer December 17 2013 at 1204

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3642)

wherersquos the smugness Irsquom cleverer than you and can use big words area of the matrix

this is the kind of thing that keeps this dude the dateless wonder he undoubtedly is ndash I

can just imagine the interview where he grinds some poor junior into the ground just to

massage his own oversized ego good programmers understand a problem and make a

solution in code ndash everything else is bullshit ndash if yoursquore interviewing yoursquoll know this in the

rst 2 minutes if you have to use this matrix to do that yoursquore not cut out as a manager

of human beings ask your clients (you know the ones who pay you) if they give a shit if

you know Erlang AND Prolog ndash bet I know where to nd you at parties

Juan David Pastaacutes Rivera December 22 2013 at 0347

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3644)

I feel more important the ability of learn new things more than a xed skill set I am not

sure if competence is a word that encapsulates this ability I am referring to but I like

more speed than position not saying I underrate position

MacgtPC December 30 2013 at 2336 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3649)

As a woefully incompetent programmer I appreciate the explicitness in this chart I only

wish someone would explain design competency in concrete terms such as you have

used for programming

Ramstar January 2 2014 at 1312 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3651)

If this is a litmus for the tested it is one for the tester

Brian Deeks January 3 2014 at 1905 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3652)

While I disagree with some of these what I take issue with will be dierent for other

programmershellipas perhaps they hit too closely to home Nice list

You should have one more category GUIweb application usability

2^n Messy dialogs and layouts unusable interfaces message boxes everywhere

horric colors and icons skinned interfaces that donrsquot match anything else in the OS

n^2 Nicer icons tab order works naturally lets the OS handle skinning of the

application

n Figures out what colors look good together message boxes only show on critical

issues doesnrsquot always follow the specication for UI design to the letter in an attempt to

make userrsquos lives less like a living Hell

log(n) Stands behind users on a regular basis to silently watch them actually use the

application disappears for days or weeks at a time to pick away at the newly discovered

usability issues until user interaction is smooth as butter and the users stop cursing at

the application Gets frequent positive feedback on the usability aspects and hailed as a

hero throughout the organization for creating the worldrsquos rst usable piece of software

Willing to repeat the process an unlimited number of times with an unlimited amount of

patience

Sijin Joseph (HttpSijinjosephCom) January 4 2014 at 0710

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3655)

Brian ndash Thank you for the feedback Like the GUIWeb usability idea but not sure if

yoursquore kidding about log(n) level

Neil Terry January 5 2014 at 1256 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3657)

Irsquove been looking for something with Visual Designer or GUI on it too My Team are a bit

of a mixture of Visual Designers and Developers Look forward to any enhancements

you might make

Raj January 21 2014 at 0208 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3660)

Nice matrix

MediumMech February 24 2014 at 0058 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3664)

Yes it was a rather blunt wake-up call for me I always assume therersquos someone better

than me and Irsquom not really a professional right now anyways but it always sucks to learn

you know less than you thought you did Oh well at least I have some guidelines to

learn from

Carthax March 7 2014 at 0946 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3668)

Irsquove been teaching myself programming for a number of years and have always known I

was only scratching the surface Seeing this article made me realize exactly how much

more I have to learn I know

gthelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

lt this much to learn to be competent and I dont think Disqus will let me put enough

dots in to describe what it would take to be a master

Martin March 10 2014 at 0945 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3669)

1) I would have used the scale in reverse then it (sort of) becomes a measure of

productivity 2) Add a category for SW Life Cycle with rows such as system analysis

documentation project planning CMMI Ranges from No clue understands concepts

runs with scissors works with designshellipSW Maintenance can write them well able to

implement and improve process

Sijin Joseph (HttpSijinjosephCom) March 10 2014 at 1059

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3670)

Thank you for the feedback Martin Will incorporate into next version

Gyubok March 16 2014 at 1414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3673)

Its because hersquos missing the uiux section

WebDeva March 18 2014 at 1118 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3675)

Irsquom questioning my own readiness to apply for entry-level or junior Web development

jobs Based on your matrix Irsquom somewhere between level 0 and level 1 (higher in some

areas like communication because I have several degrees code readability because I

simply love writing beautifully organized and well-documented code et al) I have about

a year of post-bacc computer science I quit the program when I realized I was more

interested in Web app development than compilers and OSes I have experience with

PHP Java C++ MySQL I can create read update and delete data What would be

helpful for someone like me is the addition of some sort of correlation Maybe an

additional grid with representative job titles at each level

Ani A March 28 2014 at 0414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3678)

+1 for ldquoDocumentationrdquo (can add use of PandocMarkdownAsciidocDocbook in case of

log(n) )

Vishal April 2 2014 at 0951 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3681)

very helpful why not a wiki page so that this can be revised and updated with more

categories

A Concord Resident April 15 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3685)

Everything Crushed I am a ZERO (average score) This is one hell of a list to live up to

Irsquove been well I guess now wasting the past decade of my life I have an interview this

week and I now feel like Irsquom bringing squat to the table So much work to dohellip Is there a

future in MS Access Db Development Yeah right

Dirk Herrmann April 22 2014 at 0401 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3686)

Thanks for the interesting matrix However I am confused about the column headlines

In your introductional text you say being at level n implies knowing everything below n

Then the columns also use n but additionally give levels 03 Combined with the

expressions this leads to the following 2^n with n=0 gives 1 n^2 with n=1 gives 1 hellip But

this is probably not what is meant Therefore what is the n in the column headlines

about and what does for example 2^n indicate Thanks for the clarication

HaakonKL May 3 2014 at 0347 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3687)

So Irsquom just a student but I have a few questions

Why is the Little Schemer in the Level 3 grouping

Itrsquos not a hard book to read

Why is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

Why is PowerShell not a shellscript

Itrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

And speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

If yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

Sijin Joseph (HttpSijinjosephCom) May 6 2014 at 0822

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3688)

Hi HaakonKL ndash Thank you for your time and feedback Replies below

gtWhy is the Little Schemer in the Level 3 grouping

gtItrsquos not a hard book to read

Having read this book shows a dierent type of programmer one whorsquos interested in

going beyond the how and asking why Yoursquod be surprised how many programmers

yoursquoll run into in your professional life who havenrsquot heard of the book or the language

for that matter

gtWhy is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

There is a dierent between knowing normalization and applying it based on your

specic needs In all practical scenarios you have to make choices and the choices

depend on the type of system usage which is why knowing about normalization is

below being able to understand and apply it eectively

gtWhy is PowerShell not a shellscript

gtItrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

Fair point Powershell is a full-blown programming language that exposes the complete

Net API which is why I lumped it with other general purpose scripting languages like

Python and Ruby

gtAnd speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

gtIf yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

True But this was just an example of tool knowledge Could you suggest something

similar for OSX or Linux

HaakonKL May 9 2014 at 0912 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3690)

For OSXLinux

man and info is a must

But therersquos also stu like sort uniq grep sed awk git etc for whenever you have text

you want to do things with

And then therersquos xpath and xquery as command-line tools if you need to do things to

xml-les (or should that be in the database section) jQuery is not quite the same thing

for JSON p

You should also be really comfortable with your package manager If yoursquore on say

Ubuntu and donrsquot know how to add in PPAs to get the newest version of some specic

software you want then yoursquore missing out

As for PowerShell I think I agree with you at least a little bit You make it sound useful

for the same sort of glue-code that Python and Perl is used for in the Unix world and in

that case yoursquore right and Irsquom wrong

Sijin Joseph (HttpSijinjosephCom) May 9 2014 at 1043

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3691)

Thank you Irsquoll incorporate this feedback into my next revision

Izkata May 21 2014 at 2218 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3694)

Itrsquos a bit excessive (weeks yeesh) but is otherwise a fairly accurate description of

usability testing

We tend to have one person doing the testing then the whole team secretly watches

through webcam+screen sharing to see how they react and what they do

Miraculixx June 11 2014 at 1720 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3698)

Irsquom questioning the focus on Erlang and Prolog and dynamic programming for log(n)

These are very particular elds and are not on par with all the other log(n) areas

Michael Bostwick June 13 2014 at 1315 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3699)

hellipI wish there was a PDF download

Allister Quinn June 18 2014 at 0817 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3701)

So someone with a rst class degree in Computer Science going for a software

engineering job would be expected to be somewhere between Level 1 and Level 2

Rodrigo Haguiuda July 10 2014 at 1526 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3702)

Could you provide a printer friendly version of the matrix

2Triangle July 11 2014 at 0501 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3703)

So I just graduated High School and have been reading SICP and TAOCP on-lsquonrsquo-o for

half a year Irsquom still trying to implement Chapter 1 Reading through the next chapters is

fun but itrsquos not fullling because I havenrsquot fully understood the rst

Are these books just too hard On Amazon therersquos a great review for TAOCP ldquoI bought

this bookset because they look nice on my wall And chicks think Irsquom smartrdquo Irsquom guessing

not many people have read it

Sijin Joseph (HttpSijinjosephCom) July 11 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3704)

My recommendation would be to skim through the books and keep coming back to the

books over the years as you gain more experience Yoursquoll learn something new every

time

Focus on building stu algorithms are only one aspect of software engineering building

stu will expose you to more aspects that will be more valuable to you in the early

stages

James Hawk III July 29 2014 at 1713 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3708)

Well I guess thatrsquos one guyrsquos opinion

George September 9 2014 at 1030 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3736)

Ultimately many interview questions are garbage since they simply reward those

people who memorize answers In your job are you allowed to look at MSDN do google

searches etc to solve problems The answer is likely yes Why are interviews so

dierent Itrsquos like taking a test in college In college you crammed and memorized the

info for that specic test but had no real understanding of it to use in the real world

For instance on a recent interview for a Sr Level developer they asked what indexes

are and the dierence between clustered and non-clustered indexes in SQL I knew

what indexes are but couldnrsquot recall the dierence between non-clustered and clustered

indexes The reality is who cares If I need to know the dierences thatrsquos what google is

for The best software developers are the ones who have a built-in curiosity about

technical things know how to research things and use that in their daily development

Irsquom coming to the conclusion that most tech interviews are a waste of time for everyone

involved Instead put the person in front of a PC give them an hour to write some

simple programs which illustrate their skill level This will be a far more accurate

assessment of the personrsquos skill than technical questions would give you And it gives

the interviewer the opportunity to go more in depth and ask about design decisions

performance issues and see the persons thought process on how they gure out stu

they donrsquot know about

But given that we live in the real world the matrix is a helpful starting point to know

what areas software engineers may need to brush up on for interviews I will give my

own critique of it from my 20 years of CC++C experience

Most people will never have the Level 3 (or even Level 2) knowledge in some areas

because they donrsquot use that skill set on a daily basis or the framework they use

abstracts things for them

For instance how often do does the average developer in a modern language think of

advanced data structures like B-trees binomial amp bonacci heaps etc While the

developer should have heard of most of these data structures and should be able to

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 3: Programmer Competency Matrix _ Sijin Joseph

communication

Cannotexpressthoughtsideasto peers Poorspelling andgrammar

Peers can understand whatis being said Good spellingand grammar

Is able to effectively communicatewith peers

Able to understand andcommunicatethoughtsdesignideasspecsin a unambiguous mannerand adjusts communicationas per the context

codeorganizationwithin a file

no evidence oforganizationwithin a file

Methods are groupedlogically or by accessibility

Code is grouped into regions and wellcommented with references to othersource files

File has license headersummary well commentedconsistent white spaceusage The file should lookbeautiful

2 (Level 0) n (Level 1) n (Level 2) log(n)

codeorganizationacross files

No thoughtgiven toorganizingcode acrossfiles

Related files are groupedinto a folder

Each physical file has a uniquepurpose for eg one class definitionone feature implementation etc

Code organization at aphysical level closelymatches design and lookingat file names and folderdistribution providesinsights into design

source treeorganization

Everything inone folder

Basic separation of codeinto logical folders

No circular dependencies binarieslibs docs builds third‐party code allorganized into appropriate folders

Physical layout of sourcetree matches logicalhierarchy and organizationThe directory names andorganization provideinsights into the design ofthe system

n 2

codereadability

Mono‐syllablenames

Good names for filesvariables classes methodsetc

No long functions commentsexplaining unusual code bug fixescode assumptions

Code assumptions areverified using asserts codeflows naturally ndash no deepnesting of conditionals ormethods

defensivecoding

Doesnrsquotunderstand theconcept

Checks all arguments andasserts critical assumptionsin code

Makes sure to check return values andcheck for exceptions around codethat can fail

Has his own library to helpwith defensive codingwrites unit tests thatsimulate faults

2 (Level 0) n (Level 1) n (Level 2) log(n)

error handling Only codes thehappy case

Basic error handling aroundcode that can throwexceptionsgenerate errors

Ensures that errorexceptions leaveprogram in good state resourcesconnections and memory is allcleaned up properly

Codes to detect possibleexception before maintainconsistent exceptionhandling strategy in alllayers of code come upwith guidelines onexception handling forentire system

IDEMostly usesIDE for textediting

Knows their way around theinterface able to effectivelyuse the IDE using menus

Knows keyboard shortcuts for mostused operations

Has written custom macros

API

Needs to lookup thedocumentationfrequently

Has the most frequentlyused APIs in memory

Vast and In‐depth knowledge of theAPI

Has written libraries that siton top of the API to simplifyfrequently used tasks and tofill in gaps in the API

frameworks

Has not usedany frameworkoutside of thecore platform

Has heard about but notused the popularframeworks available forthe platform

Has used more than one framework ina professional capacity and is well‐versed with the idioms of theframeworks

Author of framework

2 (Level 0) n (Level 1) n (Level 2) log(n)

requirements

Takes thegivenrequirementsand codes tospec

Come up with questionsregarding missed cases inthe spec

Understand complete picture andcome up with entire areas that needto be speced

Able to suggest betteralternatives and flows togiven requirements basedon experience

scriptingNo knowledgeof scriptingtools

Batch filesshell scripts PerlPythonRubyVBScriptPowershellHas written and publishedreusable code

Able to design good and normalized

Can do basic databaseadministrationperformance optimizationindex optimization writeadvanced select queries

n 2

n 2

databaseThinks thatExcel is adatabase

Knows basic databaseconcepts normalizationACID transactions and canwrite simple selects

database schemas keeping in mindthe queries thatrsquoll have to be runproficient in use of views storedprocedures triggers and user definedtypes Knows difference betweenclustered and non‐clustered indexesProficient in use of ORM tools

able to replace cursor usagewith relational sqlunderstands how data isstored internallyunderstands how indexesare stored internallyunderstands how databasescan be mirrored replicatedetc Understands how thetwo phase commit works

Experience

2 (Level 0) n (Level 1) n (Level 2) log(n)

languages withprofessionalexperience

Imperative orObjectOriented

Imperative Object‐Orientedand declarative (SQL)added bonus if theyunderstand static vsdynamic typing weak vsstrong typing and staticinferred types

Functional added bonus if theyunderstand lazy evaluation curryingcontinuations

Concurrent (Erlang Oz) andLogic (Prolog)

platforms withprofessionalexperience

1 2‐3 4‐5 6+

years ofprofessionalexperience

1 2‐5 6‐9 10+

domainknowledge

No knowledgeof the domain

Has worked on at least oneproduct in the domain

Has worked on multiple products inthe same domain

Domain expert Hasdesigned and implementedseveral productssolutionsin the domain Well versedwith standard termsprotocols used in thedomain

Knowledge

2 (Level 0) n (Level 1) n (Level 2) log(n)

toolknowledge

Limited toprimary IDE(VSNetEclipse etc)

Knows about somealternatives to popular andstandard tools

Good knowledge of editorsdebuggers IDEs open sourcealternatives etc etc For eg someonewho knows most of the tools fromScott Hanselmanrsquos power tools listHas used ORM tools

Has actually written toolsand scripts added bonus iftheyrsquove been published

languagesexposed to

Imperative orObjectOriented

Imperative Object‐Orientedand declarative (SQL)added bonus if theyunderstand static vsdynamic typing weak vs

Functional added bonus if theyunderstand lazy evaluation curryingcontinuations

Concurrent (Erlang Oz) andLogic (Prolog)

n 2

n 2

Tweet 467 StumbleUpon 8 points Share 328 1558

11kLike

strong typing and staticinferred types

codebaseknowledge

Has neverlooked at thecodebase

Basic knowledge of thecode layout and how tobuild the system

Good working knowledge of codebase has implemented several bugfixes and maybe some small features

Has implemented multiplebig features in the codebaseand can easily visualize thechanges required for mostfeatures or bug fixes

knowledge ofupcomingtechnologies

Has not heardof theupcomingtechnologies

Has heard of upcomingtechnologies in the field

Has downloaded the alphapreviewCTPbeta and read somearticlesmanuals

Has played with thepreviews and has actuallybuilt something with it andas a bonus shared that witheveryone else

2 (Level 0) n (Level 1) n (Level 2) log(n)

platforminternals

Zeroknowledge ofplatforminternals

Has basic knowledge ofhow the platform worksinternally

Deep knowledge of platform internalsand can visualize how the platformtakes the program and converts it intoexecutable code

Has written tools toenhance or provideinformation on platforminternals For egdisassemblers decompilersdebuggers etc

books

Unleashedseries 21 daysseries 24 hourseriesdummiesserieshellip

Code Complete Donrsquot Makeme Think MasteringRegular Expressions

Design Patterns PeoplewareProgramming Pearls AlgorithmDesign Manual PragmaticProgrammer Mythical Man month

Structure and Interpretationof Computer ProgramsConcepts TechniquesModels of ComputerProgramming Art ofComputer ProgrammingDatabase systems by C JDate Thinking Forth LittleSchemer

blogs

Has heard ofthem butnever got thetime

Readstechprogrammingsoftwareengineering blogs andlistens to podcastsregularly

Maintains a link blog with somecollection of useful articles and toolsthat heshe has collected

Maintains a blog in whichpersonal insights andthoughts on programmingare shared

Thanks to John Haugeland (httpfullofbs) for a

reformatting of it that works much more nicely on the web

Share this

n 2

Share 230

7 More

43 Comments Add your comment

Umnov Denis December 21 2011 at 0457 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3541)

Thank you very useful

Anonymous January 24 2012 at 0310 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3550)

hh

Sdfw April 3 2012 at 1925 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3558)

Your mom is hot

Zahid Rasool May 28 2012 at 0215 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3560)

why

Anders Bornholm (HttpWwwOsirisguitarCom)November 6 2012 at 0810 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3569)

Excellent breakdown of skills

Sebastien November 27 2012 at 0705 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3576)

It could be perfect with 5 levels based on Dreyfus model of skill acquisition

Nomota November 29 2012 at 0550 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3577)

Here I want to add at two more skills ndash Documentation

ldquoDocumentationrdquo (2^n Donrsquot know which kind of documents should be prepared

n^2Knows structured document deliverables within a software project n Has hisher

own set of reference documents from multiple projects log(n) Can design proper

formats and guidelines for a new SW project)

ldquoOce Tools Versatilityrdquo (2^n Has very basic understanding of Oce tools n^2 suers

diculties without proper format or table of contents n knows how to make document

templates use short-cut keys sometimes log(n) frequent use of short-cut keys and

denes hisher own macros or template formats utilizes extra-Oce tools if necessary

in combination with Oce tools)

Sijin November 29 2012 at 1153 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3578)

Thank you for the feedback Irsquoll be updating the matrix in the next year and will consider

your feedback

Yem Goslashdfather(HttpWwwFacebookComYemGodfather) December 23

2012 at 1623 (httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-

3580)

nah I do agree with the guy still anyhow tell us why you think that itrsquos a piece of

garbage

Tron March 3 2013 at 1540 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3583)

Excellent breakdown of needed skills for coding to sdm_64 and his ilk you have

revealed your incompetence by criticizing what you do not understand

Vector December 9 2013 at 1623 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3638)

Great content bad web design Looks like a free wordpress theme

Professional Programmer December 17 2013 at 1204

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3642)

wherersquos the smugness Irsquom cleverer than you and can use big words area of the matrix

this is the kind of thing that keeps this dude the dateless wonder he undoubtedly is ndash I

can just imagine the interview where he grinds some poor junior into the ground just to

massage his own oversized ego good programmers understand a problem and make a

solution in code ndash everything else is bullshit ndash if yoursquore interviewing yoursquoll know this in the

rst 2 minutes if you have to use this matrix to do that yoursquore not cut out as a manager

of human beings ask your clients (you know the ones who pay you) if they give a shit if

you know Erlang AND Prolog ndash bet I know where to nd you at parties

Juan David Pastaacutes Rivera December 22 2013 at 0347

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3644)

I feel more important the ability of learn new things more than a xed skill set I am not

sure if competence is a word that encapsulates this ability I am referring to but I like

more speed than position not saying I underrate position

MacgtPC December 30 2013 at 2336 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3649)

As a woefully incompetent programmer I appreciate the explicitness in this chart I only

wish someone would explain design competency in concrete terms such as you have

used for programming

Ramstar January 2 2014 at 1312 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3651)

If this is a litmus for the tested it is one for the tester

Brian Deeks January 3 2014 at 1905 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3652)

While I disagree with some of these what I take issue with will be dierent for other

programmershellipas perhaps they hit too closely to home Nice list

You should have one more category GUIweb application usability

2^n Messy dialogs and layouts unusable interfaces message boxes everywhere

horric colors and icons skinned interfaces that donrsquot match anything else in the OS

n^2 Nicer icons tab order works naturally lets the OS handle skinning of the

application

n Figures out what colors look good together message boxes only show on critical

issues doesnrsquot always follow the specication for UI design to the letter in an attempt to

make userrsquos lives less like a living Hell

log(n) Stands behind users on a regular basis to silently watch them actually use the

application disappears for days or weeks at a time to pick away at the newly discovered

usability issues until user interaction is smooth as butter and the users stop cursing at

the application Gets frequent positive feedback on the usability aspects and hailed as a

hero throughout the organization for creating the worldrsquos rst usable piece of software

Willing to repeat the process an unlimited number of times with an unlimited amount of

patience

Sijin Joseph (HttpSijinjosephCom) January 4 2014 at 0710

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3655)

Brian ndash Thank you for the feedback Like the GUIWeb usability idea but not sure if

yoursquore kidding about log(n) level

Neil Terry January 5 2014 at 1256 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3657)

Irsquove been looking for something with Visual Designer or GUI on it too My Team are a bit

of a mixture of Visual Designers and Developers Look forward to any enhancements

you might make

Raj January 21 2014 at 0208 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3660)

Nice matrix

MediumMech February 24 2014 at 0058 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3664)

Yes it was a rather blunt wake-up call for me I always assume therersquos someone better

than me and Irsquom not really a professional right now anyways but it always sucks to learn

you know less than you thought you did Oh well at least I have some guidelines to

learn from

Carthax March 7 2014 at 0946 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3668)

Irsquove been teaching myself programming for a number of years and have always known I

was only scratching the surface Seeing this article made me realize exactly how much

more I have to learn I know

gthelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

lt this much to learn to be competent and I dont think Disqus will let me put enough

dots in to describe what it would take to be a master

Martin March 10 2014 at 0945 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3669)

1) I would have used the scale in reverse then it (sort of) becomes a measure of

productivity 2) Add a category for SW Life Cycle with rows such as system analysis

documentation project planning CMMI Ranges from No clue understands concepts

runs with scissors works with designshellipSW Maintenance can write them well able to

implement and improve process

Sijin Joseph (HttpSijinjosephCom) March 10 2014 at 1059

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3670)

Thank you for the feedback Martin Will incorporate into next version

Gyubok March 16 2014 at 1414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3673)

Its because hersquos missing the uiux section

WebDeva March 18 2014 at 1118 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3675)

Irsquom questioning my own readiness to apply for entry-level or junior Web development

jobs Based on your matrix Irsquom somewhere between level 0 and level 1 (higher in some

areas like communication because I have several degrees code readability because I

simply love writing beautifully organized and well-documented code et al) I have about

a year of post-bacc computer science I quit the program when I realized I was more

interested in Web app development than compilers and OSes I have experience with

PHP Java C++ MySQL I can create read update and delete data What would be

helpful for someone like me is the addition of some sort of correlation Maybe an

additional grid with representative job titles at each level

Ani A March 28 2014 at 0414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3678)

+1 for ldquoDocumentationrdquo (can add use of PandocMarkdownAsciidocDocbook in case of

log(n) )

Vishal April 2 2014 at 0951 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3681)

very helpful why not a wiki page so that this can be revised and updated with more

categories

A Concord Resident April 15 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3685)

Everything Crushed I am a ZERO (average score) This is one hell of a list to live up to

Irsquove been well I guess now wasting the past decade of my life I have an interview this

week and I now feel like Irsquom bringing squat to the table So much work to dohellip Is there a

future in MS Access Db Development Yeah right

Dirk Herrmann April 22 2014 at 0401 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3686)

Thanks for the interesting matrix However I am confused about the column headlines

In your introductional text you say being at level n implies knowing everything below n

Then the columns also use n but additionally give levels 03 Combined with the

expressions this leads to the following 2^n with n=0 gives 1 n^2 with n=1 gives 1 hellip But

this is probably not what is meant Therefore what is the n in the column headlines

about and what does for example 2^n indicate Thanks for the clarication

HaakonKL May 3 2014 at 0347 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3687)

So Irsquom just a student but I have a few questions

Why is the Little Schemer in the Level 3 grouping

Itrsquos not a hard book to read

Why is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

Why is PowerShell not a shellscript

Itrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

And speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

If yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

Sijin Joseph (HttpSijinjosephCom) May 6 2014 at 0822

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3688)

Hi HaakonKL ndash Thank you for your time and feedback Replies below

gtWhy is the Little Schemer in the Level 3 grouping

gtItrsquos not a hard book to read

Having read this book shows a dierent type of programmer one whorsquos interested in

going beyond the how and asking why Yoursquod be surprised how many programmers

yoursquoll run into in your professional life who havenrsquot heard of the book or the language

for that matter

gtWhy is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

There is a dierent between knowing normalization and applying it based on your

specic needs In all practical scenarios you have to make choices and the choices

depend on the type of system usage which is why knowing about normalization is

below being able to understand and apply it eectively

gtWhy is PowerShell not a shellscript

gtItrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

Fair point Powershell is a full-blown programming language that exposes the complete

Net API which is why I lumped it with other general purpose scripting languages like

Python and Ruby

gtAnd speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

gtIf yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

True But this was just an example of tool knowledge Could you suggest something

similar for OSX or Linux

HaakonKL May 9 2014 at 0912 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3690)

For OSXLinux

man and info is a must

But therersquos also stu like sort uniq grep sed awk git etc for whenever you have text

you want to do things with

And then therersquos xpath and xquery as command-line tools if you need to do things to

xml-les (or should that be in the database section) jQuery is not quite the same thing

for JSON p

You should also be really comfortable with your package manager If yoursquore on say

Ubuntu and donrsquot know how to add in PPAs to get the newest version of some specic

software you want then yoursquore missing out

As for PowerShell I think I agree with you at least a little bit You make it sound useful

for the same sort of glue-code that Python and Perl is used for in the Unix world and in

that case yoursquore right and Irsquom wrong

Sijin Joseph (HttpSijinjosephCom) May 9 2014 at 1043

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3691)

Thank you Irsquoll incorporate this feedback into my next revision

Izkata May 21 2014 at 2218 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3694)

Itrsquos a bit excessive (weeks yeesh) but is otherwise a fairly accurate description of

usability testing

We tend to have one person doing the testing then the whole team secretly watches

through webcam+screen sharing to see how they react and what they do

Miraculixx June 11 2014 at 1720 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3698)

Irsquom questioning the focus on Erlang and Prolog and dynamic programming for log(n)

These are very particular elds and are not on par with all the other log(n) areas

Michael Bostwick June 13 2014 at 1315 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3699)

hellipI wish there was a PDF download

Allister Quinn June 18 2014 at 0817 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3701)

So someone with a rst class degree in Computer Science going for a software

engineering job would be expected to be somewhere between Level 1 and Level 2

Rodrigo Haguiuda July 10 2014 at 1526 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3702)

Could you provide a printer friendly version of the matrix

2Triangle July 11 2014 at 0501 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3703)

So I just graduated High School and have been reading SICP and TAOCP on-lsquonrsquo-o for

half a year Irsquom still trying to implement Chapter 1 Reading through the next chapters is

fun but itrsquos not fullling because I havenrsquot fully understood the rst

Are these books just too hard On Amazon therersquos a great review for TAOCP ldquoI bought

this bookset because they look nice on my wall And chicks think Irsquom smartrdquo Irsquom guessing

not many people have read it

Sijin Joseph (HttpSijinjosephCom) July 11 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3704)

My recommendation would be to skim through the books and keep coming back to the

books over the years as you gain more experience Yoursquoll learn something new every

time

Focus on building stu algorithms are only one aspect of software engineering building

stu will expose you to more aspects that will be more valuable to you in the early

stages

James Hawk III July 29 2014 at 1713 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3708)

Well I guess thatrsquos one guyrsquos opinion

George September 9 2014 at 1030 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3736)

Ultimately many interview questions are garbage since they simply reward those

people who memorize answers In your job are you allowed to look at MSDN do google

searches etc to solve problems The answer is likely yes Why are interviews so

dierent Itrsquos like taking a test in college In college you crammed and memorized the

info for that specic test but had no real understanding of it to use in the real world

For instance on a recent interview for a Sr Level developer they asked what indexes

are and the dierence between clustered and non-clustered indexes in SQL I knew

what indexes are but couldnrsquot recall the dierence between non-clustered and clustered

indexes The reality is who cares If I need to know the dierences thatrsquos what google is

for The best software developers are the ones who have a built-in curiosity about

technical things know how to research things and use that in their daily development

Irsquom coming to the conclusion that most tech interviews are a waste of time for everyone

involved Instead put the person in front of a PC give them an hour to write some

simple programs which illustrate their skill level This will be a far more accurate

assessment of the personrsquos skill than technical questions would give you And it gives

the interviewer the opportunity to go more in depth and ask about design decisions

performance issues and see the persons thought process on how they gure out stu

they donrsquot know about

But given that we live in the real world the matrix is a helpful starting point to know

what areas software engineers may need to brush up on for interviews I will give my

own critique of it from my 20 years of CC++C experience

Most people will never have the Level 3 (or even Level 2) knowledge in some areas

because they donrsquot use that skill set on a daily basis or the framework they use

abstracts things for them

For instance how often do does the average developer in a modern language think of

advanced data structures like B-trees binomial amp bonacci heaps etc While the

developer should have heard of most of these data structures and should be able to

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 4: Programmer Competency Matrix _ Sijin Joseph

codereadability

Mono‐syllablenames

Good names for filesvariables classes methodsetc

No long functions commentsexplaining unusual code bug fixescode assumptions

Code assumptions areverified using asserts codeflows naturally ndash no deepnesting of conditionals ormethods

defensivecoding

Doesnrsquotunderstand theconcept

Checks all arguments andasserts critical assumptionsin code

Makes sure to check return values andcheck for exceptions around codethat can fail

Has his own library to helpwith defensive codingwrites unit tests thatsimulate faults

2 (Level 0) n (Level 1) n (Level 2) log(n)

error handling Only codes thehappy case

Basic error handling aroundcode that can throwexceptionsgenerate errors

Ensures that errorexceptions leaveprogram in good state resourcesconnections and memory is allcleaned up properly

Codes to detect possibleexception before maintainconsistent exceptionhandling strategy in alllayers of code come upwith guidelines onexception handling forentire system

IDEMostly usesIDE for textediting

Knows their way around theinterface able to effectivelyuse the IDE using menus

Knows keyboard shortcuts for mostused operations

Has written custom macros

API

Needs to lookup thedocumentationfrequently

Has the most frequentlyused APIs in memory

Vast and In‐depth knowledge of theAPI

Has written libraries that siton top of the API to simplifyfrequently used tasks and tofill in gaps in the API

frameworks

Has not usedany frameworkoutside of thecore platform

Has heard about but notused the popularframeworks available forthe platform

Has used more than one framework ina professional capacity and is well‐versed with the idioms of theframeworks

Author of framework

2 (Level 0) n (Level 1) n (Level 2) log(n)

requirements

Takes thegivenrequirementsand codes tospec

Come up with questionsregarding missed cases inthe spec

Understand complete picture andcome up with entire areas that needto be speced

Able to suggest betteralternatives and flows togiven requirements basedon experience

scriptingNo knowledgeof scriptingtools

Batch filesshell scripts PerlPythonRubyVBScriptPowershellHas written and publishedreusable code

Able to design good and normalized

Can do basic databaseadministrationperformance optimizationindex optimization writeadvanced select queries

n 2

n 2

databaseThinks thatExcel is adatabase

Knows basic databaseconcepts normalizationACID transactions and canwrite simple selects

database schemas keeping in mindthe queries thatrsquoll have to be runproficient in use of views storedprocedures triggers and user definedtypes Knows difference betweenclustered and non‐clustered indexesProficient in use of ORM tools

able to replace cursor usagewith relational sqlunderstands how data isstored internallyunderstands how indexesare stored internallyunderstands how databasescan be mirrored replicatedetc Understands how thetwo phase commit works

Experience

2 (Level 0) n (Level 1) n (Level 2) log(n)

languages withprofessionalexperience

Imperative orObjectOriented

Imperative Object‐Orientedand declarative (SQL)added bonus if theyunderstand static vsdynamic typing weak vsstrong typing and staticinferred types

Functional added bonus if theyunderstand lazy evaluation curryingcontinuations

Concurrent (Erlang Oz) andLogic (Prolog)

platforms withprofessionalexperience

1 2‐3 4‐5 6+

years ofprofessionalexperience

1 2‐5 6‐9 10+

domainknowledge

No knowledgeof the domain

Has worked on at least oneproduct in the domain

Has worked on multiple products inthe same domain

Domain expert Hasdesigned and implementedseveral productssolutionsin the domain Well versedwith standard termsprotocols used in thedomain

Knowledge

2 (Level 0) n (Level 1) n (Level 2) log(n)

toolknowledge

Limited toprimary IDE(VSNetEclipse etc)

Knows about somealternatives to popular andstandard tools

Good knowledge of editorsdebuggers IDEs open sourcealternatives etc etc For eg someonewho knows most of the tools fromScott Hanselmanrsquos power tools listHas used ORM tools

Has actually written toolsand scripts added bonus iftheyrsquove been published

languagesexposed to

Imperative orObjectOriented

Imperative Object‐Orientedand declarative (SQL)added bonus if theyunderstand static vsdynamic typing weak vs

Functional added bonus if theyunderstand lazy evaluation curryingcontinuations

Concurrent (Erlang Oz) andLogic (Prolog)

n 2

n 2

Tweet 467 StumbleUpon 8 points Share 328 1558

11kLike

strong typing and staticinferred types

codebaseknowledge

Has neverlooked at thecodebase

Basic knowledge of thecode layout and how tobuild the system

Good working knowledge of codebase has implemented several bugfixes and maybe some small features

Has implemented multiplebig features in the codebaseand can easily visualize thechanges required for mostfeatures or bug fixes

knowledge ofupcomingtechnologies

Has not heardof theupcomingtechnologies

Has heard of upcomingtechnologies in the field

Has downloaded the alphapreviewCTPbeta and read somearticlesmanuals

Has played with thepreviews and has actuallybuilt something with it andas a bonus shared that witheveryone else

2 (Level 0) n (Level 1) n (Level 2) log(n)

platforminternals

Zeroknowledge ofplatforminternals

Has basic knowledge ofhow the platform worksinternally

Deep knowledge of platform internalsand can visualize how the platformtakes the program and converts it intoexecutable code

Has written tools toenhance or provideinformation on platforminternals For egdisassemblers decompilersdebuggers etc

books

Unleashedseries 21 daysseries 24 hourseriesdummiesserieshellip

Code Complete Donrsquot Makeme Think MasteringRegular Expressions

Design Patterns PeoplewareProgramming Pearls AlgorithmDesign Manual PragmaticProgrammer Mythical Man month

Structure and Interpretationof Computer ProgramsConcepts TechniquesModels of ComputerProgramming Art ofComputer ProgrammingDatabase systems by C JDate Thinking Forth LittleSchemer

blogs

Has heard ofthem butnever got thetime

Readstechprogrammingsoftwareengineering blogs andlistens to podcastsregularly

Maintains a link blog with somecollection of useful articles and toolsthat heshe has collected

Maintains a blog in whichpersonal insights andthoughts on programmingare shared

Thanks to John Haugeland (httpfullofbs) for a

reformatting of it that works much more nicely on the web

Share this

n 2

Share 230

7 More

43 Comments Add your comment

Umnov Denis December 21 2011 at 0457 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3541)

Thank you very useful

Anonymous January 24 2012 at 0310 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3550)

hh

Sdfw April 3 2012 at 1925 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3558)

Your mom is hot

Zahid Rasool May 28 2012 at 0215 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3560)

why

Anders Bornholm (HttpWwwOsirisguitarCom)November 6 2012 at 0810 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3569)

Excellent breakdown of skills

Sebastien November 27 2012 at 0705 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3576)

It could be perfect with 5 levels based on Dreyfus model of skill acquisition

Nomota November 29 2012 at 0550 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3577)

Here I want to add at two more skills ndash Documentation

ldquoDocumentationrdquo (2^n Donrsquot know which kind of documents should be prepared

n^2Knows structured document deliverables within a software project n Has hisher

own set of reference documents from multiple projects log(n) Can design proper

formats and guidelines for a new SW project)

ldquoOce Tools Versatilityrdquo (2^n Has very basic understanding of Oce tools n^2 suers

diculties without proper format or table of contents n knows how to make document

templates use short-cut keys sometimes log(n) frequent use of short-cut keys and

denes hisher own macros or template formats utilizes extra-Oce tools if necessary

in combination with Oce tools)

Sijin November 29 2012 at 1153 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3578)

Thank you for the feedback Irsquoll be updating the matrix in the next year and will consider

your feedback

Yem Goslashdfather(HttpWwwFacebookComYemGodfather) December 23

2012 at 1623 (httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-

3580)

nah I do agree with the guy still anyhow tell us why you think that itrsquos a piece of

garbage

Tron March 3 2013 at 1540 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3583)

Excellent breakdown of needed skills for coding to sdm_64 and his ilk you have

revealed your incompetence by criticizing what you do not understand

Vector December 9 2013 at 1623 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3638)

Great content bad web design Looks like a free wordpress theme

Professional Programmer December 17 2013 at 1204

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3642)

wherersquos the smugness Irsquom cleverer than you and can use big words area of the matrix

this is the kind of thing that keeps this dude the dateless wonder he undoubtedly is ndash I

can just imagine the interview where he grinds some poor junior into the ground just to

massage his own oversized ego good programmers understand a problem and make a

solution in code ndash everything else is bullshit ndash if yoursquore interviewing yoursquoll know this in the

rst 2 minutes if you have to use this matrix to do that yoursquore not cut out as a manager

of human beings ask your clients (you know the ones who pay you) if they give a shit if

you know Erlang AND Prolog ndash bet I know where to nd you at parties

Juan David Pastaacutes Rivera December 22 2013 at 0347

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3644)

I feel more important the ability of learn new things more than a xed skill set I am not

sure if competence is a word that encapsulates this ability I am referring to but I like

more speed than position not saying I underrate position

MacgtPC December 30 2013 at 2336 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3649)

As a woefully incompetent programmer I appreciate the explicitness in this chart I only

wish someone would explain design competency in concrete terms such as you have

used for programming

Ramstar January 2 2014 at 1312 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3651)

If this is a litmus for the tested it is one for the tester

Brian Deeks January 3 2014 at 1905 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3652)

While I disagree with some of these what I take issue with will be dierent for other

programmershellipas perhaps they hit too closely to home Nice list

You should have one more category GUIweb application usability

2^n Messy dialogs and layouts unusable interfaces message boxes everywhere

horric colors and icons skinned interfaces that donrsquot match anything else in the OS

n^2 Nicer icons tab order works naturally lets the OS handle skinning of the

application

n Figures out what colors look good together message boxes only show on critical

issues doesnrsquot always follow the specication for UI design to the letter in an attempt to

make userrsquos lives less like a living Hell

log(n) Stands behind users on a regular basis to silently watch them actually use the

application disappears for days or weeks at a time to pick away at the newly discovered

usability issues until user interaction is smooth as butter and the users stop cursing at

the application Gets frequent positive feedback on the usability aspects and hailed as a

hero throughout the organization for creating the worldrsquos rst usable piece of software

Willing to repeat the process an unlimited number of times with an unlimited amount of

patience

Sijin Joseph (HttpSijinjosephCom) January 4 2014 at 0710

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3655)

Brian ndash Thank you for the feedback Like the GUIWeb usability idea but not sure if

yoursquore kidding about log(n) level

Neil Terry January 5 2014 at 1256 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3657)

Irsquove been looking for something with Visual Designer or GUI on it too My Team are a bit

of a mixture of Visual Designers and Developers Look forward to any enhancements

you might make

Raj January 21 2014 at 0208 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3660)

Nice matrix

MediumMech February 24 2014 at 0058 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3664)

Yes it was a rather blunt wake-up call for me I always assume therersquos someone better

than me and Irsquom not really a professional right now anyways but it always sucks to learn

you know less than you thought you did Oh well at least I have some guidelines to

learn from

Carthax March 7 2014 at 0946 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3668)

Irsquove been teaching myself programming for a number of years and have always known I

was only scratching the surface Seeing this article made me realize exactly how much

more I have to learn I know

gthelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

lt this much to learn to be competent and I dont think Disqus will let me put enough

dots in to describe what it would take to be a master

Martin March 10 2014 at 0945 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3669)

1) I would have used the scale in reverse then it (sort of) becomes a measure of

productivity 2) Add a category for SW Life Cycle with rows such as system analysis

documentation project planning CMMI Ranges from No clue understands concepts

runs with scissors works with designshellipSW Maintenance can write them well able to

implement and improve process

Sijin Joseph (HttpSijinjosephCom) March 10 2014 at 1059

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3670)

Thank you for the feedback Martin Will incorporate into next version

Gyubok March 16 2014 at 1414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3673)

Its because hersquos missing the uiux section

WebDeva March 18 2014 at 1118 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3675)

Irsquom questioning my own readiness to apply for entry-level or junior Web development

jobs Based on your matrix Irsquom somewhere between level 0 and level 1 (higher in some

areas like communication because I have several degrees code readability because I

simply love writing beautifully organized and well-documented code et al) I have about

a year of post-bacc computer science I quit the program when I realized I was more

interested in Web app development than compilers and OSes I have experience with

PHP Java C++ MySQL I can create read update and delete data What would be

helpful for someone like me is the addition of some sort of correlation Maybe an

additional grid with representative job titles at each level

Ani A March 28 2014 at 0414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3678)

+1 for ldquoDocumentationrdquo (can add use of PandocMarkdownAsciidocDocbook in case of

log(n) )

Vishal April 2 2014 at 0951 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3681)

very helpful why not a wiki page so that this can be revised and updated with more

categories

A Concord Resident April 15 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3685)

Everything Crushed I am a ZERO (average score) This is one hell of a list to live up to

Irsquove been well I guess now wasting the past decade of my life I have an interview this

week and I now feel like Irsquom bringing squat to the table So much work to dohellip Is there a

future in MS Access Db Development Yeah right

Dirk Herrmann April 22 2014 at 0401 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3686)

Thanks for the interesting matrix However I am confused about the column headlines

In your introductional text you say being at level n implies knowing everything below n

Then the columns also use n but additionally give levels 03 Combined with the

expressions this leads to the following 2^n with n=0 gives 1 n^2 with n=1 gives 1 hellip But

this is probably not what is meant Therefore what is the n in the column headlines

about and what does for example 2^n indicate Thanks for the clarication

HaakonKL May 3 2014 at 0347 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3687)

So Irsquom just a student but I have a few questions

Why is the Little Schemer in the Level 3 grouping

Itrsquos not a hard book to read

Why is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

Why is PowerShell not a shellscript

Itrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

And speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

If yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

Sijin Joseph (HttpSijinjosephCom) May 6 2014 at 0822

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3688)

Hi HaakonKL ndash Thank you for your time and feedback Replies below

gtWhy is the Little Schemer in the Level 3 grouping

gtItrsquos not a hard book to read

Having read this book shows a dierent type of programmer one whorsquos interested in

going beyond the how and asking why Yoursquod be surprised how many programmers

yoursquoll run into in your professional life who havenrsquot heard of the book or the language

for that matter

gtWhy is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

There is a dierent between knowing normalization and applying it based on your

specic needs In all practical scenarios you have to make choices and the choices

depend on the type of system usage which is why knowing about normalization is

below being able to understand and apply it eectively

gtWhy is PowerShell not a shellscript

gtItrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

Fair point Powershell is a full-blown programming language that exposes the complete

Net API which is why I lumped it with other general purpose scripting languages like

Python and Ruby

gtAnd speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

gtIf yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

True But this was just an example of tool knowledge Could you suggest something

similar for OSX or Linux

HaakonKL May 9 2014 at 0912 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3690)

For OSXLinux

man and info is a must

But therersquos also stu like sort uniq grep sed awk git etc for whenever you have text

you want to do things with

And then therersquos xpath and xquery as command-line tools if you need to do things to

xml-les (or should that be in the database section) jQuery is not quite the same thing

for JSON p

You should also be really comfortable with your package manager If yoursquore on say

Ubuntu and donrsquot know how to add in PPAs to get the newest version of some specic

software you want then yoursquore missing out

As for PowerShell I think I agree with you at least a little bit You make it sound useful

for the same sort of glue-code that Python and Perl is used for in the Unix world and in

that case yoursquore right and Irsquom wrong

Sijin Joseph (HttpSijinjosephCom) May 9 2014 at 1043

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3691)

Thank you Irsquoll incorporate this feedback into my next revision

Izkata May 21 2014 at 2218 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3694)

Itrsquos a bit excessive (weeks yeesh) but is otherwise a fairly accurate description of

usability testing

We tend to have one person doing the testing then the whole team secretly watches

through webcam+screen sharing to see how they react and what they do

Miraculixx June 11 2014 at 1720 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3698)

Irsquom questioning the focus on Erlang and Prolog and dynamic programming for log(n)

These are very particular elds and are not on par with all the other log(n) areas

Michael Bostwick June 13 2014 at 1315 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3699)

hellipI wish there was a PDF download

Allister Quinn June 18 2014 at 0817 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3701)

So someone with a rst class degree in Computer Science going for a software

engineering job would be expected to be somewhere between Level 1 and Level 2

Rodrigo Haguiuda July 10 2014 at 1526 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3702)

Could you provide a printer friendly version of the matrix

2Triangle July 11 2014 at 0501 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3703)

So I just graduated High School and have been reading SICP and TAOCP on-lsquonrsquo-o for

half a year Irsquom still trying to implement Chapter 1 Reading through the next chapters is

fun but itrsquos not fullling because I havenrsquot fully understood the rst

Are these books just too hard On Amazon therersquos a great review for TAOCP ldquoI bought

this bookset because they look nice on my wall And chicks think Irsquom smartrdquo Irsquom guessing

not many people have read it

Sijin Joseph (HttpSijinjosephCom) July 11 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3704)

My recommendation would be to skim through the books and keep coming back to the

books over the years as you gain more experience Yoursquoll learn something new every

time

Focus on building stu algorithms are only one aspect of software engineering building

stu will expose you to more aspects that will be more valuable to you in the early

stages

James Hawk III July 29 2014 at 1713 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3708)

Well I guess thatrsquos one guyrsquos opinion

George September 9 2014 at 1030 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3736)

Ultimately many interview questions are garbage since they simply reward those

people who memorize answers In your job are you allowed to look at MSDN do google

searches etc to solve problems The answer is likely yes Why are interviews so

dierent Itrsquos like taking a test in college In college you crammed and memorized the

info for that specic test but had no real understanding of it to use in the real world

For instance on a recent interview for a Sr Level developer they asked what indexes

are and the dierence between clustered and non-clustered indexes in SQL I knew

what indexes are but couldnrsquot recall the dierence between non-clustered and clustered

indexes The reality is who cares If I need to know the dierences thatrsquos what google is

for The best software developers are the ones who have a built-in curiosity about

technical things know how to research things and use that in their daily development

Irsquom coming to the conclusion that most tech interviews are a waste of time for everyone

involved Instead put the person in front of a PC give them an hour to write some

simple programs which illustrate their skill level This will be a far more accurate

assessment of the personrsquos skill than technical questions would give you And it gives

the interviewer the opportunity to go more in depth and ask about design decisions

performance issues and see the persons thought process on how they gure out stu

they donrsquot know about

But given that we live in the real world the matrix is a helpful starting point to know

what areas software engineers may need to brush up on for interviews I will give my

own critique of it from my 20 years of CC++C experience

Most people will never have the Level 3 (or even Level 2) knowledge in some areas

because they donrsquot use that skill set on a daily basis or the framework they use

abstracts things for them

For instance how often do does the average developer in a modern language think of

advanced data structures like B-trees binomial amp bonacci heaps etc While the

developer should have heard of most of these data structures and should be able to

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 5: Programmer Competency Matrix _ Sijin Joseph

databaseThinks thatExcel is adatabase

Knows basic databaseconcepts normalizationACID transactions and canwrite simple selects

database schemas keeping in mindthe queries thatrsquoll have to be runproficient in use of views storedprocedures triggers and user definedtypes Knows difference betweenclustered and non‐clustered indexesProficient in use of ORM tools

able to replace cursor usagewith relational sqlunderstands how data isstored internallyunderstands how indexesare stored internallyunderstands how databasescan be mirrored replicatedetc Understands how thetwo phase commit works

Experience

2 (Level 0) n (Level 1) n (Level 2) log(n)

languages withprofessionalexperience

Imperative orObjectOriented

Imperative Object‐Orientedand declarative (SQL)added bonus if theyunderstand static vsdynamic typing weak vsstrong typing and staticinferred types

Functional added bonus if theyunderstand lazy evaluation curryingcontinuations

Concurrent (Erlang Oz) andLogic (Prolog)

platforms withprofessionalexperience

1 2‐3 4‐5 6+

years ofprofessionalexperience

1 2‐5 6‐9 10+

domainknowledge

No knowledgeof the domain

Has worked on at least oneproduct in the domain

Has worked on multiple products inthe same domain

Domain expert Hasdesigned and implementedseveral productssolutionsin the domain Well versedwith standard termsprotocols used in thedomain

Knowledge

2 (Level 0) n (Level 1) n (Level 2) log(n)

toolknowledge

Limited toprimary IDE(VSNetEclipse etc)

Knows about somealternatives to popular andstandard tools

Good knowledge of editorsdebuggers IDEs open sourcealternatives etc etc For eg someonewho knows most of the tools fromScott Hanselmanrsquos power tools listHas used ORM tools

Has actually written toolsand scripts added bonus iftheyrsquove been published

languagesexposed to

Imperative orObjectOriented

Imperative Object‐Orientedand declarative (SQL)added bonus if theyunderstand static vsdynamic typing weak vs

Functional added bonus if theyunderstand lazy evaluation curryingcontinuations

Concurrent (Erlang Oz) andLogic (Prolog)

n 2

n 2

Tweet 467 StumbleUpon 8 points Share 328 1558

11kLike

strong typing and staticinferred types

codebaseknowledge

Has neverlooked at thecodebase

Basic knowledge of thecode layout and how tobuild the system

Good working knowledge of codebase has implemented several bugfixes and maybe some small features

Has implemented multiplebig features in the codebaseand can easily visualize thechanges required for mostfeatures or bug fixes

knowledge ofupcomingtechnologies

Has not heardof theupcomingtechnologies

Has heard of upcomingtechnologies in the field

Has downloaded the alphapreviewCTPbeta and read somearticlesmanuals

Has played with thepreviews and has actuallybuilt something with it andas a bonus shared that witheveryone else

2 (Level 0) n (Level 1) n (Level 2) log(n)

platforminternals

Zeroknowledge ofplatforminternals

Has basic knowledge ofhow the platform worksinternally

Deep knowledge of platform internalsand can visualize how the platformtakes the program and converts it intoexecutable code

Has written tools toenhance or provideinformation on platforminternals For egdisassemblers decompilersdebuggers etc

books

Unleashedseries 21 daysseries 24 hourseriesdummiesserieshellip

Code Complete Donrsquot Makeme Think MasteringRegular Expressions

Design Patterns PeoplewareProgramming Pearls AlgorithmDesign Manual PragmaticProgrammer Mythical Man month

Structure and Interpretationof Computer ProgramsConcepts TechniquesModels of ComputerProgramming Art ofComputer ProgrammingDatabase systems by C JDate Thinking Forth LittleSchemer

blogs

Has heard ofthem butnever got thetime

Readstechprogrammingsoftwareengineering blogs andlistens to podcastsregularly

Maintains a link blog with somecollection of useful articles and toolsthat heshe has collected

Maintains a blog in whichpersonal insights andthoughts on programmingare shared

Thanks to John Haugeland (httpfullofbs) for a

reformatting of it that works much more nicely on the web

Share this

n 2

Share 230

7 More

43 Comments Add your comment

Umnov Denis December 21 2011 at 0457 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3541)

Thank you very useful

Anonymous January 24 2012 at 0310 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3550)

hh

Sdfw April 3 2012 at 1925 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3558)

Your mom is hot

Zahid Rasool May 28 2012 at 0215 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3560)

why

Anders Bornholm (HttpWwwOsirisguitarCom)November 6 2012 at 0810 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3569)

Excellent breakdown of skills

Sebastien November 27 2012 at 0705 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3576)

It could be perfect with 5 levels based on Dreyfus model of skill acquisition

Nomota November 29 2012 at 0550 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3577)

Here I want to add at two more skills ndash Documentation

ldquoDocumentationrdquo (2^n Donrsquot know which kind of documents should be prepared

n^2Knows structured document deliverables within a software project n Has hisher

own set of reference documents from multiple projects log(n) Can design proper

formats and guidelines for a new SW project)

ldquoOce Tools Versatilityrdquo (2^n Has very basic understanding of Oce tools n^2 suers

diculties without proper format or table of contents n knows how to make document

templates use short-cut keys sometimes log(n) frequent use of short-cut keys and

denes hisher own macros or template formats utilizes extra-Oce tools if necessary

in combination with Oce tools)

Sijin November 29 2012 at 1153 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3578)

Thank you for the feedback Irsquoll be updating the matrix in the next year and will consider

your feedback

Yem Goslashdfather(HttpWwwFacebookComYemGodfather) December 23

2012 at 1623 (httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-

3580)

nah I do agree with the guy still anyhow tell us why you think that itrsquos a piece of

garbage

Tron March 3 2013 at 1540 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3583)

Excellent breakdown of needed skills for coding to sdm_64 and his ilk you have

revealed your incompetence by criticizing what you do not understand

Vector December 9 2013 at 1623 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3638)

Great content bad web design Looks like a free wordpress theme

Professional Programmer December 17 2013 at 1204

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3642)

wherersquos the smugness Irsquom cleverer than you and can use big words area of the matrix

this is the kind of thing that keeps this dude the dateless wonder he undoubtedly is ndash I

can just imagine the interview where he grinds some poor junior into the ground just to

massage his own oversized ego good programmers understand a problem and make a

solution in code ndash everything else is bullshit ndash if yoursquore interviewing yoursquoll know this in the

rst 2 minutes if you have to use this matrix to do that yoursquore not cut out as a manager

of human beings ask your clients (you know the ones who pay you) if they give a shit if

you know Erlang AND Prolog ndash bet I know where to nd you at parties

Juan David Pastaacutes Rivera December 22 2013 at 0347

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3644)

I feel more important the ability of learn new things more than a xed skill set I am not

sure if competence is a word that encapsulates this ability I am referring to but I like

more speed than position not saying I underrate position

MacgtPC December 30 2013 at 2336 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3649)

As a woefully incompetent programmer I appreciate the explicitness in this chart I only

wish someone would explain design competency in concrete terms such as you have

used for programming

Ramstar January 2 2014 at 1312 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3651)

If this is a litmus for the tested it is one for the tester

Brian Deeks January 3 2014 at 1905 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3652)

While I disagree with some of these what I take issue with will be dierent for other

programmershellipas perhaps they hit too closely to home Nice list

You should have one more category GUIweb application usability

2^n Messy dialogs and layouts unusable interfaces message boxes everywhere

horric colors and icons skinned interfaces that donrsquot match anything else in the OS

n^2 Nicer icons tab order works naturally lets the OS handle skinning of the

application

n Figures out what colors look good together message boxes only show on critical

issues doesnrsquot always follow the specication for UI design to the letter in an attempt to

make userrsquos lives less like a living Hell

log(n) Stands behind users on a regular basis to silently watch them actually use the

application disappears for days or weeks at a time to pick away at the newly discovered

usability issues until user interaction is smooth as butter and the users stop cursing at

the application Gets frequent positive feedback on the usability aspects and hailed as a

hero throughout the organization for creating the worldrsquos rst usable piece of software

Willing to repeat the process an unlimited number of times with an unlimited amount of

patience

Sijin Joseph (HttpSijinjosephCom) January 4 2014 at 0710

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3655)

Brian ndash Thank you for the feedback Like the GUIWeb usability idea but not sure if

yoursquore kidding about log(n) level

Neil Terry January 5 2014 at 1256 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3657)

Irsquove been looking for something with Visual Designer or GUI on it too My Team are a bit

of a mixture of Visual Designers and Developers Look forward to any enhancements

you might make

Raj January 21 2014 at 0208 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3660)

Nice matrix

MediumMech February 24 2014 at 0058 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3664)

Yes it was a rather blunt wake-up call for me I always assume therersquos someone better

than me and Irsquom not really a professional right now anyways but it always sucks to learn

you know less than you thought you did Oh well at least I have some guidelines to

learn from

Carthax March 7 2014 at 0946 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3668)

Irsquove been teaching myself programming for a number of years and have always known I

was only scratching the surface Seeing this article made me realize exactly how much

more I have to learn I know

gthelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

lt this much to learn to be competent and I dont think Disqus will let me put enough

dots in to describe what it would take to be a master

Martin March 10 2014 at 0945 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3669)

1) I would have used the scale in reverse then it (sort of) becomes a measure of

productivity 2) Add a category for SW Life Cycle with rows such as system analysis

documentation project planning CMMI Ranges from No clue understands concepts

runs with scissors works with designshellipSW Maintenance can write them well able to

implement and improve process

Sijin Joseph (HttpSijinjosephCom) March 10 2014 at 1059

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3670)

Thank you for the feedback Martin Will incorporate into next version

Gyubok March 16 2014 at 1414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3673)

Its because hersquos missing the uiux section

WebDeva March 18 2014 at 1118 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3675)

Irsquom questioning my own readiness to apply for entry-level or junior Web development

jobs Based on your matrix Irsquom somewhere between level 0 and level 1 (higher in some

areas like communication because I have several degrees code readability because I

simply love writing beautifully organized and well-documented code et al) I have about

a year of post-bacc computer science I quit the program when I realized I was more

interested in Web app development than compilers and OSes I have experience with

PHP Java C++ MySQL I can create read update and delete data What would be

helpful for someone like me is the addition of some sort of correlation Maybe an

additional grid with representative job titles at each level

Ani A March 28 2014 at 0414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3678)

+1 for ldquoDocumentationrdquo (can add use of PandocMarkdownAsciidocDocbook in case of

log(n) )

Vishal April 2 2014 at 0951 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3681)

very helpful why not a wiki page so that this can be revised and updated with more

categories

A Concord Resident April 15 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3685)

Everything Crushed I am a ZERO (average score) This is one hell of a list to live up to

Irsquove been well I guess now wasting the past decade of my life I have an interview this

week and I now feel like Irsquom bringing squat to the table So much work to dohellip Is there a

future in MS Access Db Development Yeah right

Dirk Herrmann April 22 2014 at 0401 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3686)

Thanks for the interesting matrix However I am confused about the column headlines

In your introductional text you say being at level n implies knowing everything below n

Then the columns also use n but additionally give levels 03 Combined with the

expressions this leads to the following 2^n with n=0 gives 1 n^2 with n=1 gives 1 hellip But

this is probably not what is meant Therefore what is the n in the column headlines

about and what does for example 2^n indicate Thanks for the clarication

HaakonKL May 3 2014 at 0347 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3687)

So Irsquom just a student but I have a few questions

Why is the Little Schemer in the Level 3 grouping

Itrsquos not a hard book to read

Why is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

Why is PowerShell not a shellscript

Itrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

And speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

If yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

Sijin Joseph (HttpSijinjosephCom) May 6 2014 at 0822

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3688)

Hi HaakonKL ndash Thank you for your time and feedback Replies below

gtWhy is the Little Schemer in the Level 3 grouping

gtItrsquos not a hard book to read

Having read this book shows a dierent type of programmer one whorsquos interested in

going beyond the how and asking why Yoursquod be surprised how many programmers

yoursquoll run into in your professional life who havenrsquot heard of the book or the language

for that matter

gtWhy is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

There is a dierent between knowing normalization and applying it based on your

specic needs In all practical scenarios you have to make choices and the choices

depend on the type of system usage which is why knowing about normalization is

below being able to understand and apply it eectively

gtWhy is PowerShell not a shellscript

gtItrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

Fair point Powershell is a full-blown programming language that exposes the complete

Net API which is why I lumped it with other general purpose scripting languages like

Python and Ruby

gtAnd speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

gtIf yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

True But this was just an example of tool knowledge Could you suggest something

similar for OSX or Linux

HaakonKL May 9 2014 at 0912 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3690)

For OSXLinux

man and info is a must

But therersquos also stu like sort uniq grep sed awk git etc for whenever you have text

you want to do things with

And then therersquos xpath and xquery as command-line tools if you need to do things to

xml-les (or should that be in the database section) jQuery is not quite the same thing

for JSON p

You should also be really comfortable with your package manager If yoursquore on say

Ubuntu and donrsquot know how to add in PPAs to get the newest version of some specic

software you want then yoursquore missing out

As for PowerShell I think I agree with you at least a little bit You make it sound useful

for the same sort of glue-code that Python and Perl is used for in the Unix world and in

that case yoursquore right and Irsquom wrong

Sijin Joseph (HttpSijinjosephCom) May 9 2014 at 1043

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3691)

Thank you Irsquoll incorporate this feedback into my next revision

Izkata May 21 2014 at 2218 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3694)

Itrsquos a bit excessive (weeks yeesh) but is otherwise a fairly accurate description of

usability testing

We tend to have one person doing the testing then the whole team secretly watches

through webcam+screen sharing to see how they react and what they do

Miraculixx June 11 2014 at 1720 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3698)

Irsquom questioning the focus on Erlang and Prolog and dynamic programming for log(n)

These are very particular elds and are not on par with all the other log(n) areas

Michael Bostwick June 13 2014 at 1315 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3699)

hellipI wish there was a PDF download

Allister Quinn June 18 2014 at 0817 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3701)

So someone with a rst class degree in Computer Science going for a software

engineering job would be expected to be somewhere between Level 1 and Level 2

Rodrigo Haguiuda July 10 2014 at 1526 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3702)

Could you provide a printer friendly version of the matrix

2Triangle July 11 2014 at 0501 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3703)

So I just graduated High School and have been reading SICP and TAOCP on-lsquonrsquo-o for

half a year Irsquom still trying to implement Chapter 1 Reading through the next chapters is

fun but itrsquos not fullling because I havenrsquot fully understood the rst

Are these books just too hard On Amazon therersquos a great review for TAOCP ldquoI bought

this bookset because they look nice on my wall And chicks think Irsquom smartrdquo Irsquom guessing

not many people have read it

Sijin Joseph (HttpSijinjosephCom) July 11 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3704)

My recommendation would be to skim through the books and keep coming back to the

books over the years as you gain more experience Yoursquoll learn something new every

time

Focus on building stu algorithms are only one aspect of software engineering building

stu will expose you to more aspects that will be more valuable to you in the early

stages

James Hawk III July 29 2014 at 1713 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3708)

Well I guess thatrsquos one guyrsquos opinion

George September 9 2014 at 1030 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3736)

Ultimately many interview questions are garbage since they simply reward those

people who memorize answers In your job are you allowed to look at MSDN do google

searches etc to solve problems The answer is likely yes Why are interviews so

dierent Itrsquos like taking a test in college In college you crammed and memorized the

info for that specic test but had no real understanding of it to use in the real world

For instance on a recent interview for a Sr Level developer they asked what indexes

are and the dierence between clustered and non-clustered indexes in SQL I knew

what indexes are but couldnrsquot recall the dierence between non-clustered and clustered

indexes The reality is who cares If I need to know the dierences thatrsquos what google is

for The best software developers are the ones who have a built-in curiosity about

technical things know how to research things and use that in their daily development

Irsquom coming to the conclusion that most tech interviews are a waste of time for everyone

involved Instead put the person in front of a PC give them an hour to write some

simple programs which illustrate their skill level This will be a far more accurate

assessment of the personrsquos skill than technical questions would give you And it gives

the interviewer the opportunity to go more in depth and ask about design decisions

performance issues and see the persons thought process on how they gure out stu

they donrsquot know about

But given that we live in the real world the matrix is a helpful starting point to know

what areas software engineers may need to brush up on for interviews I will give my

own critique of it from my 20 years of CC++C experience

Most people will never have the Level 3 (or even Level 2) knowledge in some areas

because they donrsquot use that skill set on a daily basis or the framework they use

abstracts things for them

For instance how often do does the average developer in a modern language think of

advanced data structures like B-trees binomial amp bonacci heaps etc While the

developer should have heard of most of these data structures and should be able to

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 6: Programmer Competency Matrix _ Sijin Joseph

Tweet 467 StumbleUpon 8 points Share 328 1558

11kLike

strong typing and staticinferred types

codebaseknowledge

Has neverlooked at thecodebase

Basic knowledge of thecode layout and how tobuild the system

Good working knowledge of codebase has implemented several bugfixes and maybe some small features

Has implemented multiplebig features in the codebaseand can easily visualize thechanges required for mostfeatures or bug fixes

knowledge ofupcomingtechnologies

Has not heardof theupcomingtechnologies

Has heard of upcomingtechnologies in the field

Has downloaded the alphapreviewCTPbeta and read somearticlesmanuals

Has played with thepreviews and has actuallybuilt something with it andas a bonus shared that witheveryone else

2 (Level 0) n (Level 1) n (Level 2) log(n)

platforminternals

Zeroknowledge ofplatforminternals

Has basic knowledge ofhow the platform worksinternally

Deep knowledge of platform internalsand can visualize how the platformtakes the program and converts it intoexecutable code

Has written tools toenhance or provideinformation on platforminternals For egdisassemblers decompilersdebuggers etc

books

Unleashedseries 21 daysseries 24 hourseriesdummiesserieshellip

Code Complete Donrsquot Makeme Think MasteringRegular Expressions

Design Patterns PeoplewareProgramming Pearls AlgorithmDesign Manual PragmaticProgrammer Mythical Man month

Structure and Interpretationof Computer ProgramsConcepts TechniquesModels of ComputerProgramming Art ofComputer ProgrammingDatabase systems by C JDate Thinking Forth LittleSchemer

blogs

Has heard ofthem butnever got thetime

Readstechprogrammingsoftwareengineering blogs andlistens to podcastsregularly

Maintains a link blog with somecollection of useful articles and toolsthat heshe has collected

Maintains a blog in whichpersonal insights andthoughts on programmingare shared

Thanks to John Haugeland (httpfullofbs) for a

reformatting of it that works much more nicely on the web

Share this

n 2

Share 230

7 More

43 Comments Add your comment

Umnov Denis December 21 2011 at 0457 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3541)

Thank you very useful

Anonymous January 24 2012 at 0310 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3550)

hh

Sdfw April 3 2012 at 1925 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3558)

Your mom is hot

Zahid Rasool May 28 2012 at 0215 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3560)

why

Anders Bornholm (HttpWwwOsirisguitarCom)November 6 2012 at 0810 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3569)

Excellent breakdown of skills

Sebastien November 27 2012 at 0705 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3576)

It could be perfect with 5 levels based on Dreyfus model of skill acquisition

Nomota November 29 2012 at 0550 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3577)

Here I want to add at two more skills ndash Documentation

ldquoDocumentationrdquo (2^n Donrsquot know which kind of documents should be prepared

n^2Knows structured document deliverables within a software project n Has hisher

own set of reference documents from multiple projects log(n) Can design proper

formats and guidelines for a new SW project)

ldquoOce Tools Versatilityrdquo (2^n Has very basic understanding of Oce tools n^2 suers

diculties without proper format or table of contents n knows how to make document

templates use short-cut keys sometimes log(n) frequent use of short-cut keys and

denes hisher own macros or template formats utilizes extra-Oce tools if necessary

in combination with Oce tools)

Sijin November 29 2012 at 1153 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3578)

Thank you for the feedback Irsquoll be updating the matrix in the next year and will consider

your feedback

Yem Goslashdfather(HttpWwwFacebookComYemGodfather) December 23

2012 at 1623 (httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-

3580)

nah I do agree with the guy still anyhow tell us why you think that itrsquos a piece of

garbage

Tron March 3 2013 at 1540 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3583)

Excellent breakdown of needed skills for coding to sdm_64 and his ilk you have

revealed your incompetence by criticizing what you do not understand

Vector December 9 2013 at 1623 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3638)

Great content bad web design Looks like a free wordpress theme

Professional Programmer December 17 2013 at 1204

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3642)

wherersquos the smugness Irsquom cleverer than you and can use big words area of the matrix

this is the kind of thing that keeps this dude the dateless wonder he undoubtedly is ndash I

can just imagine the interview where he grinds some poor junior into the ground just to

massage his own oversized ego good programmers understand a problem and make a

solution in code ndash everything else is bullshit ndash if yoursquore interviewing yoursquoll know this in the

rst 2 minutes if you have to use this matrix to do that yoursquore not cut out as a manager

of human beings ask your clients (you know the ones who pay you) if they give a shit if

you know Erlang AND Prolog ndash bet I know where to nd you at parties

Juan David Pastaacutes Rivera December 22 2013 at 0347

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3644)

I feel more important the ability of learn new things more than a xed skill set I am not

sure if competence is a word that encapsulates this ability I am referring to but I like

more speed than position not saying I underrate position

MacgtPC December 30 2013 at 2336 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3649)

As a woefully incompetent programmer I appreciate the explicitness in this chart I only

wish someone would explain design competency in concrete terms such as you have

used for programming

Ramstar January 2 2014 at 1312 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3651)

If this is a litmus for the tested it is one for the tester

Brian Deeks January 3 2014 at 1905 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3652)

While I disagree with some of these what I take issue with will be dierent for other

programmershellipas perhaps they hit too closely to home Nice list

You should have one more category GUIweb application usability

2^n Messy dialogs and layouts unusable interfaces message boxes everywhere

horric colors and icons skinned interfaces that donrsquot match anything else in the OS

n^2 Nicer icons tab order works naturally lets the OS handle skinning of the

application

n Figures out what colors look good together message boxes only show on critical

issues doesnrsquot always follow the specication for UI design to the letter in an attempt to

make userrsquos lives less like a living Hell

log(n) Stands behind users on a regular basis to silently watch them actually use the

application disappears for days or weeks at a time to pick away at the newly discovered

usability issues until user interaction is smooth as butter and the users stop cursing at

the application Gets frequent positive feedback on the usability aspects and hailed as a

hero throughout the organization for creating the worldrsquos rst usable piece of software

Willing to repeat the process an unlimited number of times with an unlimited amount of

patience

Sijin Joseph (HttpSijinjosephCom) January 4 2014 at 0710

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3655)

Brian ndash Thank you for the feedback Like the GUIWeb usability idea but not sure if

yoursquore kidding about log(n) level

Neil Terry January 5 2014 at 1256 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3657)

Irsquove been looking for something with Visual Designer or GUI on it too My Team are a bit

of a mixture of Visual Designers and Developers Look forward to any enhancements

you might make

Raj January 21 2014 at 0208 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3660)

Nice matrix

MediumMech February 24 2014 at 0058 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3664)

Yes it was a rather blunt wake-up call for me I always assume therersquos someone better

than me and Irsquom not really a professional right now anyways but it always sucks to learn

you know less than you thought you did Oh well at least I have some guidelines to

learn from

Carthax March 7 2014 at 0946 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3668)

Irsquove been teaching myself programming for a number of years and have always known I

was only scratching the surface Seeing this article made me realize exactly how much

more I have to learn I know

gthelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

lt this much to learn to be competent and I dont think Disqus will let me put enough

dots in to describe what it would take to be a master

Martin March 10 2014 at 0945 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3669)

1) I would have used the scale in reverse then it (sort of) becomes a measure of

productivity 2) Add a category for SW Life Cycle with rows such as system analysis

documentation project planning CMMI Ranges from No clue understands concepts

runs with scissors works with designshellipSW Maintenance can write them well able to

implement and improve process

Sijin Joseph (HttpSijinjosephCom) March 10 2014 at 1059

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3670)

Thank you for the feedback Martin Will incorporate into next version

Gyubok March 16 2014 at 1414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3673)

Its because hersquos missing the uiux section

WebDeva March 18 2014 at 1118 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3675)

Irsquom questioning my own readiness to apply for entry-level or junior Web development

jobs Based on your matrix Irsquom somewhere between level 0 and level 1 (higher in some

areas like communication because I have several degrees code readability because I

simply love writing beautifully organized and well-documented code et al) I have about

a year of post-bacc computer science I quit the program when I realized I was more

interested in Web app development than compilers and OSes I have experience with

PHP Java C++ MySQL I can create read update and delete data What would be

helpful for someone like me is the addition of some sort of correlation Maybe an

additional grid with representative job titles at each level

Ani A March 28 2014 at 0414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3678)

+1 for ldquoDocumentationrdquo (can add use of PandocMarkdownAsciidocDocbook in case of

log(n) )

Vishal April 2 2014 at 0951 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3681)

very helpful why not a wiki page so that this can be revised and updated with more

categories

A Concord Resident April 15 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3685)

Everything Crushed I am a ZERO (average score) This is one hell of a list to live up to

Irsquove been well I guess now wasting the past decade of my life I have an interview this

week and I now feel like Irsquom bringing squat to the table So much work to dohellip Is there a

future in MS Access Db Development Yeah right

Dirk Herrmann April 22 2014 at 0401 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3686)

Thanks for the interesting matrix However I am confused about the column headlines

In your introductional text you say being at level n implies knowing everything below n

Then the columns also use n but additionally give levels 03 Combined with the

expressions this leads to the following 2^n with n=0 gives 1 n^2 with n=1 gives 1 hellip But

this is probably not what is meant Therefore what is the n in the column headlines

about and what does for example 2^n indicate Thanks for the clarication

HaakonKL May 3 2014 at 0347 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3687)

So Irsquom just a student but I have a few questions

Why is the Little Schemer in the Level 3 grouping

Itrsquos not a hard book to read

Why is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

Why is PowerShell not a shellscript

Itrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

And speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

If yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

Sijin Joseph (HttpSijinjosephCom) May 6 2014 at 0822

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3688)

Hi HaakonKL ndash Thank you for your time and feedback Replies below

gtWhy is the Little Schemer in the Level 3 grouping

gtItrsquos not a hard book to read

Having read this book shows a dierent type of programmer one whorsquos interested in

going beyond the how and asking why Yoursquod be surprised how many programmers

yoursquoll run into in your professional life who havenrsquot heard of the book or the language

for that matter

gtWhy is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

There is a dierent between knowing normalization and applying it based on your

specic needs In all practical scenarios you have to make choices and the choices

depend on the type of system usage which is why knowing about normalization is

below being able to understand and apply it eectively

gtWhy is PowerShell not a shellscript

gtItrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

Fair point Powershell is a full-blown programming language that exposes the complete

Net API which is why I lumped it with other general purpose scripting languages like

Python and Ruby

gtAnd speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

gtIf yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

True But this was just an example of tool knowledge Could you suggest something

similar for OSX or Linux

HaakonKL May 9 2014 at 0912 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3690)

For OSXLinux

man and info is a must

But therersquos also stu like sort uniq grep sed awk git etc for whenever you have text

you want to do things with

And then therersquos xpath and xquery as command-line tools if you need to do things to

xml-les (or should that be in the database section) jQuery is not quite the same thing

for JSON p

You should also be really comfortable with your package manager If yoursquore on say

Ubuntu and donrsquot know how to add in PPAs to get the newest version of some specic

software you want then yoursquore missing out

As for PowerShell I think I agree with you at least a little bit You make it sound useful

for the same sort of glue-code that Python and Perl is used for in the Unix world and in

that case yoursquore right and Irsquom wrong

Sijin Joseph (HttpSijinjosephCom) May 9 2014 at 1043

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3691)

Thank you Irsquoll incorporate this feedback into my next revision

Izkata May 21 2014 at 2218 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3694)

Itrsquos a bit excessive (weeks yeesh) but is otherwise a fairly accurate description of

usability testing

We tend to have one person doing the testing then the whole team secretly watches

through webcam+screen sharing to see how they react and what they do

Miraculixx June 11 2014 at 1720 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3698)

Irsquom questioning the focus on Erlang and Prolog and dynamic programming for log(n)

These are very particular elds and are not on par with all the other log(n) areas

Michael Bostwick June 13 2014 at 1315 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3699)

hellipI wish there was a PDF download

Allister Quinn June 18 2014 at 0817 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3701)

So someone with a rst class degree in Computer Science going for a software

engineering job would be expected to be somewhere between Level 1 and Level 2

Rodrigo Haguiuda July 10 2014 at 1526 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3702)

Could you provide a printer friendly version of the matrix

2Triangle July 11 2014 at 0501 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3703)

So I just graduated High School and have been reading SICP and TAOCP on-lsquonrsquo-o for

half a year Irsquom still trying to implement Chapter 1 Reading through the next chapters is

fun but itrsquos not fullling because I havenrsquot fully understood the rst

Are these books just too hard On Amazon therersquos a great review for TAOCP ldquoI bought

this bookset because they look nice on my wall And chicks think Irsquom smartrdquo Irsquom guessing

not many people have read it

Sijin Joseph (HttpSijinjosephCom) July 11 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3704)

My recommendation would be to skim through the books and keep coming back to the

books over the years as you gain more experience Yoursquoll learn something new every

time

Focus on building stu algorithms are only one aspect of software engineering building

stu will expose you to more aspects that will be more valuable to you in the early

stages

James Hawk III July 29 2014 at 1713 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3708)

Well I guess thatrsquos one guyrsquos opinion

George September 9 2014 at 1030 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3736)

Ultimately many interview questions are garbage since they simply reward those

people who memorize answers In your job are you allowed to look at MSDN do google

searches etc to solve problems The answer is likely yes Why are interviews so

dierent Itrsquos like taking a test in college In college you crammed and memorized the

info for that specic test but had no real understanding of it to use in the real world

For instance on a recent interview for a Sr Level developer they asked what indexes

are and the dierence between clustered and non-clustered indexes in SQL I knew

what indexes are but couldnrsquot recall the dierence between non-clustered and clustered

indexes The reality is who cares If I need to know the dierences thatrsquos what google is

for The best software developers are the ones who have a built-in curiosity about

technical things know how to research things and use that in their daily development

Irsquom coming to the conclusion that most tech interviews are a waste of time for everyone

involved Instead put the person in front of a PC give them an hour to write some

simple programs which illustrate their skill level This will be a far more accurate

assessment of the personrsquos skill than technical questions would give you And it gives

the interviewer the opportunity to go more in depth and ask about design decisions

performance issues and see the persons thought process on how they gure out stu

they donrsquot know about

But given that we live in the real world the matrix is a helpful starting point to know

what areas software engineers may need to brush up on for interviews I will give my

own critique of it from my 20 years of CC++C experience

Most people will never have the Level 3 (or even Level 2) knowledge in some areas

because they donrsquot use that skill set on a daily basis or the framework they use

abstracts things for them

For instance how often do does the average developer in a modern language think of

advanced data structures like B-trees binomial amp bonacci heaps etc While the

developer should have heard of most of these data structures and should be able to

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 7: Programmer Competency Matrix _ Sijin Joseph

43 Comments Add your comment

Umnov Denis December 21 2011 at 0457 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3541)

Thank you very useful

Anonymous January 24 2012 at 0310 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3550)

hh

Sdfw April 3 2012 at 1925 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3558)

Your mom is hot

Zahid Rasool May 28 2012 at 0215 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3560)

why

Anders Bornholm (HttpWwwOsirisguitarCom)November 6 2012 at 0810 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3569)

Excellent breakdown of skills

Sebastien November 27 2012 at 0705 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3576)

It could be perfect with 5 levels based on Dreyfus model of skill acquisition

Nomota November 29 2012 at 0550 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3577)

Here I want to add at two more skills ndash Documentation

ldquoDocumentationrdquo (2^n Donrsquot know which kind of documents should be prepared

n^2Knows structured document deliverables within a software project n Has hisher

own set of reference documents from multiple projects log(n) Can design proper

formats and guidelines for a new SW project)

ldquoOce Tools Versatilityrdquo (2^n Has very basic understanding of Oce tools n^2 suers

diculties without proper format or table of contents n knows how to make document

templates use short-cut keys sometimes log(n) frequent use of short-cut keys and

denes hisher own macros or template formats utilizes extra-Oce tools if necessary

in combination with Oce tools)

Sijin November 29 2012 at 1153 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3578)

Thank you for the feedback Irsquoll be updating the matrix in the next year and will consider

your feedback

Yem Goslashdfather(HttpWwwFacebookComYemGodfather) December 23

2012 at 1623 (httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-

3580)

nah I do agree with the guy still anyhow tell us why you think that itrsquos a piece of

garbage

Tron March 3 2013 at 1540 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3583)

Excellent breakdown of needed skills for coding to sdm_64 and his ilk you have

revealed your incompetence by criticizing what you do not understand

Vector December 9 2013 at 1623 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3638)

Great content bad web design Looks like a free wordpress theme

Professional Programmer December 17 2013 at 1204

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3642)

wherersquos the smugness Irsquom cleverer than you and can use big words area of the matrix

this is the kind of thing that keeps this dude the dateless wonder he undoubtedly is ndash I

can just imagine the interview where he grinds some poor junior into the ground just to

massage his own oversized ego good programmers understand a problem and make a

solution in code ndash everything else is bullshit ndash if yoursquore interviewing yoursquoll know this in the

rst 2 minutes if you have to use this matrix to do that yoursquore not cut out as a manager

of human beings ask your clients (you know the ones who pay you) if they give a shit if

you know Erlang AND Prolog ndash bet I know where to nd you at parties

Juan David Pastaacutes Rivera December 22 2013 at 0347

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3644)

I feel more important the ability of learn new things more than a xed skill set I am not

sure if competence is a word that encapsulates this ability I am referring to but I like

more speed than position not saying I underrate position

MacgtPC December 30 2013 at 2336 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3649)

As a woefully incompetent programmer I appreciate the explicitness in this chart I only

wish someone would explain design competency in concrete terms such as you have

used for programming

Ramstar January 2 2014 at 1312 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3651)

If this is a litmus for the tested it is one for the tester

Brian Deeks January 3 2014 at 1905 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3652)

While I disagree with some of these what I take issue with will be dierent for other

programmershellipas perhaps they hit too closely to home Nice list

You should have one more category GUIweb application usability

2^n Messy dialogs and layouts unusable interfaces message boxes everywhere

horric colors and icons skinned interfaces that donrsquot match anything else in the OS

n^2 Nicer icons tab order works naturally lets the OS handle skinning of the

application

n Figures out what colors look good together message boxes only show on critical

issues doesnrsquot always follow the specication for UI design to the letter in an attempt to

make userrsquos lives less like a living Hell

log(n) Stands behind users on a regular basis to silently watch them actually use the

application disappears for days or weeks at a time to pick away at the newly discovered

usability issues until user interaction is smooth as butter and the users stop cursing at

the application Gets frequent positive feedback on the usability aspects and hailed as a

hero throughout the organization for creating the worldrsquos rst usable piece of software

Willing to repeat the process an unlimited number of times with an unlimited amount of

patience

Sijin Joseph (HttpSijinjosephCom) January 4 2014 at 0710

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3655)

Brian ndash Thank you for the feedback Like the GUIWeb usability idea but not sure if

yoursquore kidding about log(n) level

Neil Terry January 5 2014 at 1256 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3657)

Irsquove been looking for something with Visual Designer or GUI on it too My Team are a bit

of a mixture of Visual Designers and Developers Look forward to any enhancements

you might make

Raj January 21 2014 at 0208 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3660)

Nice matrix

MediumMech February 24 2014 at 0058 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3664)

Yes it was a rather blunt wake-up call for me I always assume therersquos someone better

than me and Irsquom not really a professional right now anyways but it always sucks to learn

you know less than you thought you did Oh well at least I have some guidelines to

learn from

Carthax March 7 2014 at 0946 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3668)

Irsquove been teaching myself programming for a number of years and have always known I

was only scratching the surface Seeing this article made me realize exactly how much

more I have to learn I know

gthelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

lt this much to learn to be competent and I dont think Disqus will let me put enough

dots in to describe what it would take to be a master

Martin March 10 2014 at 0945 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3669)

1) I would have used the scale in reverse then it (sort of) becomes a measure of

productivity 2) Add a category for SW Life Cycle with rows such as system analysis

documentation project planning CMMI Ranges from No clue understands concepts

runs with scissors works with designshellipSW Maintenance can write them well able to

implement and improve process

Sijin Joseph (HttpSijinjosephCom) March 10 2014 at 1059

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3670)

Thank you for the feedback Martin Will incorporate into next version

Gyubok March 16 2014 at 1414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3673)

Its because hersquos missing the uiux section

WebDeva March 18 2014 at 1118 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3675)

Irsquom questioning my own readiness to apply for entry-level or junior Web development

jobs Based on your matrix Irsquom somewhere between level 0 and level 1 (higher in some

areas like communication because I have several degrees code readability because I

simply love writing beautifully organized and well-documented code et al) I have about

a year of post-bacc computer science I quit the program when I realized I was more

interested in Web app development than compilers and OSes I have experience with

PHP Java C++ MySQL I can create read update and delete data What would be

helpful for someone like me is the addition of some sort of correlation Maybe an

additional grid with representative job titles at each level

Ani A March 28 2014 at 0414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3678)

+1 for ldquoDocumentationrdquo (can add use of PandocMarkdownAsciidocDocbook in case of

log(n) )

Vishal April 2 2014 at 0951 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3681)

very helpful why not a wiki page so that this can be revised and updated with more

categories

A Concord Resident April 15 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3685)

Everything Crushed I am a ZERO (average score) This is one hell of a list to live up to

Irsquove been well I guess now wasting the past decade of my life I have an interview this

week and I now feel like Irsquom bringing squat to the table So much work to dohellip Is there a

future in MS Access Db Development Yeah right

Dirk Herrmann April 22 2014 at 0401 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3686)

Thanks for the interesting matrix However I am confused about the column headlines

In your introductional text you say being at level n implies knowing everything below n

Then the columns also use n but additionally give levels 03 Combined with the

expressions this leads to the following 2^n with n=0 gives 1 n^2 with n=1 gives 1 hellip But

this is probably not what is meant Therefore what is the n in the column headlines

about and what does for example 2^n indicate Thanks for the clarication

HaakonKL May 3 2014 at 0347 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3687)

So Irsquom just a student but I have a few questions

Why is the Little Schemer in the Level 3 grouping

Itrsquos not a hard book to read

Why is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

Why is PowerShell not a shellscript

Itrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

And speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

If yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

Sijin Joseph (HttpSijinjosephCom) May 6 2014 at 0822

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3688)

Hi HaakonKL ndash Thank you for your time and feedback Replies below

gtWhy is the Little Schemer in the Level 3 grouping

gtItrsquos not a hard book to read

Having read this book shows a dierent type of programmer one whorsquos interested in

going beyond the how and asking why Yoursquod be surprised how many programmers

yoursquoll run into in your professional life who havenrsquot heard of the book or the language

for that matter

gtWhy is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

There is a dierent between knowing normalization and applying it based on your

specic needs In all practical scenarios you have to make choices and the choices

depend on the type of system usage which is why knowing about normalization is

below being able to understand and apply it eectively

gtWhy is PowerShell not a shellscript

gtItrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

Fair point Powershell is a full-blown programming language that exposes the complete

Net API which is why I lumped it with other general purpose scripting languages like

Python and Ruby

gtAnd speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

gtIf yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

True But this was just an example of tool knowledge Could you suggest something

similar for OSX or Linux

HaakonKL May 9 2014 at 0912 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3690)

For OSXLinux

man and info is a must

But therersquos also stu like sort uniq grep sed awk git etc for whenever you have text

you want to do things with

And then therersquos xpath and xquery as command-line tools if you need to do things to

xml-les (or should that be in the database section) jQuery is not quite the same thing

for JSON p

You should also be really comfortable with your package manager If yoursquore on say

Ubuntu and donrsquot know how to add in PPAs to get the newest version of some specic

software you want then yoursquore missing out

As for PowerShell I think I agree with you at least a little bit You make it sound useful

for the same sort of glue-code that Python and Perl is used for in the Unix world and in

that case yoursquore right and Irsquom wrong

Sijin Joseph (HttpSijinjosephCom) May 9 2014 at 1043

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3691)

Thank you Irsquoll incorporate this feedback into my next revision

Izkata May 21 2014 at 2218 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3694)

Itrsquos a bit excessive (weeks yeesh) but is otherwise a fairly accurate description of

usability testing

We tend to have one person doing the testing then the whole team secretly watches

through webcam+screen sharing to see how they react and what they do

Miraculixx June 11 2014 at 1720 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3698)

Irsquom questioning the focus on Erlang and Prolog and dynamic programming for log(n)

These are very particular elds and are not on par with all the other log(n) areas

Michael Bostwick June 13 2014 at 1315 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3699)

hellipI wish there was a PDF download

Allister Quinn June 18 2014 at 0817 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3701)

So someone with a rst class degree in Computer Science going for a software

engineering job would be expected to be somewhere between Level 1 and Level 2

Rodrigo Haguiuda July 10 2014 at 1526 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3702)

Could you provide a printer friendly version of the matrix

2Triangle July 11 2014 at 0501 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3703)

So I just graduated High School and have been reading SICP and TAOCP on-lsquonrsquo-o for

half a year Irsquom still trying to implement Chapter 1 Reading through the next chapters is

fun but itrsquos not fullling because I havenrsquot fully understood the rst

Are these books just too hard On Amazon therersquos a great review for TAOCP ldquoI bought

this bookset because they look nice on my wall And chicks think Irsquom smartrdquo Irsquom guessing

not many people have read it

Sijin Joseph (HttpSijinjosephCom) July 11 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3704)

My recommendation would be to skim through the books and keep coming back to the

books over the years as you gain more experience Yoursquoll learn something new every

time

Focus on building stu algorithms are only one aspect of software engineering building

stu will expose you to more aspects that will be more valuable to you in the early

stages

James Hawk III July 29 2014 at 1713 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3708)

Well I guess thatrsquos one guyrsquos opinion

George September 9 2014 at 1030 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3736)

Ultimately many interview questions are garbage since they simply reward those

people who memorize answers In your job are you allowed to look at MSDN do google

searches etc to solve problems The answer is likely yes Why are interviews so

dierent Itrsquos like taking a test in college In college you crammed and memorized the

info for that specic test but had no real understanding of it to use in the real world

For instance on a recent interview for a Sr Level developer they asked what indexes

are and the dierence between clustered and non-clustered indexes in SQL I knew

what indexes are but couldnrsquot recall the dierence between non-clustered and clustered

indexes The reality is who cares If I need to know the dierences thatrsquos what google is

for The best software developers are the ones who have a built-in curiosity about

technical things know how to research things and use that in their daily development

Irsquom coming to the conclusion that most tech interviews are a waste of time for everyone

involved Instead put the person in front of a PC give them an hour to write some

simple programs which illustrate their skill level This will be a far more accurate

assessment of the personrsquos skill than technical questions would give you And it gives

the interviewer the opportunity to go more in depth and ask about design decisions

performance issues and see the persons thought process on how they gure out stu

they donrsquot know about

But given that we live in the real world the matrix is a helpful starting point to know

what areas software engineers may need to brush up on for interviews I will give my

own critique of it from my 20 years of CC++C experience

Most people will never have the Level 3 (or even Level 2) knowledge in some areas

because they donrsquot use that skill set on a daily basis or the framework they use

abstracts things for them

For instance how often do does the average developer in a modern language think of

advanced data structures like B-trees binomial amp bonacci heaps etc While the

developer should have heard of most of these data structures and should be able to

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 8: Programmer Competency Matrix _ Sijin Joseph

It could be perfect with 5 levels based on Dreyfus model of skill acquisition

Nomota November 29 2012 at 0550 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3577)

Here I want to add at two more skills ndash Documentation

ldquoDocumentationrdquo (2^n Donrsquot know which kind of documents should be prepared

n^2Knows structured document deliverables within a software project n Has hisher

own set of reference documents from multiple projects log(n) Can design proper

formats and guidelines for a new SW project)

ldquoOce Tools Versatilityrdquo (2^n Has very basic understanding of Oce tools n^2 suers

diculties without proper format or table of contents n knows how to make document

templates use short-cut keys sometimes log(n) frequent use of short-cut keys and

denes hisher own macros or template formats utilizes extra-Oce tools if necessary

in combination with Oce tools)

Sijin November 29 2012 at 1153 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3578)

Thank you for the feedback Irsquoll be updating the matrix in the next year and will consider

your feedback

Yem Goslashdfather(HttpWwwFacebookComYemGodfather) December 23

2012 at 1623 (httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-

3580)

nah I do agree with the guy still anyhow tell us why you think that itrsquos a piece of

garbage

Tron March 3 2013 at 1540 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3583)

Excellent breakdown of needed skills for coding to sdm_64 and his ilk you have

revealed your incompetence by criticizing what you do not understand

Vector December 9 2013 at 1623 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3638)

Great content bad web design Looks like a free wordpress theme

Professional Programmer December 17 2013 at 1204

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3642)

wherersquos the smugness Irsquom cleverer than you and can use big words area of the matrix

this is the kind of thing that keeps this dude the dateless wonder he undoubtedly is ndash I

can just imagine the interview where he grinds some poor junior into the ground just to

massage his own oversized ego good programmers understand a problem and make a

solution in code ndash everything else is bullshit ndash if yoursquore interviewing yoursquoll know this in the

rst 2 minutes if you have to use this matrix to do that yoursquore not cut out as a manager

of human beings ask your clients (you know the ones who pay you) if they give a shit if

you know Erlang AND Prolog ndash bet I know where to nd you at parties

Juan David Pastaacutes Rivera December 22 2013 at 0347

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3644)

I feel more important the ability of learn new things more than a xed skill set I am not

sure if competence is a word that encapsulates this ability I am referring to but I like

more speed than position not saying I underrate position

MacgtPC December 30 2013 at 2336 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3649)

As a woefully incompetent programmer I appreciate the explicitness in this chart I only

wish someone would explain design competency in concrete terms such as you have

used for programming

Ramstar January 2 2014 at 1312 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3651)

If this is a litmus for the tested it is one for the tester

Brian Deeks January 3 2014 at 1905 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3652)

While I disagree with some of these what I take issue with will be dierent for other

programmershellipas perhaps they hit too closely to home Nice list

You should have one more category GUIweb application usability

2^n Messy dialogs and layouts unusable interfaces message boxes everywhere

horric colors and icons skinned interfaces that donrsquot match anything else in the OS

n^2 Nicer icons tab order works naturally lets the OS handle skinning of the

application

n Figures out what colors look good together message boxes only show on critical

issues doesnrsquot always follow the specication for UI design to the letter in an attempt to

make userrsquos lives less like a living Hell

log(n) Stands behind users on a regular basis to silently watch them actually use the

application disappears for days or weeks at a time to pick away at the newly discovered

usability issues until user interaction is smooth as butter and the users stop cursing at

the application Gets frequent positive feedback on the usability aspects and hailed as a

hero throughout the organization for creating the worldrsquos rst usable piece of software

Willing to repeat the process an unlimited number of times with an unlimited amount of

patience

Sijin Joseph (HttpSijinjosephCom) January 4 2014 at 0710

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3655)

Brian ndash Thank you for the feedback Like the GUIWeb usability idea but not sure if

yoursquore kidding about log(n) level

Neil Terry January 5 2014 at 1256 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3657)

Irsquove been looking for something with Visual Designer or GUI on it too My Team are a bit

of a mixture of Visual Designers and Developers Look forward to any enhancements

you might make

Raj January 21 2014 at 0208 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3660)

Nice matrix

MediumMech February 24 2014 at 0058 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3664)

Yes it was a rather blunt wake-up call for me I always assume therersquos someone better

than me and Irsquom not really a professional right now anyways but it always sucks to learn

you know less than you thought you did Oh well at least I have some guidelines to

learn from

Carthax March 7 2014 at 0946 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3668)

Irsquove been teaching myself programming for a number of years and have always known I

was only scratching the surface Seeing this article made me realize exactly how much

more I have to learn I know

gthelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

lt this much to learn to be competent and I dont think Disqus will let me put enough

dots in to describe what it would take to be a master

Martin March 10 2014 at 0945 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3669)

1) I would have used the scale in reverse then it (sort of) becomes a measure of

productivity 2) Add a category for SW Life Cycle with rows such as system analysis

documentation project planning CMMI Ranges from No clue understands concepts

runs with scissors works with designshellipSW Maintenance can write them well able to

implement and improve process

Sijin Joseph (HttpSijinjosephCom) March 10 2014 at 1059

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3670)

Thank you for the feedback Martin Will incorporate into next version

Gyubok March 16 2014 at 1414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3673)

Its because hersquos missing the uiux section

WebDeva March 18 2014 at 1118 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3675)

Irsquom questioning my own readiness to apply for entry-level or junior Web development

jobs Based on your matrix Irsquom somewhere between level 0 and level 1 (higher in some

areas like communication because I have several degrees code readability because I

simply love writing beautifully organized and well-documented code et al) I have about

a year of post-bacc computer science I quit the program when I realized I was more

interested in Web app development than compilers and OSes I have experience with

PHP Java C++ MySQL I can create read update and delete data What would be

helpful for someone like me is the addition of some sort of correlation Maybe an

additional grid with representative job titles at each level

Ani A March 28 2014 at 0414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3678)

+1 for ldquoDocumentationrdquo (can add use of PandocMarkdownAsciidocDocbook in case of

log(n) )

Vishal April 2 2014 at 0951 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3681)

very helpful why not a wiki page so that this can be revised and updated with more

categories

A Concord Resident April 15 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3685)

Everything Crushed I am a ZERO (average score) This is one hell of a list to live up to

Irsquove been well I guess now wasting the past decade of my life I have an interview this

week and I now feel like Irsquom bringing squat to the table So much work to dohellip Is there a

future in MS Access Db Development Yeah right

Dirk Herrmann April 22 2014 at 0401 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3686)

Thanks for the interesting matrix However I am confused about the column headlines

In your introductional text you say being at level n implies knowing everything below n

Then the columns also use n but additionally give levels 03 Combined with the

expressions this leads to the following 2^n with n=0 gives 1 n^2 with n=1 gives 1 hellip But

this is probably not what is meant Therefore what is the n in the column headlines

about and what does for example 2^n indicate Thanks for the clarication

HaakonKL May 3 2014 at 0347 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3687)

So Irsquom just a student but I have a few questions

Why is the Little Schemer in the Level 3 grouping

Itrsquos not a hard book to read

Why is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

Why is PowerShell not a shellscript

Itrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

And speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

If yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

Sijin Joseph (HttpSijinjosephCom) May 6 2014 at 0822

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3688)

Hi HaakonKL ndash Thank you for your time and feedback Replies below

gtWhy is the Little Schemer in the Level 3 grouping

gtItrsquos not a hard book to read

Having read this book shows a dierent type of programmer one whorsquos interested in

going beyond the how and asking why Yoursquod be surprised how many programmers

yoursquoll run into in your professional life who havenrsquot heard of the book or the language

for that matter

gtWhy is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

There is a dierent between knowing normalization and applying it based on your

specic needs In all practical scenarios you have to make choices and the choices

depend on the type of system usage which is why knowing about normalization is

below being able to understand and apply it eectively

gtWhy is PowerShell not a shellscript

gtItrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

Fair point Powershell is a full-blown programming language that exposes the complete

Net API which is why I lumped it with other general purpose scripting languages like

Python and Ruby

gtAnd speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

gtIf yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

True But this was just an example of tool knowledge Could you suggest something

similar for OSX or Linux

HaakonKL May 9 2014 at 0912 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3690)

For OSXLinux

man and info is a must

But therersquos also stu like sort uniq grep sed awk git etc for whenever you have text

you want to do things with

And then therersquos xpath and xquery as command-line tools if you need to do things to

xml-les (or should that be in the database section) jQuery is not quite the same thing

for JSON p

You should also be really comfortable with your package manager If yoursquore on say

Ubuntu and donrsquot know how to add in PPAs to get the newest version of some specic

software you want then yoursquore missing out

As for PowerShell I think I agree with you at least a little bit You make it sound useful

for the same sort of glue-code that Python and Perl is used for in the Unix world and in

that case yoursquore right and Irsquom wrong

Sijin Joseph (HttpSijinjosephCom) May 9 2014 at 1043

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3691)

Thank you Irsquoll incorporate this feedback into my next revision

Izkata May 21 2014 at 2218 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3694)

Itrsquos a bit excessive (weeks yeesh) but is otherwise a fairly accurate description of

usability testing

We tend to have one person doing the testing then the whole team secretly watches

through webcam+screen sharing to see how they react and what they do

Miraculixx June 11 2014 at 1720 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3698)

Irsquom questioning the focus on Erlang and Prolog and dynamic programming for log(n)

These are very particular elds and are not on par with all the other log(n) areas

Michael Bostwick June 13 2014 at 1315 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3699)

hellipI wish there was a PDF download

Allister Quinn June 18 2014 at 0817 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3701)

So someone with a rst class degree in Computer Science going for a software

engineering job would be expected to be somewhere between Level 1 and Level 2

Rodrigo Haguiuda July 10 2014 at 1526 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3702)

Could you provide a printer friendly version of the matrix

2Triangle July 11 2014 at 0501 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3703)

So I just graduated High School and have been reading SICP and TAOCP on-lsquonrsquo-o for

half a year Irsquom still trying to implement Chapter 1 Reading through the next chapters is

fun but itrsquos not fullling because I havenrsquot fully understood the rst

Are these books just too hard On Amazon therersquos a great review for TAOCP ldquoI bought

this bookset because they look nice on my wall And chicks think Irsquom smartrdquo Irsquom guessing

not many people have read it

Sijin Joseph (HttpSijinjosephCom) July 11 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3704)

My recommendation would be to skim through the books and keep coming back to the

books over the years as you gain more experience Yoursquoll learn something new every

time

Focus on building stu algorithms are only one aspect of software engineering building

stu will expose you to more aspects that will be more valuable to you in the early

stages

James Hawk III July 29 2014 at 1713 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3708)

Well I guess thatrsquos one guyrsquos opinion

George September 9 2014 at 1030 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3736)

Ultimately many interview questions are garbage since they simply reward those

people who memorize answers In your job are you allowed to look at MSDN do google

searches etc to solve problems The answer is likely yes Why are interviews so

dierent Itrsquos like taking a test in college In college you crammed and memorized the

info for that specic test but had no real understanding of it to use in the real world

For instance on a recent interview for a Sr Level developer they asked what indexes

are and the dierence between clustered and non-clustered indexes in SQL I knew

what indexes are but couldnrsquot recall the dierence between non-clustered and clustered

indexes The reality is who cares If I need to know the dierences thatrsquos what google is

for The best software developers are the ones who have a built-in curiosity about

technical things know how to research things and use that in their daily development

Irsquom coming to the conclusion that most tech interviews are a waste of time for everyone

involved Instead put the person in front of a PC give them an hour to write some

simple programs which illustrate their skill level This will be a far more accurate

assessment of the personrsquos skill than technical questions would give you And it gives

the interviewer the opportunity to go more in depth and ask about design decisions

performance issues and see the persons thought process on how they gure out stu

they donrsquot know about

But given that we live in the real world the matrix is a helpful starting point to know

what areas software engineers may need to brush up on for interviews I will give my

own critique of it from my 20 years of CC++C experience

Most people will never have the Level 3 (or even Level 2) knowledge in some areas

because they donrsquot use that skill set on a daily basis or the framework they use

abstracts things for them

For instance how often do does the average developer in a modern language think of

advanced data structures like B-trees binomial amp bonacci heaps etc While the

developer should have heard of most of these data structures and should be able to

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 9: Programmer Competency Matrix _ Sijin Joseph

matrixcomment-page-1comment-3583)

Excellent breakdown of needed skills for coding to sdm_64 and his ilk you have

revealed your incompetence by criticizing what you do not understand

Vector December 9 2013 at 1623 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3638)

Great content bad web design Looks like a free wordpress theme

Professional Programmer December 17 2013 at 1204

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3642)

wherersquos the smugness Irsquom cleverer than you and can use big words area of the matrix

this is the kind of thing that keeps this dude the dateless wonder he undoubtedly is ndash I

can just imagine the interview where he grinds some poor junior into the ground just to

massage his own oversized ego good programmers understand a problem and make a

solution in code ndash everything else is bullshit ndash if yoursquore interviewing yoursquoll know this in the

rst 2 minutes if you have to use this matrix to do that yoursquore not cut out as a manager

of human beings ask your clients (you know the ones who pay you) if they give a shit if

you know Erlang AND Prolog ndash bet I know where to nd you at parties

Juan David Pastaacutes Rivera December 22 2013 at 0347

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3644)

I feel more important the ability of learn new things more than a xed skill set I am not

sure if competence is a word that encapsulates this ability I am referring to but I like

more speed than position not saying I underrate position

MacgtPC December 30 2013 at 2336 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3649)

As a woefully incompetent programmer I appreciate the explicitness in this chart I only

wish someone would explain design competency in concrete terms such as you have

used for programming

Ramstar January 2 2014 at 1312 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3651)

If this is a litmus for the tested it is one for the tester

Brian Deeks January 3 2014 at 1905 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3652)

While I disagree with some of these what I take issue with will be dierent for other

programmershellipas perhaps they hit too closely to home Nice list

You should have one more category GUIweb application usability

2^n Messy dialogs and layouts unusable interfaces message boxes everywhere

horric colors and icons skinned interfaces that donrsquot match anything else in the OS

n^2 Nicer icons tab order works naturally lets the OS handle skinning of the

application

n Figures out what colors look good together message boxes only show on critical

issues doesnrsquot always follow the specication for UI design to the letter in an attempt to

make userrsquos lives less like a living Hell

log(n) Stands behind users on a regular basis to silently watch them actually use the

application disappears for days or weeks at a time to pick away at the newly discovered

usability issues until user interaction is smooth as butter and the users stop cursing at

the application Gets frequent positive feedback on the usability aspects and hailed as a

hero throughout the organization for creating the worldrsquos rst usable piece of software

Willing to repeat the process an unlimited number of times with an unlimited amount of

patience

Sijin Joseph (HttpSijinjosephCom) January 4 2014 at 0710

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3655)

Brian ndash Thank you for the feedback Like the GUIWeb usability idea but not sure if

yoursquore kidding about log(n) level

Neil Terry January 5 2014 at 1256 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3657)

Irsquove been looking for something with Visual Designer or GUI on it too My Team are a bit

of a mixture of Visual Designers and Developers Look forward to any enhancements

you might make

Raj January 21 2014 at 0208 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3660)

Nice matrix

MediumMech February 24 2014 at 0058 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3664)

Yes it was a rather blunt wake-up call for me I always assume therersquos someone better

than me and Irsquom not really a professional right now anyways but it always sucks to learn

you know less than you thought you did Oh well at least I have some guidelines to

learn from

Carthax March 7 2014 at 0946 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3668)

Irsquove been teaching myself programming for a number of years and have always known I

was only scratching the surface Seeing this article made me realize exactly how much

more I have to learn I know

gthelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

lt this much to learn to be competent and I dont think Disqus will let me put enough

dots in to describe what it would take to be a master

Martin March 10 2014 at 0945 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3669)

1) I would have used the scale in reverse then it (sort of) becomes a measure of

productivity 2) Add a category for SW Life Cycle with rows such as system analysis

documentation project planning CMMI Ranges from No clue understands concepts

runs with scissors works with designshellipSW Maintenance can write them well able to

implement and improve process

Sijin Joseph (HttpSijinjosephCom) March 10 2014 at 1059

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3670)

Thank you for the feedback Martin Will incorporate into next version

Gyubok March 16 2014 at 1414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3673)

Its because hersquos missing the uiux section

WebDeva March 18 2014 at 1118 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3675)

Irsquom questioning my own readiness to apply for entry-level or junior Web development

jobs Based on your matrix Irsquom somewhere between level 0 and level 1 (higher in some

areas like communication because I have several degrees code readability because I

simply love writing beautifully organized and well-documented code et al) I have about

a year of post-bacc computer science I quit the program when I realized I was more

interested in Web app development than compilers and OSes I have experience with

PHP Java C++ MySQL I can create read update and delete data What would be

helpful for someone like me is the addition of some sort of correlation Maybe an

additional grid with representative job titles at each level

Ani A March 28 2014 at 0414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3678)

+1 for ldquoDocumentationrdquo (can add use of PandocMarkdownAsciidocDocbook in case of

log(n) )

Vishal April 2 2014 at 0951 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3681)

very helpful why not a wiki page so that this can be revised and updated with more

categories

A Concord Resident April 15 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3685)

Everything Crushed I am a ZERO (average score) This is one hell of a list to live up to

Irsquove been well I guess now wasting the past decade of my life I have an interview this

week and I now feel like Irsquom bringing squat to the table So much work to dohellip Is there a

future in MS Access Db Development Yeah right

Dirk Herrmann April 22 2014 at 0401 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3686)

Thanks for the interesting matrix However I am confused about the column headlines

In your introductional text you say being at level n implies knowing everything below n

Then the columns also use n but additionally give levels 03 Combined with the

expressions this leads to the following 2^n with n=0 gives 1 n^2 with n=1 gives 1 hellip But

this is probably not what is meant Therefore what is the n in the column headlines

about and what does for example 2^n indicate Thanks for the clarication

HaakonKL May 3 2014 at 0347 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3687)

So Irsquom just a student but I have a few questions

Why is the Little Schemer in the Level 3 grouping

Itrsquos not a hard book to read

Why is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

Why is PowerShell not a shellscript

Itrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

And speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

If yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

Sijin Joseph (HttpSijinjosephCom) May 6 2014 at 0822

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3688)

Hi HaakonKL ndash Thank you for your time and feedback Replies below

gtWhy is the Little Schemer in the Level 3 grouping

gtItrsquos not a hard book to read

Having read this book shows a dierent type of programmer one whorsquos interested in

going beyond the how and asking why Yoursquod be surprised how many programmers

yoursquoll run into in your professional life who havenrsquot heard of the book or the language

for that matter

gtWhy is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

There is a dierent between knowing normalization and applying it based on your

specic needs In all practical scenarios you have to make choices and the choices

depend on the type of system usage which is why knowing about normalization is

below being able to understand and apply it eectively

gtWhy is PowerShell not a shellscript

gtItrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

Fair point Powershell is a full-blown programming language that exposes the complete

Net API which is why I lumped it with other general purpose scripting languages like

Python and Ruby

gtAnd speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

gtIf yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

True But this was just an example of tool knowledge Could you suggest something

similar for OSX or Linux

HaakonKL May 9 2014 at 0912 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3690)

For OSXLinux

man and info is a must

But therersquos also stu like sort uniq grep sed awk git etc for whenever you have text

you want to do things with

And then therersquos xpath and xquery as command-line tools if you need to do things to

xml-les (or should that be in the database section) jQuery is not quite the same thing

for JSON p

You should also be really comfortable with your package manager If yoursquore on say

Ubuntu and donrsquot know how to add in PPAs to get the newest version of some specic

software you want then yoursquore missing out

As for PowerShell I think I agree with you at least a little bit You make it sound useful

for the same sort of glue-code that Python and Perl is used for in the Unix world and in

that case yoursquore right and Irsquom wrong

Sijin Joseph (HttpSijinjosephCom) May 9 2014 at 1043

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3691)

Thank you Irsquoll incorporate this feedback into my next revision

Izkata May 21 2014 at 2218 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3694)

Itrsquos a bit excessive (weeks yeesh) but is otherwise a fairly accurate description of

usability testing

We tend to have one person doing the testing then the whole team secretly watches

through webcam+screen sharing to see how they react and what they do

Miraculixx June 11 2014 at 1720 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3698)

Irsquom questioning the focus on Erlang and Prolog and dynamic programming for log(n)

These are very particular elds and are not on par with all the other log(n) areas

Michael Bostwick June 13 2014 at 1315 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3699)

hellipI wish there was a PDF download

Allister Quinn June 18 2014 at 0817 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3701)

So someone with a rst class degree in Computer Science going for a software

engineering job would be expected to be somewhere between Level 1 and Level 2

Rodrigo Haguiuda July 10 2014 at 1526 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3702)

Could you provide a printer friendly version of the matrix

2Triangle July 11 2014 at 0501 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3703)

So I just graduated High School and have been reading SICP and TAOCP on-lsquonrsquo-o for

half a year Irsquom still trying to implement Chapter 1 Reading through the next chapters is

fun but itrsquos not fullling because I havenrsquot fully understood the rst

Are these books just too hard On Amazon therersquos a great review for TAOCP ldquoI bought

this bookset because they look nice on my wall And chicks think Irsquom smartrdquo Irsquom guessing

not many people have read it

Sijin Joseph (HttpSijinjosephCom) July 11 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3704)

My recommendation would be to skim through the books and keep coming back to the

books over the years as you gain more experience Yoursquoll learn something new every

time

Focus on building stu algorithms are only one aspect of software engineering building

stu will expose you to more aspects that will be more valuable to you in the early

stages

James Hawk III July 29 2014 at 1713 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3708)

Well I guess thatrsquos one guyrsquos opinion

George September 9 2014 at 1030 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3736)

Ultimately many interview questions are garbage since they simply reward those

people who memorize answers In your job are you allowed to look at MSDN do google

searches etc to solve problems The answer is likely yes Why are interviews so

dierent Itrsquos like taking a test in college In college you crammed and memorized the

info for that specic test but had no real understanding of it to use in the real world

For instance on a recent interview for a Sr Level developer they asked what indexes

are and the dierence between clustered and non-clustered indexes in SQL I knew

what indexes are but couldnrsquot recall the dierence between non-clustered and clustered

indexes The reality is who cares If I need to know the dierences thatrsquos what google is

for The best software developers are the ones who have a built-in curiosity about

technical things know how to research things and use that in their daily development

Irsquom coming to the conclusion that most tech interviews are a waste of time for everyone

involved Instead put the person in front of a PC give them an hour to write some

simple programs which illustrate their skill level This will be a far more accurate

assessment of the personrsquos skill than technical questions would give you And it gives

the interviewer the opportunity to go more in depth and ask about design decisions

performance issues and see the persons thought process on how they gure out stu

they donrsquot know about

But given that we live in the real world the matrix is a helpful starting point to know

what areas software engineers may need to brush up on for interviews I will give my

own critique of it from my 20 years of CC++C experience

Most people will never have the Level 3 (or even Level 2) knowledge in some areas

because they donrsquot use that skill set on a daily basis or the framework they use

abstracts things for them

For instance how often do does the average developer in a modern language think of

advanced data structures like B-trees binomial amp bonacci heaps etc While the

developer should have heard of most of these data structures and should be able to

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 10: Programmer Competency Matrix _ Sijin Joseph

As a woefully incompetent programmer I appreciate the explicitness in this chart I only

wish someone would explain design competency in concrete terms such as you have

used for programming

Ramstar January 2 2014 at 1312 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3651)

If this is a litmus for the tested it is one for the tester

Brian Deeks January 3 2014 at 1905 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3652)

While I disagree with some of these what I take issue with will be dierent for other

programmershellipas perhaps they hit too closely to home Nice list

You should have one more category GUIweb application usability

2^n Messy dialogs and layouts unusable interfaces message boxes everywhere

horric colors and icons skinned interfaces that donrsquot match anything else in the OS

n^2 Nicer icons tab order works naturally lets the OS handle skinning of the

application

n Figures out what colors look good together message boxes only show on critical

issues doesnrsquot always follow the specication for UI design to the letter in an attempt to

make userrsquos lives less like a living Hell

log(n) Stands behind users on a regular basis to silently watch them actually use the

application disappears for days or weeks at a time to pick away at the newly discovered

usability issues until user interaction is smooth as butter and the users stop cursing at

the application Gets frequent positive feedback on the usability aspects and hailed as a

hero throughout the organization for creating the worldrsquos rst usable piece of software

Willing to repeat the process an unlimited number of times with an unlimited amount of

patience

Sijin Joseph (HttpSijinjosephCom) January 4 2014 at 0710

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3655)

Brian ndash Thank you for the feedback Like the GUIWeb usability idea but not sure if

yoursquore kidding about log(n) level

Neil Terry January 5 2014 at 1256 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3657)

Irsquove been looking for something with Visual Designer or GUI on it too My Team are a bit

of a mixture of Visual Designers and Developers Look forward to any enhancements

you might make

Raj January 21 2014 at 0208 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3660)

Nice matrix

MediumMech February 24 2014 at 0058 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3664)

Yes it was a rather blunt wake-up call for me I always assume therersquos someone better

than me and Irsquom not really a professional right now anyways but it always sucks to learn

you know less than you thought you did Oh well at least I have some guidelines to

learn from

Carthax March 7 2014 at 0946 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3668)

Irsquove been teaching myself programming for a number of years and have always known I

was only scratching the surface Seeing this article made me realize exactly how much

more I have to learn I know

gthelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

lt this much to learn to be competent and I dont think Disqus will let me put enough

dots in to describe what it would take to be a master

Martin March 10 2014 at 0945 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3669)

1) I would have used the scale in reverse then it (sort of) becomes a measure of

productivity 2) Add a category for SW Life Cycle with rows such as system analysis

documentation project planning CMMI Ranges from No clue understands concepts

runs with scissors works with designshellipSW Maintenance can write them well able to

implement and improve process

Sijin Joseph (HttpSijinjosephCom) March 10 2014 at 1059

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3670)

Thank you for the feedback Martin Will incorporate into next version

Gyubok March 16 2014 at 1414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3673)

Its because hersquos missing the uiux section

WebDeva March 18 2014 at 1118 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3675)

Irsquom questioning my own readiness to apply for entry-level or junior Web development

jobs Based on your matrix Irsquom somewhere between level 0 and level 1 (higher in some

areas like communication because I have several degrees code readability because I

simply love writing beautifully organized and well-documented code et al) I have about

a year of post-bacc computer science I quit the program when I realized I was more

interested in Web app development than compilers and OSes I have experience with

PHP Java C++ MySQL I can create read update and delete data What would be

helpful for someone like me is the addition of some sort of correlation Maybe an

additional grid with representative job titles at each level

Ani A March 28 2014 at 0414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3678)

+1 for ldquoDocumentationrdquo (can add use of PandocMarkdownAsciidocDocbook in case of

log(n) )

Vishal April 2 2014 at 0951 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3681)

very helpful why not a wiki page so that this can be revised and updated with more

categories

A Concord Resident April 15 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3685)

Everything Crushed I am a ZERO (average score) This is one hell of a list to live up to

Irsquove been well I guess now wasting the past decade of my life I have an interview this

week and I now feel like Irsquom bringing squat to the table So much work to dohellip Is there a

future in MS Access Db Development Yeah right

Dirk Herrmann April 22 2014 at 0401 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3686)

Thanks for the interesting matrix However I am confused about the column headlines

In your introductional text you say being at level n implies knowing everything below n

Then the columns also use n but additionally give levels 03 Combined with the

expressions this leads to the following 2^n with n=0 gives 1 n^2 with n=1 gives 1 hellip But

this is probably not what is meant Therefore what is the n in the column headlines

about and what does for example 2^n indicate Thanks for the clarication

HaakonKL May 3 2014 at 0347 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3687)

So Irsquom just a student but I have a few questions

Why is the Little Schemer in the Level 3 grouping

Itrsquos not a hard book to read

Why is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

Why is PowerShell not a shellscript

Itrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

And speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

If yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

Sijin Joseph (HttpSijinjosephCom) May 6 2014 at 0822

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3688)

Hi HaakonKL ndash Thank you for your time and feedback Replies below

gtWhy is the Little Schemer in the Level 3 grouping

gtItrsquos not a hard book to read

Having read this book shows a dierent type of programmer one whorsquos interested in

going beyond the how and asking why Yoursquod be surprised how many programmers

yoursquoll run into in your professional life who havenrsquot heard of the book or the language

for that matter

gtWhy is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

There is a dierent between knowing normalization and applying it based on your

specic needs In all practical scenarios you have to make choices and the choices

depend on the type of system usage which is why knowing about normalization is

below being able to understand and apply it eectively

gtWhy is PowerShell not a shellscript

gtItrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

Fair point Powershell is a full-blown programming language that exposes the complete

Net API which is why I lumped it with other general purpose scripting languages like

Python and Ruby

gtAnd speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

gtIf yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

True But this was just an example of tool knowledge Could you suggest something

similar for OSX or Linux

HaakonKL May 9 2014 at 0912 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3690)

For OSXLinux

man and info is a must

But therersquos also stu like sort uniq grep sed awk git etc for whenever you have text

you want to do things with

And then therersquos xpath and xquery as command-line tools if you need to do things to

xml-les (or should that be in the database section) jQuery is not quite the same thing

for JSON p

You should also be really comfortable with your package manager If yoursquore on say

Ubuntu and donrsquot know how to add in PPAs to get the newest version of some specic

software you want then yoursquore missing out

As for PowerShell I think I agree with you at least a little bit You make it sound useful

for the same sort of glue-code that Python and Perl is used for in the Unix world and in

that case yoursquore right and Irsquom wrong

Sijin Joseph (HttpSijinjosephCom) May 9 2014 at 1043

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3691)

Thank you Irsquoll incorporate this feedback into my next revision

Izkata May 21 2014 at 2218 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3694)

Itrsquos a bit excessive (weeks yeesh) but is otherwise a fairly accurate description of

usability testing

We tend to have one person doing the testing then the whole team secretly watches

through webcam+screen sharing to see how they react and what they do

Miraculixx June 11 2014 at 1720 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3698)

Irsquom questioning the focus on Erlang and Prolog and dynamic programming for log(n)

These are very particular elds and are not on par with all the other log(n) areas

Michael Bostwick June 13 2014 at 1315 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3699)

hellipI wish there was a PDF download

Allister Quinn June 18 2014 at 0817 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3701)

So someone with a rst class degree in Computer Science going for a software

engineering job would be expected to be somewhere between Level 1 and Level 2

Rodrigo Haguiuda July 10 2014 at 1526 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3702)

Could you provide a printer friendly version of the matrix

2Triangle July 11 2014 at 0501 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3703)

So I just graduated High School and have been reading SICP and TAOCP on-lsquonrsquo-o for

half a year Irsquom still trying to implement Chapter 1 Reading through the next chapters is

fun but itrsquos not fullling because I havenrsquot fully understood the rst

Are these books just too hard On Amazon therersquos a great review for TAOCP ldquoI bought

this bookset because they look nice on my wall And chicks think Irsquom smartrdquo Irsquom guessing

not many people have read it

Sijin Joseph (HttpSijinjosephCom) July 11 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3704)

My recommendation would be to skim through the books and keep coming back to the

books over the years as you gain more experience Yoursquoll learn something new every

time

Focus on building stu algorithms are only one aspect of software engineering building

stu will expose you to more aspects that will be more valuable to you in the early

stages

James Hawk III July 29 2014 at 1713 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3708)

Well I guess thatrsquos one guyrsquos opinion

George September 9 2014 at 1030 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3736)

Ultimately many interview questions are garbage since they simply reward those

people who memorize answers In your job are you allowed to look at MSDN do google

searches etc to solve problems The answer is likely yes Why are interviews so

dierent Itrsquos like taking a test in college In college you crammed and memorized the

info for that specic test but had no real understanding of it to use in the real world

For instance on a recent interview for a Sr Level developer they asked what indexes

are and the dierence between clustered and non-clustered indexes in SQL I knew

what indexes are but couldnrsquot recall the dierence between non-clustered and clustered

indexes The reality is who cares If I need to know the dierences thatrsquos what google is

for The best software developers are the ones who have a built-in curiosity about

technical things know how to research things and use that in their daily development

Irsquom coming to the conclusion that most tech interviews are a waste of time for everyone

involved Instead put the person in front of a PC give them an hour to write some

simple programs which illustrate their skill level This will be a far more accurate

assessment of the personrsquos skill than technical questions would give you And it gives

the interviewer the opportunity to go more in depth and ask about design decisions

performance issues and see the persons thought process on how they gure out stu

they donrsquot know about

But given that we live in the real world the matrix is a helpful starting point to know

what areas software engineers may need to brush up on for interviews I will give my

own critique of it from my 20 years of CC++C experience

Most people will never have the Level 3 (or even Level 2) knowledge in some areas

because they donrsquot use that skill set on a daily basis or the framework they use

abstracts things for them

For instance how often do does the average developer in a modern language think of

advanced data structures like B-trees binomial amp bonacci heaps etc While the

developer should have heard of most of these data structures and should be able to

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 11: Programmer Competency Matrix _ Sijin Joseph

Sijin Joseph (HttpSijinjosephCom) January 4 2014 at 0710

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3655)

Brian ndash Thank you for the feedback Like the GUIWeb usability idea but not sure if

yoursquore kidding about log(n) level

Neil Terry January 5 2014 at 1256 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3657)

Irsquove been looking for something with Visual Designer or GUI on it too My Team are a bit

of a mixture of Visual Designers and Developers Look forward to any enhancements

you might make

Raj January 21 2014 at 0208 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3660)

Nice matrix

MediumMech February 24 2014 at 0058 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3664)

Yes it was a rather blunt wake-up call for me I always assume therersquos someone better

than me and Irsquom not really a professional right now anyways but it always sucks to learn

you know less than you thought you did Oh well at least I have some guidelines to

learn from

Carthax March 7 2014 at 0946 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3668)

Irsquove been teaching myself programming for a number of years and have always known I

was only scratching the surface Seeing this article made me realize exactly how much

more I have to learn I know

gthelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

lt this much to learn to be competent and I dont think Disqus will let me put enough

dots in to describe what it would take to be a master

Martin March 10 2014 at 0945 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3669)

1) I would have used the scale in reverse then it (sort of) becomes a measure of

productivity 2) Add a category for SW Life Cycle with rows such as system analysis

documentation project planning CMMI Ranges from No clue understands concepts

runs with scissors works with designshellipSW Maintenance can write them well able to

implement and improve process

Sijin Joseph (HttpSijinjosephCom) March 10 2014 at 1059

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3670)

Thank you for the feedback Martin Will incorporate into next version

Gyubok March 16 2014 at 1414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3673)

Its because hersquos missing the uiux section

WebDeva March 18 2014 at 1118 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3675)

Irsquom questioning my own readiness to apply for entry-level or junior Web development

jobs Based on your matrix Irsquom somewhere between level 0 and level 1 (higher in some

areas like communication because I have several degrees code readability because I

simply love writing beautifully organized and well-documented code et al) I have about

a year of post-bacc computer science I quit the program when I realized I was more

interested in Web app development than compilers and OSes I have experience with

PHP Java C++ MySQL I can create read update and delete data What would be

helpful for someone like me is the addition of some sort of correlation Maybe an

additional grid with representative job titles at each level

Ani A March 28 2014 at 0414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3678)

+1 for ldquoDocumentationrdquo (can add use of PandocMarkdownAsciidocDocbook in case of

log(n) )

Vishal April 2 2014 at 0951 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3681)

very helpful why not a wiki page so that this can be revised and updated with more

categories

A Concord Resident April 15 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3685)

Everything Crushed I am a ZERO (average score) This is one hell of a list to live up to

Irsquove been well I guess now wasting the past decade of my life I have an interview this

week and I now feel like Irsquom bringing squat to the table So much work to dohellip Is there a

future in MS Access Db Development Yeah right

Dirk Herrmann April 22 2014 at 0401 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3686)

Thanks for the interesting matrix However I am confused about the column headlines

In your introductional text you say being at level n implies knowing everything below n

Then the columns also use n but additionally give levels 03 Combined with the

expressions this leads to the following 2^n with n=0 gives 1 n^2 with n=1 gives 1 hellip But

this is probably not what is meant Therefore what is the n in the column headlines

about and what does for example 2^n indicate Thanks for the clarication

HaakonKL May 3 2014 at 0347 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3687)

So Irsquom just a student but I have a few questions

Why is the Little Schemer in the Level 3 grouping

Itrsquos not a hard book to read

Why is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

Why is PowerShell not a shellscript

Itrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

And speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

If yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

Sijin Joseph (HttpSijinjosephCom) May 6 2014 at 0822

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3688)

Hi HaakonKL ndash Thank you for your time and feedback Replies below

gtWhy is the Little Schemer in the Level 3 grouping

gtItrsquos not a hard book to read

Having read this book shows a dierent type of programmer one whorsquos interested in

going beyond the how and asking why Yoursquod be surprised how many programmers

yoursquoll run into in your professional life who havenrsquot heard of the book or the language

for that matter

gtWhy is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

There is a dierent between knowing normalization and applying it based on your

specic needs In all practical scenarios you have to make choices and the choices

depend on the type of system usage which is why knowing about normalization is

below being able to understand and apply it eectively

gtWhy is PowerShell not a shellscript

gtItrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

Fair point Powershell is a full-blown programming language that exposes the complete

Net API which is why I lumped it with other general purpose scripting languages like

Python and Ruby

gtAnd speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

gtIf yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

True But this was just an example of tool knowledge Could you suggest something

similar for OSX or Linux

HaakonKL May 9 2014 at 0912 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3690)

For OSXLinux

man and info is a must

But therersquos also stu like sort uniq grep sed awk git etc for whenever you have text

you want to do things with

And then therersquos xpath and xquery as command-line tools if you need to do things to

xml-les (or should that be in the database section) jQuery is not quite the same thing

for JSON p

You should also be really comfortable with your package manager If yoursquore on say

Ubuntu and donrsquot know how to add in PPAs to get the newest version of some specic

software you want then yoursquore missing out

As for PowerShell I think I agree with you at least a little bit You make it sound useful

for the same sort of glue-code that Python and Perl is used for in the Unix world and in

that case yoursquore right and Irsquom wrong

Sijin Joseph (HttpSijinjosephCom) May 9 2014 at 1043

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3691)

Thank you Irsquoll incorporate this feedback into my next revision

Izkata May 21 2014 at 2218 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3694)

Itrsquos a bit excessive (weeks yeesh) but is otherwise a fairly accurate description of

usability testing

We tend to have one person doing the testing then the whole team secretly watches

through webcam+screen sharing to see how they react and what they do

Miraculixx June 11 2014 at 1720 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3698)

Irsquom questioning the focus on Erlang and Prolog and dynamic programming for log(n)

These are very particular elds and are not on par with all the other log(n) areas

Michael Bostwick June 13 2014 at 1315 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3699)

hellipI wish there was a PDF download

Allister Quinn June 18 2014 at 0817 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3701)

So someone with a rst class degree in Computer Science going for a software

engineering job would be expected to be somewhere between Level 1 and Level 2

Rodrigo Haguiuda July 10 2014 at 1526 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3702)

Could you provide a printer friendly version of the matrix

2Triangle July 11 2014 at 0501 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3703)

So I just graduated High School and have been reading SICP and TAOCP on-lsquonrsquo-o for

half a year Irsquom still trying to implement Chapter 1 Reading through the next chapters is

fun but itrsquos not fullling because I havenrsquot fully understood the rst

Are these books just too hard On Amazon therersquos a great review for TAOCP ldquoI bought

this bookset because they look nice on my wall And chicks think Irsquom smartrdquo Irsquom guessing

not many people have read it

Sijin Joseph (HttpSijinjosephCom) July 11 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3704)

My recommendation would be to skim through the books and keep coming back to the

books over the years as you gain more experience Yoursquoll learn something new every

time

Focus on building stu algorithms are only one aspect of software engineering building

stu will expose you to more aspects that will be more valuable to you in the early

stages

James Hawk III July 29 2014 at 1713 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3708)

Well I guess thatrsquos one guyrsquos opinion

George September 9 2014 at 1030 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3736)

Ultimately many interview questions are garbage since they simply reward those

people who memorize answers In your job are you allowed to look at MSDN do google

searches etc to solve problems The answer is likely yes Why are interviews so

dierent Itrsquos like taking a test in college In college you crammed and memorized the

info for that specic test but had no real understanding of it to use in the real world

For instance on a recent interview for a Sr Level developer they asked what indexes

are and the dierence between clustered and non-clustered indexes in SQL I knew

what indexes are but couldnrsquot recall the dierence between non-clustered and clustered

indexes The reality is who cares If I need to know the dierences thatrsquos what google is

for The best software developers are the ones who have a built-in curiosity about

technical things know how to research things and use that in their daily development

Irsquom coming to the conclusion that most tech interviews are a waste of time for everyone

involved Instead put the person in front of a PC give them an hour to write some

simple programs which illustrate their skill level This will be a far more accurate

assessment of the personrsquos skill than technical questions would give you And it gives

the interviewer the opportunity to go more in depth and ask about design decisions

performance issues and see the persons thought process on how they gure out stu

they donrsquot know about

But given that we live in the real world the matrix is a helpful starting point to know

what areas software engineers may need to brush up on for interviews I will give my

own critique of it from my 20 years of CC++C experience

Most people will never have the Level 3 (or even Level 2) knowledge in some areas

because they donrsquot use that skill set on a daily basis or the framework they use

abstracts things for them

For instance how often do does the average developer in a modern language think of

advanced data structures like B-trees binomial amp bonacci heaps etc While the

developer should have heard of most of these data structures and should be able to

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 12: Programmer Competency Matrix _ Sijin Joseph

gthelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

lt this much to learn to be competent and I dont think Disqus will let me put enough

dots in to describe what it would take to be a master

Martin March 10 2014 at 0945 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3669)

1) I would have used the scale in reverse then it (sort of) becomes a measure of

productivity 2) Add a category for SW Life Cycle with rows such as system analysis

documentation project planning CMMI Ranges from No clue understands concepts

runs with scissors works with designshellipSW Maintenance can write them well able to

implement and improve process

Sijin Joseph (HttpSijinjosephCom) March 10 2014 at 1059

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3670)

Thank you for the feedback Martin Will incorporate into next version

Gyubok March 16 2014 at 1414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3673)

Its because hersquos missing the uiux section

WebDeva March 18 2014 at 1118 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3675)

Irsquom questioning my own readiness to apply for entry-level or junior Web development

jobs Based on your matrix Irsquom somewhere between level 0 and level 1 (higher in some

areas like communication because I have several degrees code readability because I

simply love writing beautifully organized and well-documented code et al) I have about

a year of post-bacc computer science I quit the program when I realized I was more

interested in Web app development than compilers and OSes I have experience with

PHP Java C++ MySQL I can create read update and delete data What would be

helpful for someone like me is the addition of some sort of correlation Maybe an

additional grid with representative job titles at each level

Ani A March 28 2014 at 0414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3678)

+1 for ldquoDocumentationrdquo (can add use of PandocMarkdownAsciidocDocbook in case of

log(n) )

Vishal April 2 2014 at 0951 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3681)

very helpful why not a wiki page so that this can be revised and updated with more

categories

A Concord Resident April 15 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3685)

Everything Crushed I am a ZERO (average score) This is one hell of a list to live up to

Irsquove been well I guess now wasting the past decade of my life I have an interview this

week and I now feel like Irsquom bringing squat to the table So much work to dohellip Is there a

future in MS Access Db Development Yeah right

Dirk Herrmann April 22 2014 at 0401 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3686)

Thanks for the interesting matrix However I am confused about the column headlines

In your introductional text you say being at level n implies knowing everything below n

Then the columns also use n but additionally give levels 03 Combined with the

expressions this leads to the following 2^n with n=0 gives 1 n^2 with n=1 gives 1 hellip But

this is probably not what is meant Therefore what is the n in the column headlines

about and what does for example 2^n indicate Thanks for the clarication

HaakonKL May 3 2014 at 0347 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3687)

So Irsquom just a student but I have a few questions

Why is the Little Schemer in the Level 3 grouping

Itrsquos not a hard book to read

Why is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

Why is PowerShell not a shellscript

Itrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

And speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

If yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

Sijin Joseph (HttpSijinjosephCom) May 6 2014 at 0822

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3688)

Hi HaakonKL ndash Thank you for your time and feedback Replies below

gtWhy is the Little Schemer in the Level 3 grouping

gtItrsquos not a hard book to read

Having read this book shows a dierent type of programmer one whorsquos interested in

going beyond the how and asking why Yoursquod be surprised how many programmers

yoursquoll run into in your professional life who havenrsquot heard of the book or the language

for that matter

gtWhy is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

There is a dierent between knowing normalization and applying it based on your

specic needs In all practical scenarios you have to make choices and the choices

depend on the type of system usage which is why knowing about normalization is

below being able to understand and apply it eectively

gtWhy is PowerShell not a shellscript

gtItrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

Fair point Powershell is a full-blown programming language that exposes the complete

Net API which is why I lumped it with other general purpose scripting languages like

Python and Ruby

gtAnd speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

gtIf yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

True But this was just an example of tool knowledge Could you suggest something

similar for OSX or Linux

HaakonKL May 9 2014 at 0912 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3690)

For OSXLinux

man and info is a must

But therersquos also stu like sort uniq grep sed awk git etc for whenever you have text

you want to do things with

And then therersquos xpath and xquery as command-line tools if you need to do things to

xml-les (or should that be in the database section) jQuery is not quite the same thing

for JSON p

You should also be really comfortable with your package manager If yoursquore on say

Ubuntu and donrsquot know how to add in PPAs to get the newest version of some specic

software you want then yoursquore missing out

As for PowerShell I think I agree with you at least a little bit You make it sound useful

for the same sort of glue-code that Python and Perl is used for in the Unix world and in

that case yoursquore right and Irsquom wrong

Sijin Joseph (HttpSijinjosephCom) May 9 2014 at 1043

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3691)

Thank you Irsquoll incorporate this feedback into my next revision

Izkata May 21 2014 at 2218 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3694)

Itrsquos a bit excessive (weeks yeesh) but is otherwise a fairly accurate description of

usability testing

We tend to have one person doing the testing then the whole team secretly watches

through webcam+screen sharing to see how they react and what they do

Miraculixx June 11 2014 at 1720 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3698)

Irsquom questioning the focus on Erlang and Prolog and dynamic programming for log(n)

These are very particular elds and are not on par with all the other log(n) areas

Michael Bostwick June 13 2014 at 1315 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3699)

hellipI wish there was a PDF download

Allister Quinn June 18 2014 at 0817 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3701)

So someone with a rst class degree in Computer Science going for a software

engineering job would be expected to be somewhere between Level 1 and Level 2

Rodrigo Haguiuda July 10 2014 at 1526 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3702)

Could you provide a printer friendly version of the matrix

2Triangle July 11 2014 at 0501 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3703)

So I just graduated High School and have been reading SICP and TAOCP on-lsquonrsquo-o for

half a year Irsquom still trying to implement Chapter 1 Reading through the next chapters is

fun but itrsquos not fullling because I havenrsquot fully understood the rst

Are these books just too hard On Amazon therersquos a great review for TAOCP ldquoI bought

this bookset because they look nice on my wall And chicks think Irsquom smartrdquo Irsquom guessing

not many people have read it

Sijin Joseph (HttpSijinjosephCom) July 11 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3704)

My recommendation would be to skim through the books and keep coming back to the

books over the years as you gain more experience Yoursquoll learn something new every

time

Focus on building stu algorithms are only one aspect of software engineering building

stu will expose you to more aspects that will be more valuable to you in the early

stages

James Hawk III July 29 2014 at 1713 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3708)

Well I guess thatrsquos one guyrsquos opinion

George September 9 2014 at 1030 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3736)

Ultimately many interview questions are garbage since they simply reward those

people who memorize answers In your job are you allowed to look at MSDN do google

searches etc to solve problems The answer is likely yes Why are interviews so

dierent Itrsquos like taking a test in college In college you crammed and memorized the

info for that specic test but had no real understanding of it to use in the real world

For instance on a recent interview for a Sr Level developer they asked what indexes

are and the dierence between clustered and non-clustered indexes in SQL I knew

what indexes are but couldnrsquot recall the dierence between non-clustered and clustered

indexes The reality is who cares If I need to know the dierences thatrsquos what google is

for The best software developers are the ones who have a built-in curiosity about

technical things know how to research things and use that in their daily development

Irsquom coming to the conclusion that most tech interviews are a waste of time for everyone

involved Instead put the person in front of a PC give them an hour to write some

simple programs which illustrate their skill level This will be a far more accurate

assessment of the personrsquos skill than technical questions would give you And it gives

the interviewer the opportunity to go more in depth and ask about design decisions

performance issues and see the persons thought process on how they gure out stu

they donrsquot know about

But given that we live in the real world the matrix is a helpful starting point to know

what areas software engineers may need to brush up on for interviews I will give my

own critique of it from my 20 years of CC++C experience

Most people will never have the Level 3 (or even Level 2) knowledge in some areas

because they donrsquot use that skill set on a daily basis or the framework they use

abstracts things for them

For instance how often do does the average developer in a modern language think of

advanced data structures like B-trees binomial amp bonacci heaps etc While the

developer should have heard of most of these data structures and should be able to

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 13: Programmer Competency Matrix _ Sijin Joseph

PHP Java C++ MySQL I can create read update and delete data What would be

helpful for someone like me is the addition of some sort of correlation Maybe an

additional grid with representative job titles at each level

Ani A March 28 2014 at 0414 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3678)

+1 for ldquoDocumentationrdquo (can add use of PandocMarkdownAsciidocDocbook in case of

log(n) )

Vishal April 2 2014 at 0951 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3681)

very helpful why not a wiki page so that this can be revised and updated with more

categories

A Concord Resident April 15 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3685)

Everything Crushed I am a ZERO (average score) This is one hell of a list to live up to

Irsquove been well I guess now wasting the past decade of my life I have an interview this

week and I now feel like Irsquom bringing squat to the table So much work to dohellip Is there a

future in MS Access Db Development Yeah right

Dirk Herrmann April 22 2014 at 0401 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3686)

Thanks for the interesting matrix However I am confused about the column headlines

In your introductional text you say being at level n implies knowing everything below n

Then the columns also use n but additionally give levels 03 Combined with the

expressions this leads to the following 2^n with n=0 gives 1 n^2 with n=1 gives 1 hellip But

this is probably not what is meant Therefore what is the n in the column headlines

about and what does for example 2^n indicate Thanks for the clarication

HaakonKL May 3 2014 at 0347 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3687)

So Irsquom just a student but I have a few questions

Why is the Little Schemer in the Level 3 grouping

Itrsquos not a hard book to read

Why is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

Why is PowerShell not a shellscript

Itrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

And speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

If yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

Sijin Joseph (HttpSijinjosephCom) May 6 2014 at 0822

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3688)

Hi HaakonKL ndash Thank you for your time and feedback Replies below

gtWhy is the Little Schemer in the Level 3 grouping

gtItrsquos not a hard book to read

Having read this book shows a dierent type of programmer one whorsquos interested in

going beyond the how and asking why Yoursquod be surprised how many programmers

yoursquoll run into in your professional life who havenrsquot heard of the book or the language

for that matter

gtWhy is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

There is a dierent between knowing normalization and applying it based on your

specic needs In all practical scenarios you have to make choices and the choices

depend on the type of system usage which is why knowing about normalization is

below being able to understand and apply it eectively

gtWhy is PowerShell not a shellscript

gtItrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

Fair point Powershell is a full-blown programming language that exposes the complete

Net API which is why I lumped it with other general purpose scripting languages like

Python and Ruby

gtAnd speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

gtIf yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

True But this was just an example of tool knowledge Could you suggest something

similar for OSX or Linux

HaakonKL May 9 2014 at 0912 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3690)

For OSXLinux

man and info is a must

But therersquos also stu like sort uniq grep sed awk git etc for whenever you have text

you want to do things with

And then therersquos xpath and xquery as command-line tools if you need to do things to

xml-les (or should that be in the database section) jQuery is not quite the same thing

for JSON p

You should also be really comfortable with your package manager If yoursquore on say

Ubuntu and donrsquot know how to add in PPAs to get the newest version of some specic

software you want then yoursquore missing out

As for PowerShell I think I agree with you at least a little bit You make it sound useful

for the same sort of glue-code that Python and Perl is used for in the Unix world and in

that case yoursquore right and Irsquom wrong

Sijin Joseph (HttpSijinjosephCom) May 9 2014 at 1043

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3691)

Thank you Irsquoll incorporate this feedback into my next revision

Izkata May 21 2014 at 2218 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3694)

Itrsquos a bit excessive (weeks yeesh) but is otherwise a fairly accurate description of

usability testing

We tend to have one person doing the testing then the whole team secretly watches

through webcam+screen sharing to see how they react and what they do

Miraculixx June 11 2014 at 1720 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3698)

Irsquom questioning the focus on Erlang and Prolog and dynamic programming for log(n)

These are very particular elds and are not on par with all the other log(n) areas

Michael Bostwick June 13 2014 at 1315 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3699)

hellipI wish there was a PDF download

Allister Quinn June 18 2014 at 0817 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3701)

So someone with a rst class degree in Computer Science going for a software

engineering job would be expected to be somewhere between Level 1 and Level 2

Rodrigo Haguiuda July 10 2014 at 1526 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3702)

Could you provide a printer friendly version of the matrix

2Triangle July 11 2014 at 0501 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3703)

So I just graduated High School and have been reading SICP and TAOCP on-lsquonrsquo-o for

half a year Irsquom still trying to implement Chapter 1 Reading through the next chapters is

fun but itrsquos not fullling because I havenrsquot fully understood the rst

Are these books just too hard On Amazon therersquos a great review for TAOCP ldquoI bought

this bookset because they look nice on my wall And chicks think Irsquom smartrdquo Irsquom guessing

not many people have read it

Sijin Joseph (HttpSijinjosephCom) July 11 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3704)

My recommendation would be to skim through the books and keep coming back to the

books over the years as you gain more experience Yoursquoll learn something new every

time

Focus on building stu algorithms are only one aspect of software engineering building

stu will expose you to more aspects that will be more valuable to you in the early

stages

James Hawk III July 29 2014 at 1713 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3708)

Well I guess thatrsquos one guyrsquos opinion

George September 9 2014 at 1030 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3736)

Ultimately many interview questions are garbage since they simply reward those

people who memorize answers In your job are you allowed to look at MSDN do google

searches etc to solve problems The answer is likely yes Why are interviews so

dierent Itrsquos like taking a test in college In college you crammed and memorized the

info for that specic test but had no real understanding of it to use in the real world

For instance on a recent interview for a Sr Level developer they asked what indexes

are and the dierence between clustered and non-clustered indexes in SQL I knew

what indexes are but couldnrsquot recall the dierence between non-clustered and clustered

indexes The reality is who cares If I need to know the dierences thatrsquos what google is

for The best software developers are the ones who have a built-in curiosity about

technical things know how to research things and use that in their daily development

Irsquom coming to the conclusion that most tech interviews are a waste of time for everyone

involved Instead put the person in front of a PC give them an hour to write some

simple programs which illustrate their skill level This will be a far more accurate

assessment of the personrsquos skill than technical questions would give you And it gives

the interviewer the opportunity to go more in depth and ask about design decisions

performance issues and see the persons thought process on how they gure out stu

they donrsquot know about

But given that we live in the real world the matrix is a helpful starting point to know

what areas software engineers may need to brush up on for interviews I will give my

own critique of it from my 20 years of CC++C experience

Most people will never have the Level 3 (or even Level 2) knowledge in some areas

because they donrsquot use that skill set on a daily basis or the framework they use

abstracts things for them

For instance how often do does the average developer in a modern language think of

advanced data structures like B-trees binomial amp bonacci heaps etc While the

developer should have heard of most of these data structures and should be able to

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 14: Programmer Competency Matrix _ Sijin Joseph

expressions this leads to the following 2^n with n=0 gives 1 n^2 with n=1 gives 1 hellip But

this is probably not what is meant Therefore what is the n in the column headlines

about and what does for example 2^n indicate Thanks for the clarication

HaakonKL May 3 2014 at 0347 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3687)

So Irsquom just a student but I have a few questions

Why is the Little Schemer in the Level 3 grouping

Itrsquos not a hard book to read

Why is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

Why is PowerShell not a shellscript

Itrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

And speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

If yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

Sijin Joseph (HttpSijinjosephCom) May 6 2014 at 0822

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3688)

Hi HaakonKL ndash Thank you for your time and feedback Replies below

gtWhy is the Little Schemer in the Level 3 grouping

gtItrsquos not a hard book to read

Having read this book shows a dierent type of programmer one whorsquos interested in

going beyond the how and asking why Yoursquod be surprised how many programmers

yoursquoll run into in your professional life who havenrsquot heard of the book or the language

for that matter

gtWhy is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

There is a dierent between knowing normalization and applying it based on your

specic needs In all practical scenarios you have to make choices and the choices

depend on the type of system usage which is why knowing about normalization is

below being able to understand and apply it eectively

gtWhy is PowerShell not a shellscript

gtItrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

Fair point Powershell is a full-blown programming language that exposes the complete

Net API which is why I lumped it with other general purpose scripting languages like

Python and Ruby

gtAnd speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

gtIf yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

True But this was just an example of tool knowledge Could you suggest something

similar for OSX or Linux

HaakonKL May 9 2014 at 0912 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3690)

For OSXLinux

man and info is a must

But therersquos also stu like sort uniq grep sed awk git etc for whenever you have text

you want to do things with

And then therersquos xpath and xquery as command-line tools if you need to do things to

xml-les (or should that be in the database section) jQuery is not quite the same thing

for JSON p

You should also be really comfortable with your package manager If yoursquore on say

Ubuntu and donrsquot know how to add in PPAs to get the newest version of some specic

software you want then yoursquore missing out

As for PowerShell I think I agree with you at least a little bit You make it sound useful

for the same sort of glue-code that Python and Perl is used for in the Unix world and in

that case yoursquore right and Irsquom wrong

Sijin Joseph (HttpSijinjosephCom) May 9 2014 at 1043

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3691)

Thank you Irsquoll incorporate this feedback into my next revision

Izkata May 21 2014 at 2218 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3694)

Itrsquos a bit excessive (weeks yeesh) but is otherwise a fairly accurate description of

usability testing

We tend to have one person doing the testing then the whole team secretly watches

through webcam+screen sharing to see how they react and what they do

Miraculixx June 11 2014 at 1720 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3698)

Irsquom questioning the focus on Erlang and Prolog and dynamic programming for log(n)

These are very particular elds and are not on par with all the other log(n) areas

Michael Bostwick June 13 2014 at 1315 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3699)

hellipI wish there was a PDF download

Allister Quinn June 18 2014 at 0817 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3701)

So someone with a rst class degree in Computer Science going for a software

engineering job would be expected to be somewhere between Level 1 and Level 2

Rodrigo Haguiuda July 10 2014 at 1526 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3702)

Could you provide a printer friendly version of the matrix

2Triangle July 11 2014 at 0501 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3703)

So I just graduated High School and have been reading SICP and TAOCP on-lsquonrsquo-o for

half a year Irsquom still trying to implement Chapter 1 Reading through the next chapters is

fun but itrsquos not fullling because I havenrsquot fully understood the rst

Are these books just too hard On Amazon therersquos a great review for TAOCP ldquoI bought

this bookset because they look nice on my wall And chicks think Irsquom smartrdquo Irsquom guessing

not many people have read it

Sijin Joseph (HttpSijinjosephCom) July 11 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3704)

My recommendation would be to skim through the books and keep coming back to the

books over the years as you gain more experience Yoursquoll learn something new every

time

Focus on building stu algorithms are only one aspect of software engineering building

stu will expose you to more aspects that will be more valuable to you in the early

stages

James Hawk III July 29 2014 at 1713 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3708)

Well I guess thatrsquos one guyrsquos opinion

George September 9 2014 at 1030 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3736)

Ultimately many interview questions are garbage since they simply reward those

people who memorize answers In your job are you allowed to look at MSDN do google

searches etc to solve problems The answer is likely yes Why are interviews so

dierent Itrsquos like taking a test in college In college you crammed and memorized the

info for that specic test but had no real understanding of it to use in the real world

For instance on a recent interview for a Sr Level developer they asked what indexes

are and the dierence between clustered and non-clustered indexes in SQL I knew

what indexes are but couldnrsquot recall the dierence between non-clustered and clustered

indexes The reality is who cares If I need to know the dierences thatrsquos what google is

for The best software developers are the ones who have a built-in curiosity about

technical things know how to research things and use that in their daily development

Irsquom coming to the conclusion that most tech interviews are a waste of time for everyone

involved Instead put the person in front of a PC give them an hour to write some

simple programs which illustrate their skill level This will be a far more accurate

assessment of the personrsquos skill than technical questions would give you And it gives

the interviewer the opportunity to go more in depth and ask about design decisions

performance issues and see the persons thought process on how they gure out stu

they donrsquot know about

But given that we live in the real world the matrix is a helpful starting point to know

what areas software engineers may need to brush up on for interviews I will give my

own critique of it from my 20 years of CC++C experience

Most people will never have the Level 3 (or even Level 2) knowledge in some areas

because they donrsquot use that skill set on a daily basis or the framework they use

abstracts things for them

For instance how often do does the average developer in a modern language think of

advanced data structures like B-trees binomial amp bonacci heaps etc While the

developer should have heard of most of these data structures and should be able to

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 15: Programmer Competency Matrix _ Sijin Joseph

gtWhy is how transactions work more basic than how to design a basic normalized (to

which normalized form btw 3rd BCNF 5th) schema

There is a dierent between knowing normalization and applying it based on your

specic needs In all practical scenarios you have to make choices and the choices

depend on the type of system usage which is why knowing about normalization is

below being able to understand and apply it eectively

gtWhy is PowerShell not a shellscript

gtItrsquos a shell you script it itrsquos therefore shellscript I know that PowerShell is cooler and

such than TCSH and BASH but this smells of Windows wheenydom to me

Fair point Powershell is a full-blown programming language that exposes the complete

Net API which is why I lumped it with other general purpose scripting languages like

Python and Ruby

gtAnd speaking about tools isnrsquot Scottrsquos list a bit Windows-user specic Half the things

there at least is not about coding

gtIf yoursquore an Emacs OSX or Linux user you pretty much have about 90 of this stu

already and the rest is preference

True But this was just an example of tool knowledge Could you suggest something

similar for OSX or Linux

HaakonKL May 9 2014 at 0912 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3690)

For OSXLinux

man and info is a must

But therersquos also stu like sort uniq grep sed awk git etc for whenever you have text

you want to do things with

And then therersquos xpath and xquery as command-line tools if you need to do things to

xml-les (or should that be in the database section) jQuery is not quite the same thing

for JSON p

You should also be really comfortable with your package manager If yoursquore on say

Ubuntu and donrsquot know how to add in PPAs to get the newest version of some specic

software you want then yoursquore missing out

As for PowerShell I think I agree with you at least a little bit You make it sound useful

for the same sort of glue-code that Python and Perl is used for in the Unix world and in

that case yoursquore right and Irsquom wrong

Sijin Joseph (HttpSijinjosephCom) May 9 2014 at 1043

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3691)

Thank you Irsquoll incorporate this feedback into my next revision

Izkata May 21 2014 at 2218 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3694)

Itrsquos a bit excessive (weeks yeesh) but is otherwise a fairly accurate description of

usability testing

We tend to have one person doing the testing then the whole team secretly watches

through webcam+screen sharing to see how they react and what they do

Miraculixx June 11 2014 at 1720 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3698)

Irsquom questioning the focus on Erlang and Prolog and dynamic programming for log(n)

These are very particular elds and are not on par with all the other log(n) areas

Michael Bostwick June 13 2014 at 1315 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3699)

hellipI wish there was a PDF download

Allister Quinn June 18 2014 at 0817 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3701)

So someone with a rst class degree in Computer Science going for a software

engineering job would be expected to be somewhere between Level 1 and Level 2

Rodrigo Haguiuda July 10 2014 at 1526 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3702)

Could you provide a printer friendly version of the matrix

2Triangle July 11 2014 at 0501 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3703)

So I just graduated High School and have been reading SICP and TAOCP on-lsquonrsquo-o for

half a year Irsquom still trying to implement Chapter 1 Reading through the next chapters is

fun but itrsquos not fullling because I havenrsquot fully understood the rst

Are these books just too hard On Amazon therersquos a great review for TAOCP ldquoI bought

this bookset because they look nice on my wall And chicks think Irsquom smartrdquo Irsquom guessing

not many people have read it

Sijin Joseph (HttpSijinjosephCom) July 11 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3704)

My recommendation would be to skim through the books and keep coming back to the

books over the years as you gain more experience Yoursquoll learn something new every

time

Focus on building stu algorithms are only one aspect of software engineering building

stu will expose you to more aspects that will be more valuable to you in the early

stages

James Hawk III July 29 2014 at 1713 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3708)

Well I guess thatrsquos one guyrsquos opinion

George September 9 2014 at 1030 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3736)

Ultimately many interview questions are garbage since they simply reward those

people who memorize answers In your job are you allowed to look at MSDN do google

searches etc to solve problems The answer is likely yes Why are interviews so

dierent Itrsquos like taking a test in college In college you crammed and memorized the

info for that specic test but had no real understanding of it to use in the real world

For instance on a recent interview for a Sr Level developer they asked what indexes

are and the dierence between clustered and non-clustered indexes in SQL I knew

what indexes are but couldnrsquot recall the dierence between non-clustered and clustered

indexes The reality is who cares If I need to know the dierences thatrsquos what google is

for The best software developers are the ones who have a built-in curiosity about

technical things know how to research things and use that in their daily development

Irsquom coming to the conclusion that most tech interviews are a waste of time for everyone

involved Instead put the person in front of a PC give them an hour to write some

simple programs which illustrate their skill level This will be a far more accurate

assessment of the personrsquos skill than technical questions would give you And it gives

the interviewer the opportunity to go more in depth and ask about design decisions

performance issues and see the persons thought process on how they gure out stu

they donrsquot know about

But given that we live in the real world the matrix is a helpful starting point to know

what areas software engineers may need to brush up on for interviews I will give my

own critique of it from my 20 years of CC++C experience

Most people will never have the Level 3 (or even Level 2) knowledge in some areas

because they donrsquot use that skill set on a daily basis or the framework they use

abstracts things for them

For instance how often do does the average developer in a modern language think of

advanced data structures like B-trees binomial amp bonacci heaps etc While the

developer should have heard of most of these data structures and should be able to

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 16: Programmer Competency Matrix _ Sijin Joseph

As for PowerShell I think I agree with you at least a little bit You make it sound useful

for the same sort of glue-code that Python and Perl is used for in the Unix world and in

that case yoursquore right and Irsquom wrong

Sijin Joseph (HttpSijinjosephCom) May 9 2014 at 1043

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3691)

Thank you Irsquoll incorporate this feedback into my next revision

Izkata May 21 2014 at 2218 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3694)

Itrsquos a bit excessive (weeks yeesh) but is otherwise a fairly accurate description of

usability testing

We tend to have one person doing the testing then the whole team secretly watches

through webcam+screen sharing to see how they react and what they do

Miraculixx June 11 2014 at 1720 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3698)

Irsquom questioning the focus on Erlang and Prolog and dynamic programming for log(n)

These are very particular elds and are not on par with all the other log(n) areas

Michael Bostwick June 13 2014 at 1315 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3699)

hellipI wish there was a PDF download

Allister Quinn June 18 2014 at 0817 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3701)

So someone with a rst class degree in Computer Science going for a software

engineering job would be expected to be somewhere between Level 1 and Level 2

Rodrigo Haguiuda July 10 2014 at 1526 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3702)

Could you provide a printer friendly version of the matrix

2Triangle July 11 2014 at 0501 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3703)

So I just graduated High School and have been reading SICP and TAOCP on-lsquonrsquo-o for

half a year Irsquom still trying to implement Chapter 1 Reading through the next chapters is

fun but itrsquos not fullling because I havenrsquot fully understood the rst

Are these books just too hard On Amazon therersquos a great review for TAOCP ldquoI bought

this bookset because they look nice on my wall And chicks think Irsquom smartrdquo Irsquom guessing

not many people have read it

Sijin Joseph (HttpSijinjosephCom) July 11 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3704)

My recommendation would be to skim through the books and keep coming back to the

books over the years as you gain more experience Yoursquoll learn something new every

time

Focus on building stu algorithms are only one aspect of software engineering building

stu will expose you to more aspects that will be more valuable to you in the early

stages

James Hawk III July 29 2014 at 1713 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3708)

Well I guess thatrsquos one guyrsquos opinion

George September 9 2014 at 1030 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3736)

Ultimately many interview questions are garbage since they simply reward those

people who memorize answers In your job are you allowed to look at MSDN do google

searches etc to solve problems The answer is likely yes Why are interviews so

dierent Itrsquos like taking a test in college In college you crammed and memorized the

info for that specic test but had no real understanding of it to use in the real world

For instance on a recent interview for a Sr Level developer they asked what indexes

are and the dierence between clustered and non-clustered indexes in SQL I knew

what indexes are but couldnrsquot recall the dierence between non-clustered and clustered

indexes The reality is who cares If I need to know the dierences thatrsquos what google is

for The best software developers are the ones who have a built-in curiosity about

technical things know how to research things and use that in their daily development

Irsquom coming to the conclusion that most tech interviews are a waste of time for everyone

involved Instead put the person in front of a PC give them an hour to write some

simple programs which illustrate their skill level This will be a far more accurate

assessment of the personrsquos skill than technical questions would give you And it gives

the interviewer the opportunity to go more in depth and ask about design decisions

performance issues and see the persons thought process on how they gure out stu

they donrsquot know about

But given that we live in the real world the matrix is a helpful starting point to know

what areas software engineers may need to brush up on for interviews I will give my

own critique of it from my 20 years of CC++C experience

Most people will never have the Level 3 (or even Level 2) knowledge in some areas

because they donrsquot use that skill set on a daily basis or the framework they use

abstracts things for them

For instance how often do does the average developer in a modern language think of

advanced data structures like B-trees binomial amp bonacci heaps etc While the

developer should have heard of most of these data structures and should be able to

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 17: Programmer Competency Matrix _ Sijin Joseph

So someone with a rst class degree in Computer Science going for a software

engineering job would be expected to be somewhere between Level 1 and Level 2

Rodrigo Haguiuda July 10 2014 at 1526 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3702)

Could you provide a printer friendly version of the matrix

2Triangle July 11 2014 at 0501 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3703)

So I just graduated High School and have been reading SICP and TAOCP on-lsquonrsquo-o for

half a year Irsquom still trying to implement Chapter 1 Reading through the next chapters is

fun but itrsquos not fullling because I havenrsquot fully understood the rst

Are these books just too hard On Amazon therersquos a great review for TAOCP ldquoI bought

this bookset because they look nice on my wall And chicks think Irsquom smartrdquo Irsquom guessing

not many people have read it

Sijin Joseph (HttpSijinjosephCom) July 11 2014 at 0935

(httpsijinjosephcomprogrammer-competency-matrixcomment-page-1comment-3704)

My recommendation would be to skim through the books and keep coming back to the

books over the years as you gain more experience Yoursquoll learn something new every

time

Focus on building stu algorithms are only one aspect of software engineering building

stu will expose you to more aspects that will be more valuable to you in the early

stages

James Hawk III July 29 2014 at 1713 (httpsijinjosephcomprogrammer-

competency-matrixcomment-page-1comment-3708)

Well I guess thatrsquos one guyrsquos opinion

George September 9 2014 at 1030 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3736)

Ultimately many interview questions are garbage since they simply reward those

people who memorize answers In your job are you allowed to look at MSDN do google

searches etc to solve problems The answer is likely yes Why are interviews so

dierent Itrsquos like taking a test in college In college you crammed and memorized the

info for that specic test but had no real understanding of it to use in the real world

For instance on a recent interview for a Sr Level developer they asked what indexes

are and the dierence between clustered and non-clustered indexes in SQL I knew

what indexes are but couldnrsquot recall the dierence between non-clustered and clustered

indexes The reality is who cares If I need to know the dierences thatrsquos what google is

for The best software developers are the ones who have a built-in curiosity about

technical things know how to research things and use that in their daily development

Irsquom coming to the conclusion that most tech interviews are a waste of time for everyone

involved Instead put the person in front of a PC give them an hour to write some

simple programs which illustrate their skill level This will be a far more accurate

assessment of the personrsquos skill than technical questions would give you And it gives

the interviewer the opportunity to go more in depth and ask about design decisions

performance issues and see the persons thought process on how they gure out stu

they donrsquot know about

But given that we live in the real world the matrix is a helpful starting point to know

what areas software engineers may need to brush up on for interviews I will give my

own critique of it from my 20 years of CC++C experience

Most people will never have the Level 3 (or even Level 2) knowledge in some areas

because they donrsquot use that skill set on a daily basis or the framework they use

abstracts things for them

For instance how often do does the average developer in a modern language think of

advanced data structures like B-trees binomial amp bonacci heaps etc While the

developer should have heard of most of these data structures and should be able to

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 18: Programmer Competency Matrix _ Sijin Joseph

Well I guess thatrsquos one guyrsquos opinion

George September 9 2014 at 1030 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3736)

Ultimately many interview questions are garbage since they simply reward those

people who memorize answers In your job are you allowed to look at MSDN do google

searches etc to solve problems The answer is likely yes Why are interviews so

dierent Itrsquos like taking a test in college In college you crammed and memorized the

info for that specic test but had no real understanding of it to use in the real world

For instance on a recent interview for a Sr Level developer they asked what indexes

are and the dierence between clustered and non-clustered indexes in SQL I knew

what indexes are but couldnrsquot recall the dierence between non-clustered and clustered

indexes The reality is who cares If I need to know the dierences thatrsquos what google is

for The best software developers are the ones who have a built-in curiosity about

technical things know how to research things and use that in their daily development

Irsquom coming to the conclusion that most tech interviews are a waste of time for everyone

involved Instead put the person in front of a PC give them an hour to write some

simple programs which illustrate their skill level This will be a far more accurate

assessment of the personrsquos skill than technical questions would give you And it gives

the interviewer the opportunity to go more in depth and ask about design decisions

performance issues and see the persons thought process on how they gure out stu

they donrsquot know about

But given that we live in the real world the matrix is a helpful starting point to know

what areas software engineers may need to brush up on for interviews I will give my

own critique of it from my 20 years of CC++C experience

Most people will never have the Level 3 (or even Level 2) knowledge in some areas

because they donrsquot use that skill set on a daily basis or the framework they use

abstracts things for them

For instance how often do does the average developer in a modern language think of

advanced data structures like B-trees binomial amp bonacci heaps etc While the

developer should have heard of most of these data structures and should be able to

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 19: Programmer Competency Matrix _ Sijin Joseph

Leave a Reply

Enter your comment here

76 Trackbacks

1 Null Pointer raquo My Tweets raquo My Weekly Twitter Updates for 2010-01-17

(httpnullpointerdebashishcommy-weekly-twitter-updates-for-2010-01-17)

(Pingback)

2 Destillat 22-01-2010 | duetschinfo - Open Source Wet- Web- Software

(httpwwwduetschinfodestillat-22-01-2010html) (Pingback)

look them up the reality is that no one in this day and age of API frameworks will roll

their own except in highly specialized circumstances If yoursquore coding in NET yoursquoll use

the Dictionary class (or some variant) to implement a hashtable List to implement a

Linked List etc While thinking about data structures the most important is to select the

one which works for your problem Performance is not a major concern usually unless

you are talking about big data

The API row is one which I have to take issue with The experienced developer should

indeed have extensive knowledge for the API and know how to lookup and nd the

APIrsquos they need However itrsquos nearly impossible unless you have a photographic

memory to memorize and recall all aspects of the API from memory Thatrsquos what

intellisense and Google is for For example Irsquove done extensive multithreading in C++ I

havenrsquot done as much in CNET so I donrsquot remember all the exact syntax in NET unless

I look it up But I completely understand what is involved and how to design

multithreaded programs But if someone simply asked me to list the exact NET

multithreading syntax I wouldnrsquot do so well and so theyrsquod think I know nothing about

multithreading which is incorrect

John September 14 2014 at 1529 (httpsijinjosephcomprogrammer-competency-

matrixcomment-page-1comment-3743)

why logn and 2^n in matrix columns are you also meant to calculate score based on

this matrix

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 20: Programmer Competency Matrix _ Sijin Joseph

3 My Weekly Twitter Updates for 2010-01-17 | BlogHaltcom (Pre-Launch)

(httpwwwbloghaltcom201001my-weekly-twitter-updates-for-2010-01-17)

(Pingback)

4 laquo

(httpcblpsublog20090409d0bcd0b0d182d180d0b8d186d0b0-

d0bad0bed0bcd0bfd0b5d182d0b5d0bdd182d0bdd0bed181d182d0b8-

d0bfd180d0bed0b3d180d0b0d0b) (Pingback)

5 Feedmastering 102 | Dario Salvellis Blog

(httpwwwdariosalvellicom200904feedmastering-102) (Pingback)

6 Programmer Competency Matrix (httpwwwflorian-

leitnerdeindexphp20100907programmer-competency-matrix) (Pingback)

7 New Yearrsquos Report - Philip Bjorge (httpwwwphilipbjorgecom20120108new-years-

report) (Pingback)

8 A Great Developer laquo TM (httpthangmaiwordpresscom20120816a-great-

developer) (Pingback)

9 raquo Programmer competency matrix para fugaz

(httpwwwfugaznet20121005programmer-competency-matrix) (Pingback)

10 Programmer Competency Matrix laquo Cyberiafreak

(httpmaheshkumarwordpresscom20121119programmer-competency-matrix)

(Pingback)

11 Most interesting links of May rsquo13 laquo The Holy Java

(httptheholyjavawordpresscom20130531most-interesting-links-of-may-13)

(Pingback)

12 Programming Competency Matrix | nickburns2013

(httpnickburns2013wordpresscom20130605programming-competency-matrix)

(Pingback)

13 Matriz de Competecircncias | Marcio Belo

(httpmbelowordpresscom20130619matrix-de-competencias) (Pingback)

14 Released Programming Quiz on Android | Janos Gyerik

(httpwwwjanosgyerikcomreleased-programming-quiz-on-android) (Pingback)

15 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)

Page 21: Programmer Competency Matrix _ Sijin Joseph

16 hellip | glidename -

(httpglidename201308programmers-professional-skills-poster-matrix) (Pingback)

17 Free Online Resources (Programming CompSci Math) | GirlnCode

(httpgirlncodewordpresscom20130807free-online-resources-programming-

compsci-math) (Pingback)

18 programmer-competency-matrix | Design Zombie

(httpdeszomwordpresscom20130821programmer-competency-matrix)

(Pingback)

19 So it begins | This is not for you (httphenzigercom20130907so-it-begins)

(Pingback)

20 REHR RWUCK (httpulurokiwordpresscom2013101457) (Pingback)

21 The judicious selection of what to learn next raquo Big Nerd Ranch Blog

(httpblogbignerdranchcom4426-judicious-selection-learn-next) (Pingback)

22 CMM | McGowanFam (httpwwwmcgowanfamcom20130620cmm) (Pingback)

23 2013 | (httphedengchengcomp=828) (Pingback)

24 Learning Programming | Dorais Learn Log (httpdoraime20131231learning-

programming) (Pingback)

25 Programmer Competency Matrix | Paul Willis Stuff

(httppaulwilliswordpresscom20140326programmer-competency-matrix)

(Pingback)

26 Become An Excellent Programmer | Shans Software Vexations

(httpshansvexwordpresscom20140713become-an-excellent-programmer)

(Pingback)

copy 2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework

(httpsrtcampcomrtpanel)