programmer competency matrix _ sijin joseph
DESCRIPTION
Programmer Competency MatrixTRANSCRIPT
(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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)