You are on page 1of 21

About (http://sijinjoseph.

com/about/)

Contact (http://sijinjoseph.com/contact/)

Programmer Competency Matrix (http://sijinjoseph.com/programmer-competency-matrix/)

(http://sijinjoseph.com/)

Perspectives on Software, Technology and Business

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.

ComputerScience
2n(Level0)

datastructures

Doesntknow
thedifference
betweenArray
andLinkedList

algorithms

Unabletofind
theaverageof
numbersinan
array(Itshard
tobelievebut
Ive
interviewed
such
candidates)

n2(Level1)

n(Level2)

log(n)

Abletoexplainanduse
Arrays,LinkedLists,
Dictionariesetcinpractical
programmingtasks

Knowsspaceandtimetradeoffsof
thebasicdatastructures,Arraysvs
LinkedLists,Abletoexplainhow
hashtablescanbeimplementedand
canhandlecollisions,Priorityqueues
andwaystoimplementthemetc.

Knowle
datastr
binomia
heaps,A
SplayTr
etc.

Tree,Graph,simplegreedyanddivide
andconqueralgorithms,isableto
understandtherelevanceofthelevels
ofthismatrix.

Ableto
dynami
solution
ofgrap
knowle
comput
ableto
problem

Basicsorting,searchingand
datastructuretraversaland
retrievalalgorithms

Basicunderstandingof

Understandskernelmodevs.user

Unders
program

systems
programming

Doesntknow
whata
compiler,
linkeror
interpreteris

compilers,linkerand
interpreters.Understands
whatassemblycodeisand
howthingsworkatthe
hardwarelevel.Some
knowledgeofvirtual
memoryandpaging.

mode,multithreading,
synchronizationprimitivesandhow
theyreimplemented,abletoread
assemblycode.Understandshow
networkswork,understandingof
networkprotocolsandsocketlevel
programming.

hardwa
Cache+
microco
assemb
dynami
compila
JITcom
collectio
memor

n2(Level1)

n(Level2)

log(n)

VSSandbeginningCVS/SVN
user

ProficientinusingCVSandSVN
features.Knowshowtobranchand
merge,usepatchessetuprepository
propertiesetc.

Knowle
VCSsys
Bzr/Me

Cansetupascripttobuildthebasic
system

Canset
thesyst
docume
generat
tagthe
control

SoftwareEngineering
2n(Level0)
sourcecode
versioncontrol

Folderbackups
bydate

build
automation

Onlyknows
howtobuild
fromIDE

Knowshowtobuildthe
systemfromthecommand
line

automated
testing

Thinksthatall
testingisthe
jobofthe
tester

Haswrittenautomatedunit
testsandcomesupwith
goodunittestcasesforthe
codethatisbeingwritten

HaswrittencodeinTDDmanner

Unders
setupa
function
load/pe
tests

2n(Level0)

n2(Level1)

n(Level2)

log(n)

Abletocomeupwithreusable
functions/objectsthatsolvethe
overallproblem

Useofa
structur
andcom
generic
codeth
aspects
aresub

Abletodesignsystemsthatspan
multipletechnologies/platforms.

Ableto
comple
multiple
integrat
systems
ableto
support
monito
overse

Programming

problem
decomposition

systems
decomposition

Onlystraight
linecodewith
copypastefor
reuse

Notableto
thinkabove
thelevelofa
singlefile/class

Abletobreakupproblem
intomultiplefunctions

Abletobreakupproblem
spaceanddesignsolutionas
longasitiswithinthesame
platform/technology

communication

code
organization
withinafile

code
organization
acrossfiles

sourcetree
organization

Cannot
express
thoughts/ideas
topeers.Poor
spellingand
grammar.

Peerscanunderstandwhat
isbeingsaid.Goodspelling
andgrammar.

Isabletoeffectivelycommunicate
withpeers

Ableto
commu
though
inauna
andadj
aspert

noevidenceof
organization
withinafile

Methodsaregrouped
logicallyorbyaccessibility

Codeisgroupedintoregionsandwell
commentedwithreferencestoother
sourcefiles

Filehas
summa
consiste
usage.T
beautifu

2n(Level0)

n2(Level1)

n(Level2)

log(n)

Eachphysicalfilehasaunique
purpose,fore.g.oneclassdefinition,
onefeatureimplementationetc.

Codeor
physica
matche
atfilen
distribu
insights

Nocirculardependencies,binaries,
libs,docs,builds,thirdpartycodeall
organizedintoappropriatefolders

Physica
treema
hierarch
Thedire
organiz
insights
thesyst

Nothought
givento
organizing
codeacross
files

Everythingin
onefolder

Relatedfilesaregrouped
intoafolder

Basicseparationofcode
intologicalfolders.

Nolongfunctions,comments
explainingunusualcode,bugfixes,
codeassumptions

Codeas
verified
flowsn
nesting
method

code
readability

Monosyllable
names

Goodnamesforfiles,
variablesclasses,methods
etc.

defensive
coding

Doesnt
understandthe
concept

Checksallargumentsand
assertscriticalassumptions
incode

Makessuretocheckreturnvaluesand
checkforexceptionsaroundcode
thatcanfail.

Hashis
withde
writesu
simulat

2n(Level0)

n2(Level1)

n(Level2)

log(n)

Ensuresthaterror/exceptionsleave
programingoodstate,resources,
connectionsandmemoryisall
cleanedupproperly

Codest
excepti
consiste
handlin
layerso
withgu
excepti
entires

errorhandling

Onlycodesthe
happycase

Basicerrorhandlingaround
codethatcanthrow
exceptions/generateerrors

IDE

Mostlyuses
IDEfortext
editing

Knowstheirwayaroundthe
interface,abletoeffectively
usetheIDEusingmenus.

Knowskeyboardshortcutsformost
usedoperations.

Haswri

API

Needstolook
upthe
documentation
frequently

Hasthemostfrequently
usedAPIsinmemory

VastandIndepthknowledgeofthe
API

Haswri
ontopo
frequen
fillinga

frameworks

Hasnotused
anyframework
outsideofthe
coreplatform

Hasheardaboutbutnot
usedthepopular
frameworksavailablefor
theplatform.

Hasusedmorethanoneframeworkin
aprofessionalcapacityandiswell
versedwiththeidiomsofthe
frameworks.

Author

2n(Level0)

n2(Level1)

n(Level2)

log(n)

requirements

Takesthe
given
requirements
andcodesto
spec

Comeupwithquestions
regardingmissedcasesin
thespec

Understandcompletepictureand
comeupwithentireareasthatneed
tobespeced

Ableto
alternat
givenre
onexpe

scripting

Noknowledge
ofscripting
tools

Batchfiles/shellscripts

Perl/Python/Ruby/VBScript/Powershell

Haswri
reusabl

Abletodesigngoodandnormalized

Cando
adminis
perform
indexo
advance

Thinksthat
Excelisa
database

Knowsbasicdatabase
concepts,normalization,
ACID,transactionsandcan
writesimpleselects

databaseschemaskeepinginmind
thequeriesthatllhavetoberun,
proficientinuseofviews,stored
procedures,triggersanduserdefined
types.Knowsdifferencebetween
clusteredandnonclusteredindexes.
ProficientinuseofORMtools.

ableto
withrel
underst
storedi
underst
arestor
underst
canbem
etc.Un
twopha

2n(Level0)

n2(Level1)

n(Level2)

log(n)

languageswith
professional
experience

Imperativeor
Object
Oriented

Imperative,ObjectOriented
anddeclarative(SQL),
addedbonusifthey
understandstaticvs
dynamictyping,weakvs
strongtypingandstatic
inferredtypes

Functional,addedbonusifthey
understandlazyevaluation,currying,
continuations

Concurr
Logic(P

platformswith
professional
experience

23

45

6+

yearsof
professional
experience

25

69

10+

database

Experience

domain
knowledge

Noknowledge
ofthedomain

Hasworkedonatleastone
productinthedomain.

Hasworkedonmultipleproductsin
thesamedomain.

Domain
designe
several
inthed
withsta
protoco
domain

2n(Level0)

n2(Level1)

n(Level2)

log(n)

Knowsaboutsome
alternativestopopularand
standardtools.

Goodknowledgeofeditors,
debuggers,IDEs,opensource
alternativesetc.etc.Fore.g.someone
whoknowsmostofthetoolsfrom
ScottHanselmanspowertoolslist.
HasusedORMtools.

Hasact
andscr
theyve

Functional,addedbonusifthey
understandlazyevaluation,currying,
continuations

Concurr
Logic(P

Knowledge

tool
knowledge

languages
exposedto

Limitedto
primaryIDE
(VS.Net,
Eclipseetc.)

Imperativeor
Object
Oriented

Imperative,ObjectOriented
anddeclarative(SQL),
addedbonusifthey
understandstaticvs
dynamictyping,weakvs

strongtypingandstatic
inferredtypes

Basicknowledgeofthe
codelayoutandhowto
buildthesystem

Goodworkingknowledgeofcode
base,hasimplementedseveralbug
fixesandmaybesomesmallfeatures.

Hasimp
bigfeat
andcan
change
feature

Hasnotheard
ofthe
upcoming
technologies

Hasheardofupcoming
technologiesinthefield

Hasdownloadedthealpha
preview/CTP/betaandreadsome
articles/manuals

Haspla
preview
builtso
asabon
everyon

2n(Level0)

n2(Level1)

n(Level2)

log(n)

Deepknowledgeofplatforminternals
andcanvisualizehowtheplatform
takestheprogramandconvertsitinto
executablecode.

Haswri
enhanc
informa
interna
disasse
debugg

codebase
knowledge

Hasnever
lookedatthe
codebase

knowledgeof
upcoming
technologies

Zero
knowledgeof
platform
internals

platform
internals

Hasbasicknowledgeof
howtheplatformworks
internally

books

Unleashed
series,21days
series,24hour
series,
dummies
series

CodeComplete,DontMake
meThink,Mastering
RegularExpressions

DesignPatterns,Peopleware,
ProgrammingPearls,Algorithm
DesignManual,Pragmatic
Programmer,MythicalManmonth

Structu
ofCom
Concep
Models
Program
Compu
Databa
Date,Th
Scheme

blogs

Hasheardof
thembut
nevergotthe
time.

Reads
tech/programming/software
engineeringblogsand
listenstopodcasts
regularly.

Maintainsalinkblogwithsome
collectionofusefularticlesandtools
thathe/shehascollected

Maintai
persona
though
aresha

Thanks to John Haugeland (http://fullof.bs/) for a


reformatting of it that works much more nicely on the web.

Share this:
Share
Like

230
1.1k

Tweet
7

467

StumbleUpon
More

8points

Share

328

1558

43 Comments

Add your comment

Umnov Denis

December 21, 2011 at 04:57 (http://sijinjoseph.com/programmer-

competency-matrix/comment-page-1/#comment-3541)

Thank you, very useful!

Anonymous

January 24, 2012 at 03:10 (http://sijinjoseph.com/programmer-

competency-matrix/comment-page-1/#comment-3550)

hh

Sdfw

April 3, 2012 at 19:25 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-3558)

Your mom is hot

Zahid Rasool

May 28, 2012 at 02:15 (http://sijinjoseph.com/programmer-

competency-matrix/comment-page-1/#comment-3560)

why

Anders Bornholm (Http://Www.Osirisguitar.Com/)


November 6, 2012 at 08:10 (http://sijinjoseph.com/programmer-competencymatrix/comment-page-1/#comment-3569)

Excellent breakdown of skills.

Sebastien

November 27, 2012 at 07:05 (http://sijinjoseph.com/programmer-

competency-matrix/comment-page-1/#comment-3576)

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

Nomota

November 29, 2012 at 05:50 (http://sijinjoseph.com/programmer-

competency-matrix/comment-page-1/#comment-3577)

Here I want to add at two more skills Documentation.


Documentation (2^n: Dont know which kind of documents should be prepared.
n^2:Knows structured document deliverables within a software project. n: Has his/her
own set of reference documents from multiple projects. log(n): Can design proper
formats and guidelines for a new S/W project.)
O ce Tools Versatility (2^n: Has very basic understanding of O ce tools. n^2: su ers
di culties 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
de nes his/her own macros or template formats. utilizes extra-O ce tools if necessary
in combination with O ce tools)

Sijin

November 29, 2012 at 11:53 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-3578)

Thank you for the feedback. Ill be updating the matrix in the next year and will consider
your feedback.

Yem Gdfather
(Http://Www.Facebook.Com/Yem.Godfather)

December 23,

2012 at 16:23 (http://sijinjoseph.com/programmer-competency-matrix/comment-page-1/#comment3580)

nah, I do agree with the guy, still : anyhow tell us why you think that its a piece of
garbage

Tron

March 3, 2013 at 15:40 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-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 16:23 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-3638)

Great content, bad web design. Looks like a free wordpress theme.

Professional Programmer

December 17, 2013 at 12:04

(http://sijinjoseph.com/programmer-competency-matrix/comment-page-1/#comment-3642)

wheres the smugness, Im 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 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 everything else is bullshit if youre interviewing youll know this in the
rst 2 minutes, if you have to use this matrix to do that youre 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 bet I know where to nd you at parties.

Juan David Pasts Rivera

December 22, 2013 at 03:47

(http://sijinjoseph.com/programmer-competency-matrix/comment-page-1/#comment-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.

Mac>PC

December 30, 2013 at 23:36 (http://sijinjoseph.com/programmer-

competency-matrix/comment-page-1/#comment-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 13:12 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-3651)

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

Brian Deeks

January 3, 2014 at 19:05 (http://sijinjoseph.com/programmer-

competency-matrix/comment-page-1/#comment-3652)

While I disagree with some of these, what I take issue with will be di erent for other
programmersas perhaps they hit too closely to home! Nice list.
You should have one more category: GUI/web application usability.
2^n: Messy dialogs and layouts, unusable interfaces, message boxes everywhere,
horri c colors and icons, skinned interfaces that dont 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, doesnt always follow the speci cation for UI design to the letter in an attempt to
make users 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 worlds rst usable piece of software.
Willing to repeat the process an unlimited number of times with an unlimited amount of
patience.

Sijin Joseph (Http://Sijinjoseph.Com/)

January 4, 2014 at 07:10

(http://sijinjoseph.com/programmer-competency-matrix/comment-page-1/#comment-3655)

Brian Thank you for the feedback. Like the GUI/Web usability idea, but not sure if
youre kidding about log(n) level

Neil Terry

January 5, 2014 at 12:56 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-3657)

Ive 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 02:08 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-3660)

Nice matrix.

MediumMech

February 24, 2014 at 00:58 (http://sijinjoseph.com/programmer-

competency-matrix/comment-page-1/#comment-3664)

Yes, it was a rather blunt wake-up call for me. I always assume theres someone better
than me and Im 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 09:46 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-3668)

Ive 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

>..
< this much to learn to be competent, and I don't think Disqus will let me put enough
dots in to describe what it would take to be a master.

Martin

March 10, 2014 at 09:45 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-3669)

1) I would have used the scale in reverse, then it (sort of) becomes a measure of
productivity? 2) Add a category for S/W Life Cycle with rows such as system analysis,
documentation, project planning, CMMI? Ranges from No clue, understands concepts,
runs with scissors, works with designsS/W Maintenance, can write them well, able to
implement and improve process.

Sijin Joseph (Http://Sijinjoseph.Com/)

March 10, 2014 at 10:59

(http://sijinjoseph.com/programmer-competency-matrix/comment-page-1/#comment-3670)

Thank you for the feedback Martin. Will incorporate into next version.

Gyubok

March 16, 2014 at 14:14 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-3673)

Its because hes missing the ui/ux section

WebDeva

March 18, 2014 at 11:18 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-3675)

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


jobs. Based on your matrix, Im 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 04:14 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-3678)

+1 for Documentation (can add, use of Pandoc/Markdown/Asciidoc/Docbook in case of


log(n) )

Vishal

April 2, 2014 at 09:51 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-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 09:35

(http://sijinjoseph.com/programmer-competency-matrix/comment-page-1/#comment-3685)

Everything Crushed! I am a ZERO! (average score) This is one hell of a list to live up to.
Ive been, well I guess now, wasting the past decade of my life. I have an interview this
week and I now feel like Im bringing squat to the table. So much work to do Is there a
future in MS Access Db Development?.. Yeah right.

Dirk Herrmann

April 22, 2014 at 04:01 (http://sijinjoseph.com/programmer-

competency-matrix/comment-page-1/#comment-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 0..3. Combined with the

expressions this leads to the following: 2^n with n=0 gives 1, n^2 with n=1 gives 1, 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 clari cation.

HaakonKL

May 3, 2014 at 03:47 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-3687)

So Im just a student, but I have a few questions:


Why is the Little Schemer in the Level 3 grouping?
Its 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?
Its a shell, you script it, its 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, isnt Scotts list a bit Windows-user speci c? Half the things
there at least is not about coding.
If youre an Emacs, OSX, or Linux user, you pretty much have about 90% of this stu
already, and the rest is preference.

Sijin Joseph (Http://Sijinjoseph.Com/)

May 6, 2014 at 08:22

(http://sijinjoseph.com/programmer-competency-matrix/comment-page-1/#comment-3688)

Hi HaakonKL Thank you for your time and feedback. Replies below,
>Why is the Little Schemer in the Level 3 grouping?
>Its not a hard book to read.
Having read this book, shows a di erent type of programmer, one whos interested in
going beyond the how and asking why. Youd be surprised how many programmers
youll run into in your professional life who havent heard of the book or the language
for that matter.

>Why 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 di erent between knowing normalization and applying it based on your
speci c 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 e ectively.
>Why is PowerShell not a shellscript?
>Its a shell, you script it, its 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.
>And speaking about tools, isnt Scotts list a bit Windows-user speci c? Half the things
there at least is not about coding.
>If youre 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 09:12 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-3690)

For OSX/Linux?
man and info is a must.
But theres also stu like sort, uniq, grep, sed, awk, git, etc. for whenever you have text
you want to do things with.
And then theres 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 youre on say,
Ubuntu and dont know how to add in PPAs to get the newest version of some speci c
software you want, then youre 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 youre right and Im wrong.

Sijin Joseph (Http://Sijinjoseph.Com/)

May 9, 2014 at 10:43

(http://sijinjoseph.com/programmer-competency-matrix/comment-page-1/#comment-3691)

Thank you. Ill incorporate this feedback into my next revision.

Izkata

May 21, 2014 at 22:18 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-3694)

Its 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 17:20 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-3698)

Im 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 13:15 (http://sijinjoseph.com/programmer-

competency-matrix/comment-page-1/#comment-3699)

I wish there was a PDF download..

Allister Quinn

June 18, 2014 at 08:17 (http://sijinjoseph.com/programmer-

competency-matrix/comment-page-1/#comment-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 15:26 (http://sijinjoseph.com/programmer-

competency-matrix/comment-page-1/#comment-3702)

Could you provide a printer friendly version of the matrix?

2Triangle

July 11, 2014 at 05:01 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-3703)

So, I just graduated High School and have been reading SICP and TAOCP on-n-o for
half a year. Im still trying to implement Chapter 1. Reading through the next chapters is
fun, but its not ful lling because I havent fully understood the rst.
Are these books just too hard? On Amazon theres a great review for TAOCP: I bought
this bookset because they look nice on my wall. And chicks think Im smart. Im guessing
not many people have read it?

Sijin Joseph (Http://Sijinjoseph.Com/)

July 11, 2014 at 09:35

(http://sijinjoseph.com/programmer-competency-matrix/comment-page-1/#comment-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. Youll 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 17:13 (http://sijinjoseph.com/programmer-

competency-matrix/comment-page-1/#comment-3708)

Well, I guess thats one guys opinion.

George

September 9, 2014 at 10:30 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-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
di erent? Its like taking a test in college. In college, you crammed and memorized the
info for that speci c 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 di erence between clustered and non-clustered indexes in SQL. I knew
what indexes are, but couldnt recall the di erence between non-clustered and clustered
indexes. The reality is, who cares? If I need to know the di erences, thats 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.
Im 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 persons 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 dont 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 C/C++/C# experience.
Most people will never have the Level 3 (or even Level 2) knowledge in some areas,
because they dont 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 & bonacci heaps, etc? While the
developer should have heard of most of these data structures, and should be able to

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 youre coding in .NET, youll 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
APIs they need. However, its nearly impossible, unless you have a photographic
memory, to memorize and recall all aspects of the API from memory. Thats what
intellisense and Google is for. For example, Ive done extensive multithreading in C++. I
havent done as much in C#.NET, so I dont 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 wouldnt do so well, and so theyd think I know nothing about
multithreading, which is incorrect.

John

September 14, 2014 at 15:29 (http://sijinjoseph.com/programmer-competency-

matrix/comment-page-1/#comment-3743)

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

Leave a Reply
Enteryourcommenthere...

76 Trackbacks
1. Null Pointer My Tweets My Weekly Twitter Updates for 2010-01-17
(http://nullpointer.debashish.com/my-weekly-twitter-updates-for-2010-01-17)
(Pingback)
2. Destillat 22-01-2010 | duetsch.info - Open Source, Wet-, Web-, Software
(http://www.duetsch.info/destillat-22-01-2010.html) (Pingback)

3. My Weekly Twitter Updates for 2010-01-17 | BlogHalt.com (Pre-Launch)


(http://www.bloghalt.com/2010/01/my-weekly-twitter-updates-for-2010-01-17/)
(Pingback)
4. ??????? ?????????????? ???????????? ??? ??????????

(http://cblp.su/blog/2009/04/09/%d0%bc%d0%b0%d1%82%d1%80%d0%b8%d1%86%d0%b0

%d0%ba%d0%be%d0%bc%d0%bf%d0%b5%d1%82%d0%b5%d0%bd%d1%82%d0%bd%d0%
%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%b) (Pingback)
5. Feedmastering #102 | Dario Salvelli's Blog
(http://www.dariosalvelli.com/2009/04/feedmastering-102) (Pingback)
6. Programmer Competency Matrix (http://www.florianleitner.de/index.php/2010/09/07/programmer-competency-matrix/) (Pingback)
7. New Years Report - Philip Bjorge (http://www.philipbjorge.com/2012/01/08/new-yearsreport/) (Pingback)
8. A Great Developer TM (http://thangmai.wordpress.com/2012/08/16/a-greatdeveloper/) (Pingback)
9. Programmer competency matrix fugaz
(http://www.fugaz.net/2012/10/05/programmer-competency-matrix/) (Pingback)
10. Programmer Competency Matrix Cyberiafreak
(http://maheshkumar.wordpress.com/2012/11/19/programmer-competency-matrix/)
(Pingback)
11. Most interesting links of May 13 The Holy Java
(http://theholyjava.wordpress.com/2013/05/31/most-interesting-links-of-may-13/)
(Pingback)
12. Programming Competency Matrix | nickburns2013
(http://nickburns2013.wordpress.com/2013/06/05/programming-competency-matrix/)
(Pingback)
13. Matriz de Competncias | Marcio Belo
(http://mbelo.wordpress.com/2013/06/19/matrix-de-competencias/) (Pingback)
14. Released Programming Quiz on Android | Janos Gyerik
(http://www.janosgyerik.com/released-programming-quiz-on-android/) (Pingback)
15. ? ??? ????? ??????? ???? | glide.name - ???? ??????????????? ????????????
(http://glide.name/2013/08/programmers-professional-skills-poster-matrix/) (Pingback)

16. ? ??? ????? ??????? ???? | glide.name - ???? ??????????????? ????????????


(http://glide.name/2013/08/programmers-professional-skills-poster-matrix/) (Pingback)
17. Free Online Resources (Programming, CompSci, Math) | GirlnCode
(http://girlncode.wordpress.com/2013/08/07/free-online-resources-programmingcompsci-math/) (Pingback)
18. programmer-competency-matrix | Design Zombie
(http://deszom.wordpress.com/2013/08/21/programmer-competency-matrix/)
(Pingback)
19. So it begins | This is not for you. (http://henziger.com/2013/09/07/so-it-begins/)
(Pingback)
20. REHR RWUCK. (http://uluroki.wordpress.com/2013/10/14/57/) (Pingback)
21. The judicious selection of what to learn next Big Nerd Ranch Blog
(http://blog.bignerdranch.com/4426-judicious-selection-learn-next/) (Pingback)
22. CMM | McGowanFam (http://www.mcgowanfam.com/2013/06/20/cmm/) (Pingback)
23. 2013????????????? | ???????? (http://hedengcheng.com/?p=828) (Pingback)
24. Learning Programming | Dorai's Learn Log (http://dorai.me/2013/12/31/learningprogramming/) (Pingback)
25. Programmer Competency Matrix | Paul Willis Stuff
(http://paulwillis.wordpress.com/2014/03/26/programmer-competency-matrix/)
(Pingback)
26. Become An Excellent Programmer | Shan's Software Vexations
(http://shansvex.wordpress.com/2014/07/13/become-an-excellent-programmer/)
(Pingback)

2014 - Sijin Joseph Designed on rtPanel WordPress Theme Framework


(https://rtcamp.com/rtpanel/).

You might also like