- Demonstrate in depth knowledge of IDE language and toolset JAVA.
- 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
Qualifications JAVA Azure GitHub DevOps
Additional Information Java, Spring, Microservices, CI/CD etc