Structure and Interpretation of Computer Programmers - Rebooting The Programmer Competency Matrix
Structure and Interpretation of Computer Programmers - Rebooting The Programmer Competency Matrix
StructureandInterpretationofComputerProgrammers:RebootingtheProgrammerCompetencyMatrix
StructureandInterpretationofComputerProgrammers
{20130403}
RebootingtheProgrammerCompetencyMatrix
Forthelastcoupleofyears,IvepostedaselfreviewbasedontheProgrammerCompetencyMatrix:onmyowncompetencyfrom2011andonmy
newercompetencefrom2012.
Thisyear,becausewritingonAPPropriateBehaviouriscontinuingapace,IdecidedthatIwantedtoextendthematrix.Justasthebookactsasasort
ofcodercompleteforpeoplewhocanprogramtothinkaboutwhatelsegoesintobeingaprogrammer,thiscouldbetheProgrammerCourtesy
Matrixtopromoteevaluationandreflectiononthoseotherthings.
Subject
2n(Level0)
n2(Level1)
n(Level2)
Canevaluateand
comparetoolsand
usealternatives
wheretheywould
help.
Engagedpair
programmerpair
producesbetter
workthaneither
developeralone.
Tools(version
Usesthetoolsat
control,
handtodothe
continuous
requestedtasks.
integrationetc.)
Understandsthe
giventoolsandputs
themtonoveluses.
Pair
programming
Solitaryworker.
Pairprogramswhen
requested.
TDD
Doesntwrite
tests.
Sometimestests,just
aslikelyafterwriting Writescodetest
first.
thecodeasbefore.
log(n)(Level3)
Comments
Maintainsprogrammersupporttools
orautomationwrappersforexisting
tools.
Enthusiasticpairprogrammerseeks
opportunitiestopairwithnewpeople,
tolearnfromandtoteachtheirpair.
Testinfected:discussesallproblems
intermsofhowtowriteatestto
demonstratethem.
Codetested
Automatestestsatuserinterface,
Teststhehappypath comprehensivelyat integrationandunitlevels,relieson
only.
multiplelevelsof
testoutputtodirectfuture
integration.
developmentwork.
Notresponsible
Designstheoverall
Understandsthetradeoffsinvolvedin
forarchitecture, Designsseparate
projecttosupport
supportingconflictingrequirements,
orapproaches
componentstobea thenecessary
andcanpresentcustomerswith
differentfeatures conceptualfitfor featuresandnon
Higherlevel
Doesnttest
softwaretesting software.
Software
architecture
http://www.sicpers.info/2013/04/rebootingtheprogrammercompetencymatrix/
1/4
6/23/2016
StructureandInterpretationofComputerProgrammers:RebootingtheProgrammerCompetencyMatrix
onanadhoc
basis.
theoverallproject.
functional
requirements.
realisticalternativeoptionswhen
facedwithsuchconflicts.
Commentsexplain
whythecodedoes
whatitdoescode
explainswhatit
does.
Usesdiagrams,longform
documentation(e.g.projectwiki)
whereappropriatetoguideother
developersaroundthecodebase.
Learnsaboutthe
thingsneededto
solvethecurrent
problem.
Abletosynthesise
ideasfromacross
computerscience
andrelated
disciplines.
Apolymathabletouseideasfrom
otherdisciplinesandcraftsandapply
themtoprogramming.
Presentsinformationatlevels
appropriatefordifferentaudiences:
blogreaders,conferencesessions,
books,developermeetupsetc.
Canusemultipleargumentsto
synthesiseareasonedproposaltaking
theconflictsandtradeoffsinthe
differentapproachesintoaccount.
Writesmechanistic
Doesntwriteany documentationas
Documentation documentation.
requiredbylocal
guidelines.
Learning
Notlearning.
Sharing
knowledge
Doesntshare.
Discussesproblems
solvedoncurrent
projectswith
colleagues.
Canextract
solutionsasseparate
chunksof
knowledgeand
sharethemwith
peers,oronblog
posts.
Critical
Analysis
Questionsvendor
Acceptsvendor
recommendations,
recommendations. looksforalternative
views.
Balancesarguments
frommultiple
sources,considers
assumptionsbehind
eachargument.
Choiceof
technology
Communication
Useswhatever
theyretoldto.
Stickswithwhatthey Considersafew
know.
options.
Synthesisespersonalexperienceand
thatofotherstochoosethe
technologythatbestsolvesthe
requirementsoftheproblembeing
considered.
Doesnttalkto
anyone.
Canengagein
discussions
Talkstootherpeople
involvingmembers
aboutcomputing
oftheteambeyond
things.
theprogrammer
group.
Canexpressideasatlevelsandwith
sensitivitiesappropriatetovarious
audiences:teammembers,
competitors,customers,school
childrenetc.
Whiletoomuch
documentationcanindeed
beabadthing,peopletend
toglossoverthefactthat
toolittleisalsoabadthing.
Ivewrittenbeforeontech
conferencesandsharing
information.Itdbegreatto
movefromasmall
collectionoffrequent
speakerstoalargepick
andmixcuratedbythe
conferenceorganisers.
Understandsand
http://www.sicpers.info/2013/04/rebootingtheprogrammercompetencymatrix/
2/4
6/23/2016
StructureandInterpretationofComputerProgrammers:RebootingtheProgrammerCompetencyMatrix
Requirements
Analysis
Buildswhat
peopleaskfor.
Teamwork
Worksaloneon
tasksassignedby
otherteam
members(or
entirelyalone).
discussesconflicts
betweenstated
requirementsand
problemsin
implementingthem
discoversand
incorporatestacit
requirements.
Understandsthe
domaindiscusses
thesoftwareata
peerlevelwith
domainexpertscan
suggestnovel
applicationstosolve
domainproblems.
Doeswhatisasked
byotherteam
membersprovides
feedbackwhen
asked.
Showssome
understandingofthe
teamsgoalspicks
taskstocomplement
thosegoals.
Playsanactiveroleinshapingthe
teamanditsdirectionunderstands
howtobestinvolveeveryoneelseon
theteam.
Isabletoselfassign
workinrelationto
thebusinessgoals
discusses/questions
othertasksin
relationtothose
goals.
Canprovideguidanceonbusiness
directionbasedonknowledgeofthe
marketandcapabilities,orrunsthe
business/businessunit.
Hassomeideaof
Worksonthe
whatthebusiness
Businesssense tasksrequestedby strategyisandwhere
thebusiness.
thetasksassignedfit
intoit.
Professional
ethics
Doeswhatever
theyretold.
Doestoanotheras
theywouldbedone
Doestoanotheras
toweretheyinthe
theywouldbedone othersposition
to(theGoldenRule). (BarryBoehms
ModifiedGolden
Rule).
Understandsthewholesocio
technicalsystemcanidentify
politicaloreconomicproblems
arisingfromsuggestedchangestothe
softwareandproposesolutions(inthe
softwaredomainorotherwise).
Hasamorecomplicatedethical
system,includingcontributingto
society,nondiscrimination,respect
forothersandtheirproperty,and
discoveryandpromulgationofbetter
waystoperformtheircraft.
Everythingintheirworkcanbe
relatedbacktothatsystem.
Thelevel3categoryhere
isbasedlooselyonthe
ACMcodeofethicsbut
alsoreadslikeasummary
oftherestofthetable.
ThisisntnecessarilyacompletereflectiononthethingsinAPPropriateBehaviourbecausethatisstillaworkinprogress,butitsagood
introductiontothesortsofthingsthebooktalksabout,andagoodevaluationofyourownworkinrelationtothenonprogrammingthingsIthink
programmersdo.
Aninterestingpatterntoobserveisthattheleftcolumnofthetableisbasicallydoeswhatyoutellthemtoandtherightcolumnishasacomplex
worldviewencapsulatingbothtechnologicalandsocialissuesthoughthetermsusedontherightaremorespecifictothefactorbeingdiscussed.
ThispatternisanalogoustotheDreyfusmodelofskillacquisition,inwhichpeoplegofromrotelearningofcontextfreerules(i.e.doingwhattheyre
toldtodo)tohavinganintuitivemodelofhowthethingworks(i.e.makingitpartoftheirworldview).
http://www.sicpers.info/2013/04/rebootingtheprogrammercompetencymatrix/
3/4
6/23/2016
StructureandInterpretationofComputerProgrammers:RebootingtheProgrammerCompetencyMatrix
PostedbyGrahamonWednesday,April3,2013,at12:00pm.Filedunderadvancement
oftheself.FollowanyresponsestothispostwithitscommentsRSSfeed.Commentsare
closed,butyoucantrackbackfromyourblog.
{2}Trackbacks
1.Keepingtrackofyourcompetencyasaprogrammer|June20,2013at5:55am|Permalink
[]ProgrammerCompetencyMatrixrebooted,whichisthesamethingbutextended.[]
2.ThejudiciousselectionofwhattolearnnextBigNerdRanchBlog|December6,2013at11:27pm|Permalink
[]IregularlycheckmyprogrammingabilityagainsttheProgrammerCompetencyMatrix(andevencreatedmyownversiontoaddress
thingsthatweremissingfromtheoriginal).Therulesforthesechartsaresimple.For[]
http://www.sicpers.info/2013/04/rebootingtheprogrammercompetencymatrix/
4/4