C and C++ Software Engineer

Harwell-Oxford, United Kingdom (UK), Open Cosmos [OC-CSE]

Field(s) of expertise
Software Engineering
Job type

About this job

You will be joining Open Cosmos’ core team in Harwell-Oxford (UK) and will be responsible to develop applications and services which will run on our satellites. The work involves tight interaction with the satellite development team, mission operations and production departments. The work can involve working on our kernel and drivers as well alongside the embedded software engineers.

Familiarity with unit testing and mocking is essential. Development work will require using Linux on a day-to-day basis. Experience working with kernels (e.g. Linux, FreeRTOS, etc), drivers, filesystems, and embedded platforms is a bonus.

You will enjoy

  • Working with a team of people to build the future of a new space industry
  • Working at one of the world’s leading space campuses
  • 25 days holidays + 8 bank holidays
  • Attractive Pension Scheme & Immediate enrolment
  • Healthy snacks and pick’n’mix sweets at the office
  • Social clubs organised by the team – so far we’ve got Run Club, Paella Club, ice-skating Club and Thirsty Club – suggest something new?
  • Annual Company Retreat
  • Remote working as per company policy
  • Working from home as per company policy
  • Annual Salary Review

Please include your CV, Cover Letter (max ½ page) and any relevant links to LinkedIn and your work by your application


  • Architect, design and implementation of high reliability and robust software solutions for our satellites and other Open Cosmos products.
  • Responsible for planning and implementing agreed test strategies during development.
  • Conception and definition of test procedures, test plans and test strategies in alignment with design.
  • Creation and execution of tests on demand from analysis, requirements.
  • Provide design feedback according to testing results.
  • Provide feedback and support to orbital operations team.
  • Skills, attitude and experience
  • Experience with modern C++ (11 or newer) and C
  • Understanding of basic C++ features/idioms including: RAII, STL, value categories, slicing, virtual inheritance, multiple inheritance, friends, smart pointers, templates, functors/lambdas, operator overloading, SFINAE, iterators, constexpr, static_assert, type_traits.
  • Competent with Git.
  • Understanding the means of and the value of extensive unit testing.


  • amiliarity with Boost.
  • Familiarity with ZeroMQ.
  • Familiarity with CMake, GoogleTest.
  • Experience with FreeRTOS.
  • Familiarity with CSP (Cubesat Space Protocol).
  • Familiarity with CCSDS communications protocols/frames (CLTU, CADU, etc).
  • Familiarity with immutable data structures and design/selection of allocators.
  • Understanding of basic coding theory, e.g. hash functions, forward error correction, Shannon-Hartley theorem.
  • Familiarity with Bash, Java, Python, C#
  • Experience with embedded systems / microcontrollers.  Boards running Linux with 100MB+ of available RAM (e.g. Raspberry Pi, BeagleBone) don’t count!
  • Experience developing hard real-time systems.

For information on how the personal data in your application is processed, please see the Open Cosmos Privacy Policy.