Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
700 views

Programmer Competency Matrix

The document provides a competency matrix for programmers with four levels of competency: Level 0, Level 1, Level 2, and Level 3. It describes the expected knowledge in areas like computer science, software engineering, programming, and experience for each level. The knowledge described is cumulative, with higher levels building on the knowledge of lower levels. Some examples of expected knowledge include basic data structures and algorithms at lower levels, and more advanced topics like dynamic programming, systems programming, test automation, and design of complex systems at higher levels.

Uploaded by

bmkmanoj
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
700 views

Programmer Competency Matrix

The document provides a competency matrix for programmers with four levels of competency: Level 0, Level 1, Level 2, and Level 3. It describes the expected knowledge in areas like computer science, software engineering, programming, and experience for each level. The knowledge described is cumulative, with higher levels building on the knowledge of lower levels. Some examples of expected knowledge include basic data structures and algorithms at lower levels, and more advanced topics like dynamic programming, systems programming, test automation, and design of complex systems at higher levels.

Uploaded by

bmkmanoj
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

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)

n2(Level1)

n(Level2)

log(n)(Level3)

datastructures

Doesn'tknow
thedifference
betweenArray
andLinkedList

Abletoexplainanduse
Arrays,LinkedLists,
Dictionariesetcinpractical
programmingtasks

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

Knowledgeofadvanced
datastructureslikeBtrees,
binomialandfibonacci
heaps,AVL/RedBlacktrees,
SplayTrees,SkipLists,tries
etc.

algorithms

Unabletofind
theaverageof
numbersinan
array(It'shard
tobelievebut
I've
interviewed
such
candidates)

Tree,Graph,simplegreedyanddivide
andconqueralgorithms,isableto
understandtherelevanceofthelevels
ofthismatrix.

Abletorecognizeandcode
dynamicprogramming
solutions,goodknowledge
ofgraphalgorithms,good
knowledgeofnumerical
computationalgorithms,
abletoidentifyNP
problemsetc.

Understandskernelmodevs.user
mode,multithreading,
synchronizationprimitivesandhow
they'reimplemented,abletoread
assemblycode.Understandshow
networkswork,understandingof
networkprotocolsandsocketlevel
programming.

Understandstheentire
programmingstack,
hardware(CPU+Memory+
Cache+Interrupts+
microcode),binarycode,
assembly,staticand
dynamiclinking,
compilation,interpretation,
JITcompilation,garbage
collection,heap,stack,
memoryaddressing...

systems
programming

Doesn'tknow
whata
compiler,
linkeror
interpreteris

Basicsorting,searchingand
datastructuretraversaland
retrievalalgorithms

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

Comments

Workingwith
someonewho
hasagood
topcoder
rankingwould
bean
unbelievable
pieceofluck!

SoftwareEngineering

sourcecode
versioncontrol

2n(Level0)
Folderbackups
bydate

n2(Level1)

n(Level2)

log(n)(Level3)

VSSandbeginningCVS/SVN
user

ProficientinusingCVSandSVN
features.Knowshowtobranchand
merge,usepatchessetuprepository
propertiesetc.

Knowledgeofdistributed
VCSsystems.Hastriedout
Bzr/Mercurial/Darcs/Git

Cansetupascripttobuildthebasic
system

Cansetupascripttobuild
thesystemandalso
documentation,installers,
generatereleasenotesand
tagthecodeinsource
control

build
automation

Onlyknows
howtobuild
fromIDE

Knowshowtobuildthe
systemfromthecommand
line

automated
testing

Thinksthatall
testingisthe
jobofthe
tester

Haswrittenautomatedunit
testsandcomesupwith
goodunittestcasesforthe
codethatisbeingwritten

HaswrittencodeinTDDmanner

Understandsandisableto
setupautomated
functional,
load/performanceandUI
tests

n2(Level1)

n(Level2)

log(n)(Level3)

Abletocomeupwithreusable
functions/objectsthatsolvethe
overallproblem

Useofappropriatedata
structuresandalgorithms
andcomesupwith
generic/objectoriented
codethatencapsulate
aspectsoftheproblemthat
aresubjecttochange.

Comments

Programming

problem
decomposition

systems

2n(Level0)
Onlystraight
linecodewith
copypastefor
reuse

Notableto
thinkabove

Abletobreakupproblem
intomultiplefunctions

Abletobreakupproblem
spaceanddesignsolutionas

Abletodesignsystemsthatspan

Abletovisualizeanddesign
complexsystemswith
multipleproductlinesand
integrationswithexternal

Comments

decomposition

communication

thelevelofa
singlefile/class

Cannot
express
thoughts/ideas
topeers.Poor
spellingand
grammar.

longasitiswithinthesame
platform/technology

Peerscanunderstandwhat
isbeingsaid.Goodspelling
andgrammar.

multipletechnologies/platforms.

systems.Alsoshouldbe
abletodesignoperations
supportsystemslike
monitoring,reporting,fail
oversetc.

Isabletoeffectivelycommunicate
withpeers

Abletounderstandand
communicate
thoughts/design/ideas/specs
inaunambiguousmanner
andadjustscommunication
asperthecontext

code
organization
withinafile

noevidenceof
organization
withinafile

Methodsaregrouped
logicallyorbyaccessibility

Codeisgroupedintoregionsandwell
commentedwithreferencestoother
sourcefiles

Filehaslicenseheader,
summary,wellcommented,
consistentwhitespace
usage.Thefileshouldlook
beautiful.

2n(Level0)

n2(Level1)

n(Level2)

log(n)(Level3)

code
organization
acrossfiles

Nothought
givento
organizing
codeacross
files

Eachphysicalfilehasaunique
purpose,fore.g.oneclassdefinition,
onefeatureimplementationetc.

Codeorganizationata
physicallevelclosely
matchesdesignandlooking
atfilenamesandfolder
distributionprovides
insightsintodesign

Relatedfilesaregrouped
intoafolder

Thisisanoften
underrated
butverycritical
criteriafor
judginga
programmer.
Withthe
increasein
outsourcingof
programming
taskstoplaces
whereEnglish
isnotthe
nativetongue
thisissuehas
becomemore
prominent.I
knowof
several
projectsthat
failedbecause
the
programmers
couldnot
understand
whattheintent
ofthe
communication
was.

Comments

Thedifference

sourcetree
organization

Everythingin
onefolder

Basicseparationofcode
intologicalfolders.

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

Physicallayoutofsource
treematcheslogical
hierarchyandorganization.
Thedirectorynamesand
organizationprovide
insightsintothedesignof
thesystem.

code
readability

Monosyllable
names

Goodnamesforfiles,
variablesclasses,methods
etc.

Nolongfunctions,comments
explainingunusualcode,bugfixes,
codeassumptions

Codeassumptionsare
verifiedusingasserts,code
flowsnaturallynodeep
nestingofconditionalsor
methods

defensive
coding

Doesn't
understandthe
concept

Checksallargumentsand
assertscriticalassumptions
incode

Makessuretocheckreturnvaluesand
checkforexceptionsaroundcode
thatcanfail.

Hashisownlibrarytohelp
withdefensivecoding,
writesunitteststhat
simulatefaults

2n(Level0)

n2(Level1)

n(Level2)

log(n)(Level3)

errorhandling

Onlycodesthe
happycase

Basicerrorhandlingaround
codethatcanthrow
exceptions/generateerrors

Ensuresthaterror/exceptionsleave
programingoodstate,resources,
connectionsandmemoryisall
cleanedupproperly

Codestodetectpossible
exceptionbefore,maintain
consistentexception
handlingstrategyinall
layersofcode,comeup
withguidelineson
exceptionhandlingfor
entiresystem.

IDE

Mostlyuses
IDEfortext
editing

Knowstheirwayaroundthe
interface,abletoeffectively
usetheIDEusingmenus.

Knowskeyboardshortcutsformost
usedoperations.

Haswrittencustommacros

API

Needstolook
upthe
documentation
frequently

Hasthemostfrequently
usedAPIsinmemory

VastandIndepthknowledgeofthe
API

Haswrittenlibrariesthatsit
ontopoftheAPItosimplify
frequentlyusedtasksandto
fillingapsintheAPI

Hasnotused
anyframework
outsideofthe

Hasheardaboutbutnot
usedthepopular
frameworksavailablefor

Hasusedmorethanoneframeworkin
aprofessionalcapacityandiswell
versedwiththeidiomsofthe

frameworks

Authorofframework

betweenthis
andthe
previousitem
isinthescale
of
organization,
sourcetree
organization
relatestothe
entiresetof
artifactsthat
definethe
system.

Comments

E.g.ofAPIcan
beJavalibrary,
.netframework
orthecustom
APIforthe
application

coreplatform

theplatform.

frameworks.

2n(Level0)

n2(Level1)

n(Level2)

log(n)(Level3)

requirements

Takesthe
given
requirements
andcodesto
spec

Comeupwithquestions
regardingmissedcasesin
thespec

Understandcompletepictureand
comeupwithentireareasthatneed
tobespeced

Abletosuggestbetter
alternativesandflowsto
givenrequirementsbased
onexperience

scripting

Noknowledge
ofscripting
tools

Batchfiles/shellscripts

Perl/Python/Ruby/VBScript/Powershell

Haswrittenandpublished
reusablecode

Knowsbasicdatabase
concepts,normalization,
ACID,transactionsandcan
writesimpleselects

Abletodesigngoodandnormalized
databaseschemaskeepinginmind
thequeriesthat'llhavetoberun,
proficientinuseofviews,stored
procedures,triggersanduserdefined
types.Knowsdifferencebetween
clusteredandnonclusteredindexes.
ProficientinuseofORMtools.

Candobasicdatabase
administration,
performanceoptimization,
indexoptimization,write
advancedselectqueries,
abletoreplacecursorusage
withrelationalsql,
understandshowdatais
storedinternally,
understandshowindexes
arestoredinternally,
understandshowdatabases
canbemirrored,replicated
etc.Understandshowthe
twophasecommitworks.

2n(Level0)

n2(Level1)

n(Level2)

log(n)(Level3)

Imperativeor
Object
Oriented

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

Functional,addedbonusifthey
understandlazyevaluation,currying,
continuations

Concurrent(Erlang,Oz)and
Logic(Prolog)

database

Thinksthat
Excelisa
database

Comments

Experience

languageswith
professional
experience

Comments

platformswith
professional
experience

23

45

6+

yearsof
professional
experience

25

69

10+

Hasworkedonatleastone
productinthedomain.

Hasworkedonmultipleproductsin
thesamedomain.

Domainexpert.Has
designedandimplemented
severalproducts/solutions
inthedomain.Wellversed
withstandardterms,
protocolsusedinthe
domain.

n2(Level1)

n(Level2)

log(n)(Level3)

Limitedto
primaryIDE
(VS.Net,
Eclipseetc.)

Knowsaboutsome
alternativestopopularand
standardtools.

Goodknowledgeofeditors,
debuggers,IDEs,opensource
alternativesetc.etc.Fore.g.someone
whoknowsmostofthetoolsfrom
ScottHanselman'spowertoolslist.
HasusedORMtools.

Hasactuallywrittentools
andscripts,addedbonusif
they'vebeenpublished.

Imperativeor
Object
Oriented

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

Functional,addedbonusifthey
understandlazyevaluation,currying,
continuations

Concurrent(Erlang,Oz)and
Logic(Prolog)

Hasnever
lookedatthe
codebase

Basicknowledgeofthe
codelayoutandhowto
buildthesystem

Goodworkingknowledgeofcode
base,hasimplementedseveralbug
fixesandmaybesomesmallfeatures.

Hasimplementedmultiple
bigfeaturesinthecodebase
andcaneasilyvisualizethe
changesrequiredformost
featuresorbugfixes.

domain
knowledge

Noknowledge
ofthedomain

Knowledge

tool
knowledge

languages
exposedto

codebase
knowledge

2n(Level0)

Comments

knowledgeof
upcoming
technologies

Hasnotheard
ofthe
upcoming
technologies

2n(Level0)

platform
internals

Zero
knowledgeof
platform
internals

Hasheardofupcoming
technologiesinthefield

Hasdownloadedthealpha
preview/CTP/betaandreadsome
articles/manuals

Hasplayedwiththe
previewsandhasactually
builtsomethingwithitand
asabonussharedthatwith
everyoneelse

n2(Level1)

n(Level2)

log(n)(Level3)

Deepknowledgeofplatforminternals
andcanvisualizehowtheplatform
takestheprogramandconvertsitinto
executablecode.

Haswrittentoolsto
enhanceorprovide
informationonplatform
internals.Fore.g.
disassemblers,decompilers,
debuggersetc.

Hasbasicknowledgeof
howtheplatformworks
internally

books

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

CodeComplete,Don'tMake
meThink,Mastering
RegularExpressions

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

StructureandInterpretation
ofComputerPrograms,
ConceptsTechniques,
ModelsofComputer
Programming,Artof
ComputerProgramming,
Databasesystems,byC.J
Date,ThinkingForth,Little
Schemer

blogs

Hasheardof
thembut
nevergotthe
time.

Reads
tech/programming/software
engineeringblogsand
listenstopodcasts
regularly.

Maintainsalinkblogwithsome
collectionofusefularticlesandtools
thathe/shehascollected

Maintainsabloginwhich
personalinsightsand
thoughtsonprogramming
areshared

Click here to return to the Interview Process page.


Thanks to Sijin Joseph for the original version of this chart.
Thanks to John Haugeland for a reformatting of it that works much more nicely on the web.

Comments

You might also like