About the role
As a Software Development Engineer 2 you are in a mid-level Individual Contributor role at Tesco. Engineers at SDE2 level will continue their career development and show potential for an SDE3 role. At this level, your impact reaches across a team, and you provide technical leadership of medium to large features. You are starting to produce your own work by understanding the problems that the team faces and are beginning to support other engineers with their own delivery and development. You prioritise sharing your skills and knowledge. You also prioritise quality of work, helping your team to continually set the standard. You understand and apply best practice within Tesco and across the industry.
You will be responsible for
- Develop
Java web services and components according to a detailed design document.
- Build
efficient, reusable and reliable Java code per industry best practices.
- Follow
TDD approach and ensure unit-test coverage meets quality requirements.
- Develop
Integration tests to ensure coding adheres to acceptance criteria and verify end-to-end behaviour of the system.
- Ensure
best possible performance, quality and responsiveness of applications.
- Familiar
with Agile ways of working
- Follow
coding standards and Industry best practices.
- Develop
reusable components.
- 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
- Reach
out for direction proactively in case of ambiguities or constraints
- Own
the delivery of a major component in a product or a small product entirely as part of a feature delivery
- Suggest
improvements to processes and methodologies to enhance delivery speed, quality
- Mentor
and guide other SDEs in the team and help in hiring
- Question
requirements and challenge where necessary
- Identify
value of tasks & always work on the highest priority items
- Programming
- Demonstrate
a good understanding of Java programming language
- Understand
the framework and enough of the tool ecosystem of the chosen language toimplement end to end components with minimal assistance
- Comfortably
produce and refactor code without assistance
- Test
drive features in programming language of choice
- Understand
different major language paradigms (OOP/Functional)
- Understand
presence of abstraction beneath language (DVM/JVM/CLR)
- Reason
about complexity of algorithms (time and space) and code (cyclomatic)
- Debug
code
- 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
- 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
You will need
- Minimum
of 7+ years of overall experience including experience developing in Java
latest version (Java Version 11 and above); experience in design and development using Micro service architecture.
- Solid
knowledge in OOP concepts; and design principles/patterns for developing scalable applications
- Must
have experience in developing Spring Boot applications; developing database access layer using Spring Data JPA/Hibernates; developing REST Services using Spring; development of event driven systems using any framework/kafka
- Experience
with any RDBMS and at least one NoSQL database preferably PostgresSQL and Mongo DB
- Experience
in writing unit and integration tests using Junit
- Experience
using mock frameworks like Mockito, WireMock experience using Git
- Experience
with CI / CD
- Basic
hands-on experience in one of the cloud providers (AWS/Azure) or at least docker and Kubernetes
- Familiarity
with build tools Maven or Gradle
- Added
advantage with experience of Reactive and Functional Programming
Whats in it for you
At Tesco, we are committed to providing the best for you.