Senior Software Engineer

Senior Software Engineer

Full Time
Competitive

Job Description



body {font: normal 400 13px/16px ‘Open Sans’,’Helvetica Neue’,Helvetica,Arial,sans-serif;color:#333;margin:10px;}p,span,div,b,i,u{ line-height: 120% !important; font-family: ‘Open Sans’,’Helvetica Neue’,Helvetica,Arial,sans-serif !important; }

Senior Software Engineer

Cambridge, UK office-based or hybrid

About the company

We are a UK-based R&D subsidiary of our German parent company Maschinenfabrik Reinhausen GmbH, who are a specialist in the design and manufacture of power electronics for high power applications such as power transmission and renewable energy generation.

In Cambridge, we develop technology and contribute to industrial product developments. We are currently a small, friendly team looking to expand our software capability.

Role Summary

We are looking for an enthusiastic software engineer, experienced in embedded Linux development and C++ in particular. The role will involve working on various embedded systems and contributing to the full software development lifecycle. We work on a mixture of R&D and product developments as required by our parent company.

As a team, we develop systems primarily targeted at power electronics applications. We mostly work remotely but come together as required at our office for lab-based work or some face-to-face time. You can choose the working arrangement that suits you best – fully office-based or mostly remote. The only thing we ask is that you are able to attend the office when required for lab-testing. Most weeks this might be a day or two but on occasion could be a full week.

We regularly work alongside our colleagues in Germany and therefore occasional travel is required. They are based in Regensburg, Bavaria, which is a rather nice place to visit and close to Nuremberg and Munich.

Our embedded systems range from small microcontroller (e.g., STM32) based bare-metal applications up to larger embedded Linux systems running on multi-core SoCs (e.g., Xilinx Zynq Ultra-scale). Therefore, there is a good variety in the work ranging from programming hardware peripherals to writing multi-threaded user-land applications or kernel drivers for Linux. For this role we are looking for Linux kernel and user-space experience and any knowledge of power electronics control systems or motor drives would be an advantage.

We have legacy code written in C, which needs occasional support, and we are looking at writing more C++ as we move forward. Maybe we will look at Rust? Alongside the embedded software, we have PC tools written in C#, many scripts written in Python, Bash and Awk etc. We don’t expect you to be an expert in any of these scripting languages but being able to modify or create tools using them will be required.

We generally develop on Linux computers and use a variety of toolchains. We use Git for source control and Redmine/Jira for change management (depending on the project). We use various debuggers and try to develop in an IDE/editor agnostic fashion where possible so you can use your favourite tools.

Being able to communicate is important, as the role will involve liaison with FPGA and power electronics engineers in order to elicit requirements for the code. We often work in an agile way although some projects for industrial applications will require more process: documentation, test etc.

If this all sounds good, then we would love to meet you and show you more of the interesting work that we do here. We recognize that the traditional technical quiz-style interview doesn’t work for everyone, so we invite applicants to share with us their preferred way to show off their technical skills. (We can still do an embedded C test if you like!) We would like you to present a project, or some code that you have worked on, and talk to us about it.

About You

  • You have a degree in Computer Science, Electrical Engineering, Electronics, Physics or similar
  • You enjoy writing software and building systems
  • You like to learn new things and aren’t scared by legacy codebases
  • You have the persistence to overcome technical challenges (and enjoy the feeling when you do!)
  • You have your own ideas but also understand the need to be pragmatic
  • You don’t mind helping out with recruitment or coaching junior staff members
  • You can organise yourself and manage your own time on a day-to-day basis

Essential Skills

  • Previous experience of full lifecycle embedded software development
  • Requirements, design, tests and peer review
  • At least 5 years experience in C++
  • Embedded Linux – writing both kernel drivers and user-space applications
  • Experience of systems architecture with experience of designing distributed systems and advantage
  • Writing drivers for peripherals such as UART, SPI, I2C, timers, ADCs, DMA etc.
  • Reading schematics, data sheets and liaising with hardware designers
  • Being able to debug complex problems
  • Knowledge of common synchronization mechanisms used in multi-process systems
  • Working with revision control systems, change management systems and continuous integration systems
  • Scripting languages – not expert level but able to produce test tools and build scripts
  • Ability to produce written documents as required for industrial application projects
  • Good interfacing skills inside multi-disciplinary teams

Benefits

  • Flexible working
  • 25 days/year holiday with ability to buy or sell a week
  • Health Insurance for you and your family (including private dental cover)
  • Death in Service Benefit (4x salary)
  • Employer pension contribution matching employee up to 5%
  • Annual performance-related bonus

 

Job Description

Date Posted

September 1, 2023

Country

N/A

Category

Electrical, Electronics, Power Electronics

Salary Range

Competitive

Industry

None

Job Owner

Adam Barnett
abarnett@octagongroup.co.uk

Personal Information