Head of Software Development

  • Full-time
  • Technology CF Job Family: Software Engineering
  • Group Function: Tesco Technology

Company Description

Tesco Bengaluru: We are a multi-disciplinary team creating a sustainable competitive advantage for Tesco by standardising processes, delivering cost savings, enabling agility, providing cutting-edge technological solutions and empowering our colleagues to do ever more for our customers. With cross-functional expertise in Global Business Services and Retail Technology & Engineering, a wide network of teams and strong governance we reduce complexity thereby offering high quality services for our customers. Tesco Bengaluru, established in 2004 to enable standardisation and build centralised capabilities and competencies, makes the experience better for our millions of customers worldwide and simpler for over 4,40,000 colleagues.
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.

Job Description

As a Head of Software:

  • Lead the strategy for developing Retail Store Productivity Solutions using cutting edge hardware and software technology solutions
  • Help identify and evolve valuable features that need to be developed and used by colleagues
  • Suggest improvements to processes and methodologies to speed up delivery
  • Question requirements and challenge where necessary
  • Identify value of tasks & always work on the highest priority items
  • Consistently lead delivery of valuable features
  • Continually look for process improvements
  • Propose new ways of doing things
  • Suggest novel ways to fulfil requirements
  • Help elaborate requirements where necessary
  • Demonstrate the skills of a Software Development Engineer (II) plus:
  • Establish and maintain the right team and processes to continually deliver quality solutions
  • Build consensus within the team on the approach to the solution
  • Ensure impediments are removed
  • Be accountable for ensuring that the team delivers on their commitments
  • Demonstrate the skills of a Software Development Engineer (II) plus:
  • Deal with delivery of solutions to problems with a significantly increased level of complexity (technical or organisational)

Technology Understanding

  • In depth understanding of the ability to understand interaction between devices, operating systems and software
  • Able to experiment with Computer Vision and Image Processing related technologies and frameworks like Tensor Flow.
  • Understand roadmap of Technologies like Android Kotlin
  • Ability to understand and integrate with Enterprise Services and Solutions
  • Understand how to leverage Networks and Wireless Infrastructure to optimize data transmission over the network

Programming

  • Demonstrate in depth knowledge of IDE, language and toolset in language of choice.
  • Implement a project representative of their teams' from scratch without assistance.
  • Demonstrate excellent understanding of language & framework and a good working knowledge of the abstraction layer underneath
  • Profile and optimise 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

Design

  • Identify and apply appropriate design patterns to problems
  • Comfortably develop large features
  • Understand Idempotence
  • Understand boy scout principle, leaves 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 consistency
  • Understand how to design for performance at all levels

Development Practice

  • Automate everything by default
  • Build a CI/CD pipeline
  • Automate security scanning and performance testing as part of 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 technologies

Security

  • Write secure code by default
  • Use tools to perform deep security probes
  • Understand server hardening

Software Methodologies

  • Demonstrate expertise in two or more leading software development methodologies
  • Adapt and tailor the delivery methodology to reflect the needs of the problem at hand.
  • Implement improvements to software delivery methods within the department

Behaviors & Collaboration

  • Demonstrate a methodical, self-organized and action oriented approach
  • Be a good listener, sensitive and empathetic to the needs of the team
  • Be responsive and help remove impediments for the team in a timely manner
  • Manage dependencies
  • Organise with good written and verbal communication skills
  • Mentor and develop those around them
  • Manage stakeholders
  • Take responsibility and be able to justify the decisions made by the team
  • Seek help and guidance when appropriate
  • Able to confidently and competently share your knowledge with users, customers, team members and other stakeholders
  • Collaborate with own team members
  • Comfortably deal with more stakeholders/of increased seniority
  • Deliver solutions that have dependencies on more underlying teams/components
  • Comfortably lead and mentor teams containing individuals with more experience
  • Confidently and competently represent the department with any software delivery related matter
  • Collaborate with own team members and wider engineering teams

People & Team management

  • Demonstrate experience at optimizing teams to deliver solutions to complex problems at pace
  • Prove how to measure and improve the rate and quality of code delivered within teams
  • Champion continuous improvement within the department
  • Demonstrate experience at managing teams that produce robust, agile code in the face of an increased level of complexity (e.g. due to the requirements, NFRs, vectors of change, domain etc.)

Innovation

  • Make space for their whole team to innovate
  • Stay abreast of industry news from a variety of sources
  • Understand how industry developments may affect team
Privacy Policy