Software Developer (E2), Product Engineering

Toronto, Canada

Ocado Group

We’re Ocado Group - a global, technology business redefining ecommerce, fulfilment and logistics in online grocery and distribution industries. Our cutting-edge, proprietary technology enables our partners and customers to win in their markets,...

View all jobs at Ocado Group

Apply now Apply later

Software Developer (E2) - Product Engineering About Us

We are Ocado Technology (previously part of the Kindred acquisition) and we empower global grocery retailers with cutting-edge cloud, robotics, AI, and IoT. Our intelligent automation product engineering development center is in Toronto, Canada, where a team of brilliant engineers are developing disruptive material handling systems for the online grocery industry and other retail verticals. We aim to enhance the lives of human workers with the power of AI robotics, by developing robots to solve real-world problems. If you are excited about the cross-section where machines meet humans, about the future of work, retail and supply chains, and want to help transform the grocery logistics industry, we are interested in getting to know you.

About The Role

As a Software Developer on the Software Product Engineering team, you will have the exciting opportunity to design, implement, and maintain cutting-edge software solutions, across multiple codebases, that integrate AI with complex hardware components within robotic pick-and-place systems. You will navigate and reconcile considerations for immediate and future product needs, encompassing but not limited to scalability, maintainability, performance, reliability, security, safety, compliance, and robustness, even in situations where the requirements may be unclear or evolving.  You’ll collaborate cross-functionally with roboticists, software and machine learning developers, hardware engineers, quality assurance, researchers, and product managers & support experts in Toronto and other offices.  You’ll develop solutions in our lab, define validation testing routines, cut releases, and deploy, monitor, RCA, and optimise them on our fleet of robots. In this role, you will be part of an on-call rotation in order to service our customers.

 

The ideal candidate demonstrates strong technical and intellectual abilities, quickly learns new skills, and proactively tackles complex problems with innovative thinking. They take ownership of their work, prioritize effectively, and consistently deliver results while maintaining a strong sense of accountability. With a solid understanding of the broader business context, they remain adaptable and focused under pressure and change. Clear and confident in both verbal and written communication, they collaborate effectively with internal teams and contribute meaningfully to shared goals.

What you bring 

  • 2 or more years of professional experience in software development, with a strong focus on designing and implementing scalable, high-performance software solutions and well-crafted APIs on edge and cloud-native architectures, both greenfield and evolving
  • Competency in programming languages such as C++ and Python, along with a good understanding of software engineering principles, design patterns, and best practices
  • Excitement at the prospect of getting your hands dirty with a variety of technologies and tools, ranging from low-level hardware communication protocols to cloud infrastructure for machine learning
  • Capacity to tackle varied challenges and adaptable to changing priorities, balancing a long-term mission with short-term requirements
  • Value collaboration over individual ways of working and are comfortable being challenged by others

Technical Skills

  • Ability to develop code that is clear, efficient, and maintainable within time and resource constraints on Linux
  • Exposure to modern software development processes such as design documentation, code reviews, CI/CD, testing, project management workflow, and source control conventions
  • Good analytical, problem-solving, communication, and organisation skills
  • Bachelor's degree in Computer Science or equivalent professional experience

Bonus Qualifications

  • Familiarity with robotics middleware and tooling
  • Competency in Go
  • Hands-on experience designing safe, reliable manipulator systems: kinematics, dynamics, calibration, grasp synthesis, collision avoidance, and compliance with ISO functional-safety standards
  • End-to-end machine-learning practice: data ingestion and preprocessing, feature engineering, model training/tuning with PyTorch, TensorFlow, or JAX, rigorous evaluation, and A/B or multivariate experimentation
  • MLOps and DevOps proficiency, containerization, CI/CD, automated testing, model versioning, on-device telemetry, and observability dashboards
  • Application of advanced ML to real-time robotic control: imitation learning, RL-based skill acquisition, adaptive behaviour optimisation, and online trajectory refinement
  • Passion for clean code and collaborative engineering: design reviews, static analysis, Agile/Scrum or Kanban workflows, and mentoring peers on best practices
  • Understanding of multiple programming languages and paradigms and the judgment to choose the right tool for the task
  • Skill in building digital twins and high-fidelity simulations to accelerate development, testing, and data generation
  • Background in high-performance and distributed systems: GPU programming with CUDA or OpenCL, multi-threaded and lock-free designs, message-passing architectures, and eventual-consistency patterns

 

Even if you don’t know everything above, we still want to hear from you!

 

#LI-ONSITE

#LI-OT

#LI-ST2

Apply now Apply later

* Salary range is an estimate based on our AI, ML, Data Science Salary Index 💰

Job stats:  0  0  0

Tags: Agile APIs Architecture CI/CD Computer Science CUDA DevOps Distributed Systems Engineering Feature engineering GPU JAX Kanban Linux Machine Learning MLOps Model training Python PyTorch Robotics Scrum Security TensorFlow Testing

Region: North America
Country: Canada

More jobs like this