Spacecraft Software Engineer

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

Field(s) of expertise
Software Engineering Space Systems 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.


  • 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 the 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.


  • 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.

Nice to have

  • Familiarity 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.