${ alert.message }}
${ alert.message }}
Share Job
Copy the link below to share this job.

Research Software Engineer

${ timestamp }} · 
πŸ‡¬πŸ‡§ London


Niantic’s R&D Team is seeking an ambitious Research Software Engineer to push the frontiers of Computer Vision and Machine Learning.

You will work as part of a fun team, to help develop and scale-up algorithms and systems that sit at the cross-section of machine learning, computer vision and augmented reality. We are passionate about discovery, so we’re looking for engineers who want to learn and deploy inventions that could help make better β€œadventures on foot, with others.”

Niantic Engineering leads the advancement of AR and other immersive technologies, while crafting engaging apps for millions of users.

Submit applications by 18 March 2020 for priority consideration.


  • You will collaborate with diverse teams of scientists and engineers to build advanced software systems.
  • You will design minimum viable products using cutting edge and sometimes brittle computer vision and machine learning algorithms.
  • You will help advance R&D by finding problems, implementing elegant solutions, and building tools that enable the team to move forward and to measure progress.


  • Significant proven experience working as a Software Engineer in a research lab or in industry.
  • Excellent practical software engineering ability, particularly Python (profiling/optimization) and C/C++.
  • Hands-on experience building efficient data pipelines for large-scale processing, and great knowledge on relevant data structures and algorithms.
  • Experience implementing and advocating for software engineering best practices, including automated testing, containerisation, workflow automation, VCS, continuous integration (CI).
  • Ability to work with researchers, to translate deep learning research needs into software requirements, and to iteratively develop tools for researchers.
  • Demonstrated ability to scope and build minimum viable products (MVP).
  • Demonstrated ability to architect flexible and extensible software systems.
  • Inquisitiveness to learn about new problems and ideas.
  • Experience of working collaboratively and presenting and sharing ideas.

Plus if...

  • Significant experience with GPGPU programming for desktop and mobile (e.g. CUDA, OpenCL, Metal, Vulkan, OpenGL).
  • Hands-on experience and demonstrated interest in practical and theoretical elements of deep learning.
  • Experience designing for and running deep learning training systems (e.g. TensorFlow, Pytorch) at scale, including multi-server and multi-GPU training.
  • Experience managing deep learning hardware resources (GPUs).
  • Practical experience working with 3D geometry.
  • Unix and shell scripting expertise.
  • Experience with database systems and other data storage systems.
  • Experience with image processing and working with image data.
  • Experience creating visualisation tools.
  • Experience with cloud computing and automation tools.
  • Familiarity with large system software design and development.