Software Engineer
Job title
Software Engineer
Business Stream:
Ocado Technology

Apply now

Software Engineer

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

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

● 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