Job DescriptionSoftware Engineer, C++
Createc leads technological innovation by combining creative applications of emerging sensor technology, robotics, and algorithms with a focus on commercial success and an entrepreneurial spirit to solve real human challenges.
At its heart Createc is a team of multi-skilled individuals who bridge the gap between academic and industrial approaches: we are defined by a technical capability, not a market; but everything we do is defined and guided by a commercial objective.
We are looking for an experienced software engineer who can take research code and concepts usually prototyped in Matlab or Python and develop efficient production code that will be used in new and existing products and services. You will be responsible for helping to define the architecture, implement, code control and structured testing of the code base.
Location: Oxford and/or the Lake District, UK
Is an advocate of clean re-usable code.
Understand advantages, costs and consequences of refactorisation and redesign.
Demonstrates technical excellence and rigour. Has broad and relevant skill set but is able learn new skills quickly.
Is flexible and adaptable. Is positive and focused when working under pressure and times of change.
Have exceptional software engineering skills.
Make things work and get things done. Has a can-do attitude and high levels of self-motivation. Demonstrates accountability and ownership, prioritises own workload.
Is passionate for new technologies, innovation and robotics. Loves solving exciting and challenging problems.
Is capable and enthusiast of self-learning and facing constant new challenges.
Has teamwork spirit. Works well with others and actively contributes towards team objectives.
Strong track record in designing, implementing and evaluating software, in particular in the context of: software integration (both high and low level); complex solutions; and, development of software that attends functional specifications on time;
Experience in scaling software projects and delivering high quality software products.
Strong development skills. Excellence in object oriented and functional programming.
Experience with algorithms and data structures in the context of performance improvement and code optimization.
Excellence in C++ in large software projects. Strong experience with the STL.
Excellence in structured automated testing, and build and deployment techniques and technologies.
Experience developing software using version control (e.g., Git or SVN) and branching flows.
Experience with software integration of distributed applications or embedded systems.
Experience in multithreaded programming, RT programming and high-performance code.
Proficiency in Linux including system admin skills.
Experience with agile working principles such as Scrum and Kanban.
Experience using Git and branching models in the context of continuous integration.
On top of being proficient in C++ and Python, all-round experience programming in several languages are an advantage. E.g., C, Java, Matlab, Simulink, Mathematica and Labview.
Experience with GPGPU for both graphics and scientific computing. Using OpenGL, OpenCL or CUDA is advantageous.
Experience with the following libraries/frameworks/tools is advantageous: ROS, YARP, Gazebo, RViz, Webots, Bullet, MoveIt, Boost, Eigen, TensorFlow, Caffe, Theanos, OpenNI and similar others.
Experience working with control systems, data acquisition and sensors.
Experience with data management and data analysis.
Good knowledge of hardware interfaces such as UART, SPI, CAN, I2C etc.
Understanding of CI/CD (e.g., Jenkins, Gitlab CI, and Travis CI), configuration management (Puppet, Chef, Ansible, and Salt), VCS (Git, Mercurial, Svn), virtualisation and containerisation (E.g., Docker, Docker Compose, Docker Swarm, Kubernetes, Weave Net, NVidia Docker), issue tracking tools (e.g., Jira) and knowledge management tools (e.g., Confluence).
We celebrate and support diversity and are committed to ensuring equal opportunities for both employees and applicants.