Software Dev Engineer IIl
- Full-time
- Technology CF Job Family: Software Engineering
- Group Function: Tesco Technology
Company Description
Tesco Technology consists of people from a number of different backgrounds, but having a common purpose to serve our shoppers a little better every day with our retail technological solutions. We shared a common interest in harnessing innovations in technology to enhance their shopping experience at Tesco stores. Whether making products, software or systems, our teams focuses on various aspects from taking strategic ownership of the architecture to delivering technological solutions such as design, testing, deployment, infrastructure, operation and security of the systems to ensure agile, smooth and safe operations. These help us to deliver the maximum business impact. Teams refine their internal processes to best fit their own needs, working to build core capabilities in application and services. We collaborate globally across teams to build end-to-end customer-facing solutions, as well as to share knowledge, experience, tools and techniques.
At Tesco, inclusion means that Everyone’s Welcome. Everyone is treated fairly and with respect; by valuing individuality and uniqueness we create a sense of belonging.
Diversity and inclusion have always been at the heart of Tesco. It is embedded in our values: we treat people how they want to be treated. We always want our colleagues to feel they can be themselves at work and we are committed to helping them be at their best.
Across the Tesco group we are building an inclusive workplace, a place to actively celebrate the cultures, personalities and preferences of our colleagues – who in turn help to build the success of our business and reflect the diversity of the communities we serve.
Job Description
Impact & Value
• Consistently leads delivery of valuable features
• Continually looking for process improvements
• Proposes new ways of doing things
• Suggests novel ways to fulfil requirements
• Helps elaborate requirements where necessary Programming
• In depth knowledge of IDE, language and toolset in Java technology.
Role Description
• Can implement a project representative of their teams' from scratch without assistance.
• Excellent understanding of language & framework and a good working knowledge of the abstraction layer underneath
• Can profile and optimise code
• Understanding of threads, threading model and concurrent programming
• Comfortable test driving any feature/Comfortable TDD cycle
• Good knowledge of other programming languages & paradigms and when to apply them
• Comfortable debugging/finding complex problems
Design
• Can identify and apply appropriate design patterns to problems.
• Comfortable developing large features
• Understands Idempotence
• Understands boy scout principle. Leaves code in a better state then when arrived
• Good understanding of cohesion, SOLID and how to apply
• Writes clean, maintainable code
• Understands importance of domain model and can coherently model a problem domain within a given context
• Anticipates medium term (3-6 month) vectors of change and designs and abstracts accordingly
• Understands & appreciates simplicity & the value of removing code • Understands design patterns such as CQRS and eventual consistency
• Understands how to design for performance at all levels
Development Practice
• Automates everything by default
• Can build a CD pipeline
• Automates security scanning and performance testing as part of build
Infrastructure
• Good grasp of multiple operating systems
• Good grasp of scripting techniques
• Expertise in one database & good grasp of multiple data storage paradigms and when to apply other technologies
• Understands and can automate paas technologies
• Understands when to apply appropriate infrastructure technologies.
Security
• Writes Secure code by default
• Can use tools (nmap/metasploit etc.) to perform deep security probes
• Understands server hardening
Behaviours & Collaboration
• Leads group discussions on design of particular areas
• Comfortable presenting information
• Gains buy in from team and drives design
• Mentors and develops those around them
• Understands domain well enough to work with PM to drive value
• Shares knowledge with wider community
Innovation
• Comfortable evaluating new tools
• Can produce POCs to establish usefulness of new tools
• Understands when new tools may not be appropriate
• Introduces new tools and methodologies when appropriate to simplify or increase efficiency of development
Core Technology Concepts
• Understands advanced HTTP features (Caching, appropriate use of verbs)