Register for our Newsletter



Principal Software Engineer (IoT Device Application Engineering) Job ID #: 10336

We are looking for a seasoned embedded software engineer with experience of designing, developing and delivering complex software.

The role is within Device Application Engineering team, and focusses on creating production quality examples of IoT applications. The successful candidate will have line management responsibilities for a small team, as well as technical leadership responsibilities for the software component of the example IoT applications.

You will producing the embedded device (Microcontroller + RTOS) software components of example deployments of mbed IoT technology. These example deployments require a broad range of deliverables, from hardware design, to software, to cloud application, and of course documentation and technical training material. All of this material is designed to assist developers to successfully create their own system. Whilst your responsibility is primarily with leading the embedded device software, it’s expected that you will active and involved in shaping the full example deployment.

An example deployment encompasses:

  • Embedded software examples for devices
  • Cloud application software examples
  • Network setup documents
  • Design documentation for the hardware
  • Documentation on recreating the example system
  • Workshop manual/training material for our developers

You may also get involved in creating videos, preparing and presenting workshops to teach developers. It is likely you will need to travel to support developer events, workshops, conferences and seminars. You will be involved with reviewing core engineering, testing deliverables before they are released, providing feedback on documentation, and workflows, tooling, deliveries, and making sure they meet the needs of the developers and partners.

Job Requirements

Experience and Skills

You need to have rock solid, in-depth experience with developing and debugging software applications for microcontrollers, as well as having detailed experience of working with microcontroller hardware. As our Example Deployments will be publically available design resources, you must excel in documenting and presenting your work, and helping others be productive and successful in using it.

The successful candidate will have:

  • Solid background in software engineering with microcontrollers (design, development, debug and delivery)
  • Technical Leadership skills, guiding a team of software developers, managing their backlog as part of an agile process
  • Experience in line managing a small team
  • Experience writing and reviewing technical content
  • Clear technical communication skills

The successful candidate will also exhibit some of these skills and qualities

  • Read schematics and debug at a PCB level using typical laboratory as needed
  • Diving in to, understanding and debugging complex software stacks and applications.
  • Enjoy deducing software bugs from symptom, application code down to the root cause.
  • In depth Understanding of Compilation process, tools, C libraries, and MCU start-up.
  • Thumb Assembly, C, C++, Python, compiler optimizations and code generation.
  • Knowledge of constrained network protocols and mesh networking are an advantage
  • Multi-platform development - Windows, Mac, Linux, Android.  iOS would be an advantage

What are the desired behaviours for this role?

At ARM, we are proud to have a set of behaviours that reflect our unique culture and guide our decisions, defining how we work together to defy ordinary and shape extraordinary. These behaviours are assessed as part of the recruitment process:

  • Delivery of results – You demonstrate a can-do attitude and you drive to overcome obstacles, acting with a sense of urgency because you’re passionate about what you do.
  • Partner / customer focus – Your tendency to put your partners and customers first in all that you do by understanding their needs and striving to achieve win-win solutions.
  • Creativity / innovation – Possessing curiosity and a passion for driving continuous improvement through spotting opportunities and seeking the views of others.
  • Collaboration / communication – Your ability to forge lasting relationships which are built upon mutual trust, open communication and sharing of information and success. 
  • Personal impact / influence – You listen to different perspectives, evaluate, persuade and carefully shape your work to deliver truly impactful results.
  • Team / personal development – You take time to drive your own development, while also encouraging team members and partners to do the same.

Application Requirements

In your covering letter, please take the time expand on the experience and skills you have in relation to the skills and experience we are looking for in this position. This also helps show us you have taken the time to read and understand the job opportunity, and have decided to apply on that basis. 

Please also feel free to share links to any public code or projects you may have created.

You will be based at ARM in Cambridge so must be willing and able to relocate as necessary.

You are expected to have a good degree in Electrical Engineering, Computer Engineering, Computer Science, or a relevant subject.


See also:
Organisation:  ARM