Programming
o Demonstrate in depth knowledge of IDE, language and toolset in language of choice.
o Implement critical path components in a large or complex or project.
o Demonstrate excellent understanding of language & framework and a good working knowledge of the abstraction layer underneath
o Profile and optimise code o Understand threads, threading model and concurrent programming
o Comfortably test drive any feature/comfortable with TDD cycle
o Demonstrate a good knowledge of other programming languages & paradigms and when to apply them
o Comfortably debug/find complex problems
Design
o Identify and apply appropriate design patterns to problems
o Comfortably develop large features
o Understand Idempotence
o Actively practice the boy scout principle, leaves design, code in a better state than when arrived
o Demonstrate a good understanding of cohesion, SOLID and how to apply
o Understand importance of domain model and can coherently model a problem domain within a given context
o Anticipate medium term (3-6 month) vectors of change and designs and abstracts accordingly
o Understand and appreciate simplicity and the value of removing code
o Understand design patterns such as CQRS and eventual consist
o Understand how to design for performance at all levels
• Development Practice
o Automate everything by default
o Build a CI/CD pipeline
o Automate security scanning and performance testing as part of build
Infrastructure
o Demonstrate a good grasp of multiple operating systems, scripting techniques
o Demonstrate expertise in one database & good grasp of multiple data storage paradigms and when to apply other technologies
o Understand and can automate PaaS technologies
o Understand when to apply appropriate infrastructure technologies
Security
o Write secure code by default
o Use tools to perform deep security probes
o Understand server hardening