Job Title: Lead Software Engineer – Backend
Department: Information Technology
Job Last Reviewed: Aug 2021
Job Summary: The Backend Technical Lead will be actively involved in leading the design, development and support of backend systems within Wawa. As a technical lead in a given area, this role would work with appropriate product owners to define and design solutions to meet the business needs while working with and mentoring a team to implement the solution and ensure it continues to meet expectations.
· Operate as a key technical resource in an agile team, working with product owners and other team members to design and implement features that meet the business and technical requirements.
· Provide a leadership and mentoring role for other team members to continually improve the team and ensure that individuals grow with the organization.
· Complete technical designs as required that provide a detailed view of a solution and a solution ecosystem that can then be implemented and evolve as business and technical needs change.
· Decompose abstract business features into associated stories with the product owner to implement with the team using agile delivery.
· Define RESTful APIs and Domain Events using industry standards.
· Apply DevOps techniques to deliver code quickly and securely in a cloud-based PCI environment.
· Work with team members to define and implement test plans and automation using techniques like TDD and BDD.
· Operate in a cloud-based PCI regulated environment and collaborate with other teams to ensure security and security standards are always considered with every change.
· Participate in community of practice with other engineers to help drive the technical roadmap of the organization.
· Be responsible for ensuring performance metrics are maintained and performance SLAs are met. This includes designing and implementing performance test automation.
· Be responsible for monitoring and observability of owned systems including monitoring for abnormalities and alerting.
· Collaborating with L1/L2/L3 teams to drive a resolution and root cause analysis.
· Ensure all documentation is up to date to support teams and systems including designs, runbooks and developer guides.
· Stay up to date with relevant technologies and software development trends.
· Evaluate tools and platforms for fit and ensure the tools and platforms are supported and approved for use within Wawa.
- Bachelor’s degree in Computer Science, Information Technology or a technical discipline preferred (e.g., engineering) or equivalent.
- A minimum of 7 years experience of relevant experience
- Polyglot knowledge of multiple programming languages with a focus on Java.
- Understanding of retail and retail systems and processes.
- Understanding of SOLID and other OO design principles.
- Knowledge and experience with building RESTful APIs that are secure, isolated and event driven.
- Experience with OpenAPI and API first development.
- Understanding of microservices architecture patterns pattern like Service Discovery/API Gateway/Domain Driven Design etc
- Strong hands on usage of containers including tools like Docker, Kubernetes, Helm, ECS/ECR, OpenShift, LXC and other related technologies and tools.
- Hands on knowledge of event driven architectures including technologies like Avro, Kafka, Kinesis as well as RabbitMQ/ActiveMQ.
- Hands on with automated testing frameworks and tooling to support BDD, TDD and ATDD including Cucumber, Postman etc.
- Knowledge and practical experience of database change management tools like but not limited to Liquibase and FlywayDB.
- Knowledge and use of performance testing techniques as well as tools including k6, Gatling/Locust/JMeter.
- Understanding of cloud IaaS technologies (AWS) including VPCs, Subnets, IAM, SG, RDS, MSK, EKS.
- Experience with security mechanisms including mTLS, x509, OpenID Connect, JWT/JWE, OAuth2, PEP/PDP, SAML, WS-Security, Basic Auth and ABAC/RBAC based policies.
- Experience with continuous delivery (CD) concepts including CodeFresh, Jenkins, GitLab, Travis CI, GoCD and others.
- Experience with Linux scripting including Bash and KShell.