Software Developer

We’re NDI – a dynamic team of professionals who have built a company into what is now, a global leading innovator and manufacturer of advanced 3D measurement technology systems. Our roots are deep; for over 35 years, our optical measurement and electromagnetic tracking solutions have been trusted by the world’s foremost organizations and institutes in medicine, industry, simulation, and academia. People rely on us for best-in-class measurement accuracy and reliability – from image-guided surgery to aeronautics; from quality assurance to biomechanics research.

Our home base is located in Waterloo, Ontario, but our team members live and work all over the world. Interested in becoming a valued member of the NDI team? We’re growing and are looking for great people to join us.

Role Summary:

We are looking for a results-oriented Software Developer to join our R&D team in the development of applications to control and operate our medical devices and AR/VR systems. As a member of a dynamic and cross-functional team of engineers, you will be responsible for the design and development of real-time 3D applications, utilities and processing libraries for our OEM partners. You will also create data visualization tools which combine real time tracking data, 2D and 3D visualization, modelling and human factors engineering.

Reporting to the Senior Manager, Software Development the successful candidate will be located in Waterloo and will collaborate with our team of professionals at our office located in Shelburne, Vermont.

What you are responsible for:

  • Design and develop software to NDI’s internal software development standards;
  • Work collaboratively as part of our cross-functional teams including Project Managers, Mechanical, Hardware, and Firmware teams;
  • Participate in defining/developing appropriate test suites for the applications; and
  • Integrate application software with our real-time embedded systems.


What you bring to NDI:

  • Bachelor’s degree in Computer Engineering, Computer Science, or equivalent

Required Skills and Experience:

  • 5+ years of recent hands-on experience coding and software design for Windows operating system
  • Proficient in Java and C/C++ programming on both Windows and Linux operating systems;
  • Familiar with TCP/IP and serial communications
  • Experience with real-time, multithreaded applications
  • Exceptional problem solving and troubleshooting skills
  • Strong organization skills, documentation skills, and the ability to communicate well both in writing and orally

Desired Characteristics/Additional Assets:

  • Familiar with OpenGL and/or other 3D rendering tools
  • Experience with medical device development standards and procedures
  • Good understanding of 3D-transformation algorithms