Software Development Engineer III
Tesco Technology
About the Role
Software Development Engineers (SDEs) are responsible for the entire development and support process for a software program. They design and drive the implementation of solutions with a fair level of autonomy, interacting with other SDEs in the same or peer teams.
Key Responsibilities
Programming
- Demonstrate a good understanding of at least one major programming language.
- Understand the framework and tool ecosystem of the chosen language to implement end-to-end components with minimal assistance.
- Comfortably produce and refactor code without assistance.
- Test drive features in the programming language of choice.
- Understand different major language paradigms (OOP/Functional).
- Understand the presence of abstraction beneath language (JVM/CLR).
- Reason about the complexity of algorithms (time and space) and code (cyclomatic).
- Debug code and resolve complex issues.
Design
- Identify design patterns in code.
- Implement design patterns with guidance.
- Comfortably translate small behavior requirements into tasks and code.
- Understand how high-quality code leads to rapid delivery.
- Write clean, maintainable code.
- Demonstrate a basic understanding of domains and domain modeling.
- Seek out and use appropriate abstractions.
- Understand patterns for integration (events/services).
- Understand how to leverage existing functionality outside the immediate project.
- Understand the scope of a project and when to move behavior to other services.
Development Practice
- Understand continuous integration and continuous delivery (CI/CD).
- Demonstrate a working knowledge of CI tooling.
- Write 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 the relevant environment.
Security
- Understand OAuth/SAML & identity models.
Qualifications
- At least one major programming language.
- Understanding of OOP/Functional language paradigms.
- Understanding of JVM/CLR.
- Ability to reason about algorithm complexity and code complexity.
- Experience with CI/CD processes.
- Working knowledge of CI tooling.
- Experience with BDD/TDD/Performance/Security/Smoke testing.
- Good working knowledge of one relevant operating system.
- Familiarity with OAuth/SAML.
Work Model
- Hybrid model: 60% in-office collaboration, 40% remote work.
