C and C++ Software Engineer

Open Cosmos

Direct Entry Job Permanent Harwell, UK

Uploaded 29 Aug 2019

Job Description

Who we are

Open Cosmos is revolutionising the way space technology is used and is at the forefront of the emerging new space industry. Our mission is to make space accessible to anyone, to help solve the world’s biggest challenges. We do this by providing simple and affordable space missions, using nanosatellite technology, providing end to end space missions for customers around the world (private and institutional). We work with some of the biggest names in the industry, including the European Space Agency (ESA), but also with small and innovative high-tech companies, together developing the space technology and applications of the future.

Based at one of the world’s leading space campuses in Harwell, Oxfordshire, we are a young and ambitious team with the drive to define a greater future for this planet and the people living on it; therefore, when our minds come together to fulfil our mission to democratise the space we are happy to be part of something that is more than the best of each of ourselves.

Description of the Position

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.

Tasks and responsibilities

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

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

How to apply

Visit the career section of our website here.

Please include your CV, Cover Letter (max ½ page) and any relevant links to LinkedIn and your work (eg. GitHub, C++,  ).

Applications will be considered on a rolling basis.

Open Cosmos in the media

Our Website – https://open-cosmos.com/media/
Facebook – https://www.facebook.com/open.cosmos.space/
Linkedin – https://www.linkedin.com/company/open-cosmos/
Twitter – https://twitter.com/open_cosmos

Person Specification

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.