Job Opportunity – Junior Software/Firmware Engineer Trainee

Job Vacancy

An opportunity has arisen to be trained as a “multi-skilled” Junior Software/Firmware Engineer in a full time role.  We will also consider (if requested) a part time/flexible working role for candidates where suitable.

In this role you will enter as a Junior Software Engineer Trainee and will become experienced in a wide variety of software development skills for both PC and embedded electronics software (firmware) using the latest techniques, including coding and testing software/firmware to supplied specifications.  This includes embedded software used in a variety of systems from commercial grade gadgets to cutting edge military/aerospace tech.

Minor relevant experience with embedded software technology is required (e.g. hobbyist or educational project work with Arduino), though we may consider applications where there is no previous experience but there is a plan for private learning prior to commencement of the role.

A large amount of software development activity undertaken at Milliamp is at the hardware or near hardware level (e.g. kernel drivers) as well as some cloud/PC/mobile work so candidates need to develop confidence of working with bare prototype hardware (PCBs) and on cloud technology alike.  A practical “hands on” attitude will help with this.

Initial training activities will be focused on using the Arduino platform and will then be expanded as on-the-job training.  In addition there will be the opportunity (if desirable) to undertake a level 3 or level 4 apprenticeship which will focus on formally developing both coding and traditional software engineering skills.  As the role progresses, it may be possible to agree further flexible or homeworking arrangements if unsupervised working is possible, however initially attendance at our Lancaster office will be required (with social distancing in operation during Covid-19).

We are looking for highly enthusiastic “can-do” individuals who love coding and are keen develop their software skills with a solid “hardware focus”, learning how to write code for complex, high reliability and safety critical embedded systems or platforms and also exploring new areas of technology such as embedded artificial intelligence (Edge AI) and the Internet of Things (low power sensors using LoRaWAN, 6LoWPAN, Thread, Bluetooth Low Energy, NBIoT/LTE-M and Sigfox communication technologies).

Junior Software Developer (Trainee) Responsibilities:-

  • Support of existing staff carrying out both internal and customer project software, including software for embedded electronics, cloud IoT, wearable tech and hi-reliability/safety critical software.  Assist with coding in a variety of programming languages and hardware technologies (using C, C++, Arduino, Raspberry Pi).
  • If capable, assist with development activities as a trainee programmer for user software for PC  (C/C++/Qt, Python) and mobile (Android, Flutter) and web/cloud full stack development (JS, PHP, etc.)
  • If capable, assist with development activities as a trainee programmer for embedded artificial intelligence AI development (uTensor, machine learning algorithms on FPGA).
  • Support of existing staff carrying out DevOps and general IT systems maintenance
  • Support of existing staff carrying out Data management including Cloud and Virtualised environments.

Knowledge requirements: –

  • 5 GCSEs including Maths (B/6 or above required), Science (B/6 or above required) and English (C/4 or above required) or predicted grades equivalent.  These qualification requirements will be waived if prior experience of good quality software development can be demonstrated in required software languages (see below).
  • Previous experience (including hobbyist or educational activities e.g. school project work) of electronics/embedded embedded programming using Arduino Sketches, C, C++ with Arduino, RaspberryPi, Microbit or similar platforms.  This experience is essential.  Detailed knowledge of such using web based simulators also acceptable.  Also some experience of languages such as JavaScript, Python, Java would greatly enhance a candidates application.
  • Some exposure/understanding of Open Source Software including Linux, and collaborative projects with Github/Gitlab would greatly enhance a candidates application.

Personal requirements: –

  • Ability to effectively solve complex and abstract problems.
  • A flexible approach with excellent communication skills.
  • Ability to work unsupervised both individually and as part of a team.
  • Organised and methodical approach with excellent attention to detail.
  • Able to work under pressure
  • Reliable and conscientious

This role is suitable both for new entrants to the sector and also candidates retraining from similar technical sectors.  Pay is dependent on coding experience, capability and quality.

How To Apply

Please visit our vacancy page on Indeed to apply for this role.  Applications via any other method will be automatically rejected.

Arduino Due


C Code on a Screen


Android Studio