ABCDEFGHIJKLMNOPQRSTUV
1
TechnocratArchitectureLeadership
2
Technical SkillSoftware designDevOpsSystems ThinkingSoftware DeliveryVision and OwnershipMentoring/Enabling
3
AdvancedExpert knowledge of more than one programming environment.Strong understanding of how to write maintainable software, rarely if ever makes mistakes that lead to poor maintainabilityIn depth knowledge of how to run the system they are buildingCreates a delivery pipeline that tests non-functionals (security, performance, etc)Understands a broad range of architectural optionsCan re-align a misaligned team.Able to coach and explain technical concepts to all levels (technical and non-technical)
4
Able to kick off complex projects in multiple programming environments.Has strong opinions on software design regardless of implementation languageCan improve any delivery pipelineAble to correctly balance delivery pressure with long term maintenance concernsCan drive an evolutionary architecture and maintain cohesivenessCommunicates a difficult vision effectively (Slices up a big picture into small consumable pieces)Able to provide effective, timely negative feedback that avoids conflict and negative feelings
5
Most technical decisions are well reasonedChooses the correct tool for the job; able to avoid the golden hammer fallacyPrimarily responsible for a delivery programmeBuilds responsible & trusted leaders
6
Able to quickly pick up any programming language or framework Able to find poor software design and will automatically define a sensible roadmap to fix itBalances the urgent with the importantCan coach other people to deal with difficult situations
7
Arbitrates difficult decisions without creating resentmentGenerates healthy situations in difficult circumstances
8
Builds teams values and behaviours to increase effectiveness
9
Can serve the team without losing control
10
11
KnowledgeableCan contribute towards most technical decisions with a workable solutionAvoids and guides team members away from software design pitfallsAble to build a production delivery pipeline from the ground upAwareness of the risks of non-released software Prevents technical debt buildupMaintains a leadership philosophyProvides directive in difficult situations
12
Is able to independantly solve all programming problems that are presentedAble to do a large scale redesignIndepth understanding of shell scriptiing/usageBuilds systems that consider operations firstBuilds a flexible architectureCommunicates a vision effectivelyProvides timely/effective feedback
13
Breaks the rules at the right timesUnderstands when tests are not providing valueIndepth understanding of system securityBuilds responsible & trusted people
14
Able to use multiple programming paradigms (functional, OO, etc)Applys coupling effectivelyBuilds scalable systemsChallanges teams values and behaviours to increase effectiveness
15
Strong understanding of multiple datastorage techniques and technologies.Only uses patterns when they are appropriateAble to drive iterative performance test planUnderstands that the leader is not the team
16
17
18
Independently successfulAble to set up a simple project from scratch in any of the languages within their core competencyCreates the right place when there is no right placeCan build a basic delivery pipelinePerforms adhoc testing around non-functional requirementsHas a plan for dealing with technical debt buildupHas a cohesive technical vision at a project levelCan mentor and enable more junior developers
19
Knows what good looks like, and will apply it all timesUnderstands the idea of 'unit' does not neccesarily mean 'class'Understands a wide variety of dependency management practices and how to choose the right oneDesigns APIs to flexibleCan select the most appropriate architecture given several optionsUnderstands and owns up to own mistakesHas strong situational awareness of people
20
Writes readable code and comments only when neccesaryAwareness of effective couplingGood understanding of shell scripting/usageCreates a cohesive team through positive social interactionsProvides effective feedback
21
Understands good software designIn depth understanding of choosen build toolsPrimarily responsible for a delivery projectCares about the members of their team
22
Can manage external stakeholders effectively
23
24
Experienced BeginnerWorking knowledge of more than one programming language -or- in depth knowledge of a single programming language.Working knowledge of design principlesCan build a basic build pipelineConsiders non-functional requirements of the systemCan look at a problem and quantify a few architectural optionsMaintains vision of a larger piece of work (feature/epic) within the deliveryGuides a weak partner (in a pairing scenario)
25
Asks for help in a timely fashionPuts code in the right placesUnderstands dependency management (ie: rvm, mvn, etc)Understands the need for vision and asks for helpAble to do peer to peer mentorship/enabling
26
Uses the code base a reference point but may not able to understand if it is good or notUnderstands different testing strategies (test pyramid)Explain technical solutions well
27
28
NoviceWorking knowledge of a single programing languageUnderstands basic abstractionsUnderstands basic build tools for a single languageBasic understanding of distributed computingKnows what architecture isMaintains cohesion of a story with rotating pairsInvolved in selecting solution during pairing sessions
29
Can solve problems with directionUnderstand basic automated testingUnderstands the need for automated system managementRequires guidance on selecting the correct architectureMaintains an understanding of how to deliver a story
30
Basic knowledge of system configuration management tools
31
Basic understanding of shell scripting/usage
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100