Job Description
Software Development Engineers (SDEs) are the creative minds developing the software applications that make life easier for customers. Responsible for the entire development and support process for a software programme. Your applications make previously complex tasks simple with the impact ranging from saving time, effort or money to re-defining normal. Take a problem where technical strategy or approach is defined and come up with the solution design and drives the implementation with a fair level of autonomy including interacting with other SDEs in the same team or peer teams
· Programming:
- Demonstrate a good understanding of at least one major programming language
- Understand the framework and enough of the tool ecosystem of the chosen language to implement end to end components with minimal assistance o Comfortably produce and refactor code without assistance
- Test drive features in programming language of choice o Understand different major language paradigms (OOP/Functional)
- Understand presence of abstraction beneath language (JVM/CLR)
- Reason about complexity of algorithms (time and space) and code (cyclomatic)
- Debug code of Understand and resolve complex issues
· Design
- Identify design patterns in code
- Implement design patterns with guidance
- Comfortably translate small behaviour requirements into tasks & code
- Understand how high-quality code can lead to rapid delivery
- Write clean, maintainable code
- Demonstrate a basic understanding of domains and domain modelling
- Seek out and use appropriate abstractions o Understand patterns for integration (events/services)
- Understand how to leverage existing functionality outside immediate project
- Understand scope of project and when to move behaviour to other services
· Development Practice
- Understand continuous integration and continuous delivery
- Demonstrate a working knowledge of CI tooling
- Writes tests to ensure CI/CD processes work
- Understand BDD/TDD/Performance/Security/Smoke testing
· Infrastructure
- Demonstrate a good working knowledge of one relevant operating system
- Script and automate within relevant environment
· Security
- Understand Oauth/Saml & identity models
