Software Engineer
Job title
Software Engineer
Business Stream:
Ocado Technology


Apply now

Job purpose

We create the technology behind Ocado, the world?s greatest online-only grocery retailer. We build everything from websites to warehouse solutions, route optimizers to fraud detection tools, all in-house. We have great freedom in regards to the design, technologies and the processes we use. This autonomy gives us the authority to make all the decisions necessary in the various processes, that we are responsible for, making us the true owners of the products we create.

 

What we do and we would like you to do

We like Agile at Ocado and we are pretty good at it. We also believe that Agile is a bit more than backlog in Jira and daily standups, so we expect our developers to constantly observe, fine tune and adapt the development process to current needs. The process may change because of many factors. These could be: the nature or phase of the project, the maturity of the team, or the technologies used etc. Every project/team member should be able to spot the changes, suggest improvements and evaluate them after they have been applied.

We write software to solve the business problems of our customers. Usually, the problems are very complex and involve many projects and systems to deliver the solution. It is crucial to be able to share the knowledge and cross-team vision, to propose solutions that span across multiple systems and the whole organisation. It is very important to be able to explain technical aspects (pros and cons, work estimates, technical debt) to a less technical audience like Product Owners, UX Team, business representatives.

We believe that if we do not make mistakes, it means we are not moving fast enough. But to move fast, you have to eliminate all unnecessary risks. To achieve that, we do the following:

  • try our best to deliver systems, APIs and data, that are easy to use, understand and maintain
  • constantly improve the standards of software craftsmanship by following the latest trends in IT, frameworks, tools and techniques, attending conferences, mentoring others, performing code reviews or doing pair programming
  • make sure that our software is testable and properly tested (preferably in an automated way)
  • design and implement software and underlying architecture so that they can test, deploy and scale on their own
  • gather data to verify our assumptions, in the production, provide an immediate feedback to all stakeholders
  • implement monitoring and alerting, so that we know immediately when things go wrong (this is done by using commercial tools like New Relic, custom solutions or simply by proper logging and clever scripts)
  • always have a Plan B when things go wrong (use stability patterns and deployment strategies that allow things to get back to a safe state in a matter of seconds) and act immediately to put them right again
  • constantly look for improvements and learn from our mistakes

Apply now