Software Development Engineer II
Tesco Technology
Key Responsibilities
- 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.
- Collaborate with SDEs across teams working on the same or similar business problems with minimal directions or guidance.
- Showcase exemplary behavior in design, delivery, and code processes, setting examples for the team.
- Influence the team’s technical and business strategy by suggesting novel approaches.
- Communicate ideas, get feedback from different stakeholders, and drive convergence to achieve the right outcomes.
- Proactively mentor the rest of the team and assist in hiring.
- Ensure design or architectural deficiencies are addressed and routinely simplify the integration of peer teams with your team’s software.
- Consistently lead the delivery of valuable features.
- Continually propose and drive process improvements.
- Help elaborate requirements where necessary.
Development Practice
- Automate everything by default.
- Build a CI/CD pipeline.
- Automate security scanning and performance testing as part of the build.
Requirements & Tech Stack
- Demonstrate in-depth knowledge of IDE language and toolset in the language of choice.
- Implement critical path components in a large or complex project.
- Demonstrate excellent understanding of language & framework and a good working knowledge of the abstraction layer underneath.
- Profile and optimize 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.
- Identify and apply appropriate design patterns to problems.
- Comfortably develop large features.
- Understand Idempotence.
- Actively practice the boy scout principle (leave design/code in a better state than when arrived).
- Demonstrate a good understanding of cohesion, SOLID, and how to apply them.
- Understand the importance of the domain model and can coherently model a problem domain within a given context.
- Anticipate medium-term (3-6 month) vectors of change and design and abstract 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.
Hybrid Work Model
- Work flexibly, spending 60% of the week collaborating in person at office locations or local sites, and the rest of the time working remotely.