Photonic Science
Professional Imaging


Software Design Engineer


A software design engineer is required to join a small engineering design team developing cameras and imaging systems for scientific, industrial, and defence markets. The role will require the development in C/C++ of DLLs and drivers to control cameras and other associated hardware. This typically requires the use of third party SDKs for the interface to the PC. The drivers will also include functions for image processing and image manipulation. It is expected that a common library of functions will be created to harmonise these drivers across a broad existing product range. A comprehensive and fully documented SDK will be needed that is regularly updated to cover new additions to the product ranges.


In addition, the software design engineer will be required to update and maintain a GUI application coded in Python. This application provides the user interface to the  drivers above, and also provides a wide range of additional features for image processing, image analysis, crystal orientation, computed tomography, etc. New hardware products will need to be integrated into this application as they are developed. This application provides remote client-server control, control of various other external hardware such as motorised stages, and includes a macro language for scripting and automation.


This design work will involve working closely with the in-house hardware design and test engineers. Hands-on testing of code with appropriate hardware will be needed.


The successful candidate will also be expected to provide customer support on software issues to a worldwide scientific and industrial customer base, via email/TeamViewer.


The position is full time, based in St Leonards on Sea, East Sussex, UK.


Job specification for Software Design Engineer


Necessary requirements

Proficient at coding in C/C++

Proficient at coding in Python

Experienced at creating DLLs in C and GUIs in Python

Familiar with image acquisition from frame grabbers/GEV using commercial SDKs

Familiar with image processing techniques

Familiar with client-server techniques

Personable, adaptable

Able to work in a small team

Reliable, organised, motivated and self-reliant


Desirable requirements

Experience with coding for Labview

Experience with coding for Matlab

Experience with Linux

Competent at VB

Competent at testing code using real world hardware

Competent at providing customer support for software issues via phone/email/TeamViewer

Please send your application to