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