Software Engineer – Embedded Systems
Farnborough area, UK
Full Time
Travel required: <15%
Reporting to: Senior Software Engineer
Salary: Negotiable depending on experience.

The Role

We are looking for an Embedded Systems Engineer to assist us with the design and implementation of a command and control system for our in-house developed autonomous underwater drone.

Blue Ocean Seismic Services Background

Blue Ocean Seismic Services is an innovative tech start up with strong shareholders including BP and Woodside. Our vision is to disrupt the Marine Seismic industry through the development of a large-scale autonomous ocean bottom seismic data acquisition system, resulting in a step change reduction in the cost, time and HSSE risks required to acquire high quality OBS data. We help our clients to reduce their carbon emissions and their carbon footprint.

Blue Ocean Seismic Services is developing a revolutionary, integrated seismic acquisition system based around long endurance, self-repositioning robotic ocean bottom nodes.

These nodes are capable of multiple autonomous re-positions to allow rolling of the receiver array without having to recover and redeploy nodes. This, in combination with automated handling systems, rapid deployment/recovery and intelligent system control, allows for optimisation of seismic acquisition survey operations to minimise duration and cost, and removes the requirement for ROV support.

Required Experience & Qualifications

  • Have a proactive attitude and a professional approach to enable working independently and meeting firm deadlines with confidence
  • Be a productive team member with excellent written and verbal communication skills
  • Have a proven history of reading, interpreting and producing high-quality technical documentation such as diagrams and documentation for software design, project management tools or component/product datasheets


  • Display technical aptitude and sound analytical, decision making, problem solving and project prioritisation skills
  • Possess a Computer Science / Software Engineering / Electronic Engineering / Mechatronic Engineering Degree or equivalent
  • Proven industry experience
  • C/C++ / Arduino programming experience
  • Python programming experience
  • Linux scripting and networking familiarity
  • Understanding of common Version Control Systems e.g. Git

Desirable Qualifications & Experience

  • Experience with operating and developing for MOOS, ROS or RTOS
  • Familiarity with project management tools such as Jira and Jama
  • Programming autonomous command & control systems
  • Full stack embedded system or IoT experience/experimentation, from baremetal firmware to browser-based user interfaces


Bonus Value Skills:

  • Awareness of typical data storage approaches or solutions in distributed applications (e.g. MySQL / PostgreSQL)
  • User interface design and implementation using Grafana or similar
  • Experience working with control systems and electronics including related tools. e.g. KiCAD / Eagle / Altium
  • Experience in embedded Linux software development
  • Docker and AWS experience/familiarity
  • Machine learning or computer vision experience
  • Experience with Matlab Simulink

General responsibilities:

The role is broad – you will be required to assist with researching and analysing design concepts, designing and implementing solutions and testing/evaluating the development of C++ embedded system firmware and software modules across multiple platforms and from multiple aspects. Any prior experience or experimentation with IoT development will be beneficial.

Development of the control system will be within an autonomous middleware framework, with some potential to re-direct your focus and specialise in your preferred skillset as the project progresses.

The position may present opportunities for some domestic and international travel, both overseas within the company or meeting with stakeholders and to support testing and trials throughout project phases.

Specific responsibilities include, to lead the following project components:

  • Maintain and improve existing C++ software modules across a multi-platform embedded systems project
  • Design and implement new software modules and interfaces


Primary Responsibilities:

  • Participate in analysing, designing, documenting, implementing, testing, deploying and maintaining systems and producing quality code applying an Agile-inspired developmental approach
  • Prioritise project objectives within a team and manage work tasks and time independently