Software Development Engineer II
The Software Development Engineering team are responsible for the full software development lifecycle. They work with Product Managers to help shape the backlog and future direction of the products we build. They implement and test features to a very high quality and support the product or service in testing and live environments.
This role is for an exciting new open source project for creating event driven micro-services using the Event Sourcing and CQRS patterns
Writing services in an event driven style provides several advantages including capture of all business data, loose coupling between services and provides a great model for implementing stateful business processes between services. The intent is to get new and updated services live more quickly. One of the goals of the project is to allow our service teams to write services by concentrating on the business and process logic and to spend less time in boilerplate such as database access and setting up frameworks.
Our Software Development Engineers can pursue 2 distinct career paths as an individual contributor or alternatively a management route.
Whilst specific responsibilities will be dependent upon the changing needs of the Tesco business, the following provides an overview of the role’s key responsibilities and measures:
- Address problems at their route cause and solve problems for the long-term, balancing complexity against business value.
- Build and deploy solutions to customers for problems of significant scope and complexity.
- Contribute to the evolution of our software engineering practices, recommending changes in development, maintenance and system standards.
- Impart knowledge to users, customers, and other team members.
- Build solid working relationships with relevant personnel across Tesco.
- Consistently seek out new languages and tools that will help to improve working practices across multiple teams.
- Perform code reviews, suggesting best practice improvements.
- Educate, review and help other engineers to grow their capability
- Design and build new tools that make the organisation more efficient, impacting the way the entire organisation operates.
- This role will best suit an individual who enjoys working as part of a team, is well organised, pragmatic and a lateral thinker with an inquisitive mind who is motivated to make change for the better and, most importantly, puts our customers first.
The Ideal Candidate
You’ll need to have demonstrated experience of:
- Object-oriented design and data structures
- Algorithm design, problem solving, and complexity analysis
- Proficiency in at least one modern programming language such as Java, Go, Rust, Clojure, F#
- Experience of frameworks such as Vertx
- Experience with relational and non-relational DBs
- Experience with Cloud Infrastructure AWS
- Experience with Ansible (or similar like Chef or Puppet) and Maven (or similar like Ant or Gradle)
- Experience in tools such as: Jira, Jenkins and Git(Hub)
- Writing readable, maintainable, modular and extendable code
- Experience in full development life cycle; design, coding, test, build, QA, deployment and maintenance
- Exposure to the DevOps model
- Experience in Lean and Agile environments and understanding of principles behind methodologies such as: BDD, ATDD and TDD
- A desire to lead, mentor, up-skill and inspire fellow engineers
- Solid enterprise / commercial development experience
- A strong team player with the ability to influence and lead stakeholders when necessary
- Demonstrable ability to self-manage, be proactive, take ownership, build relationships and drive solutions through from inception to production
- Flexibility, ability to plan and organise, responsiveness, creativity, self-starter
- Able to build solid working relationships with peers and senior leadership
- Ability to demonstrate strong written, verbal communication and presentation
Tagged as: ansible, Clojure, F#, GO, Java, jenk, mavenjira, rust, vertx