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 business problem and come up with the technical strategy (push vs pull etc, real time vs batches, sync vs async) within the team, high level design and lead the implementation
- Need minimal directions or guidance and collaborate with SDEs across teams working on the same or similar business problem
- You showcase exemplary behaviour in your work your design, delivery, code, processes all set examples for your team
- Influence your team s technical and business strategy by suggesting novel approaches
- Able to communicate your ideas and get feedback from different stakeholders and drive convergence to achieve the right outcomes
- Proactively mentor the rest of the team and help in hiring
- Ensure design or architectural deficiencies are addressed and routinely simplify integration of your peer teams with your team s software
Consistently lead delivery of valuable features
- Continually propose and drive process improvements
- Help elaborate requirements where necessary
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 o 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
- 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 consist
- Understand how to design for performance at all levels
Development Practice
- Automate everything by default
- Automate security scanning and performance testing as part of the 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 technologie
Security
- Write secure code by default
- Use tools to perform deep security probes
- Understand server hardening
Qualifications Java backend