Subscribe   |   Visit Store

Software Engineer

To design and develop application software and embedded firmware in C and C++ for future products and assist with the support and enhancement of the existing product portfolio.

We offer a great engineering environment for creative and collaborative professionals to work in a welcoming team. Our R&D department consists of 4 sections: mechanical, electronics, software, and test. All our engineers work side by side to create the latest generation of life safety equipment that includes Fire panels, devices, and detectors for use all over the world.  

You will be able to create great products that you can take pride in knowing has a positive impact in the real world.

 

The role involves working on development cycles for the existing products (sustaining engineering) and new product development (NPD).  For NPD you will be responsible for the product throughout its development lifecycle meaning you will need good architecture planning, design skills and keen documentation skills. 

 

The successful candidate will be working alongside the existing multidiscipline R&D team but should also be comfortable working on their own.

What you’ll be doing

  • Designing embedded software in C / C++ for life safety systems including panels and modules.
  • Developing and supporting real-time embedded systems, running in either bare-metal or Linux environments.
  • Working across multiple 32-bit microcontroller families
  • Developing and testing of both PC/Mobile panel software and embedded firmware.
  • Contributing to the software architecture design, and electronic circuit design decisions where appropriate.
  • Ensure that designs meet the stated objectives relating to performance, cost and timescale.
  • Maintain and update designs and design documentation as required.
  • Ensure that all aspects relevant to the tasks in hand relating to the product operation and usage are understood, thereby ensuring that products operate as required.
  • Maintain efficient and effective records relating to designs and design modifications, including issue status.
  • Keep up to date with new developments relating to components, circuit techniques, software tools and techniques and be able to confidently share new ideas and methods with the team
  • Act as people leader on design projects when and if required.
  • Actively observe and support the company’s Quality Policy.
  • Travel to company manufacturing facilities (all located in Kent) to support production with problems that relate to issues in the product software.
  • Undertake other duties which may from time to time become necessary.

Person Specification

Qualifications

  • Essential: Degree/HND in an IT, Software, electronics, or Computer Science related field (or equivalent)

Experience

  • Essential:
    • Minimum of 5 years’ proven hands-on experience in an embedded software development environment
  • Desirable:
    • Experience with ARM Core processors
    • Experience with STM and PIC microcontrollers
    • Experience developing embedded firmware running on Linux.
    • Experience in developing graphical user interfaces (QT etc.)
    • Unit testing and integration
    • Experience working in the Fire Detection industry.
    • Experience with Atlassian tools (Jira/Bitbucket)

Knowledge/Skills

  • Essential:
    • An excellent knowledge of C and C++
    • Embedded Linux systems development using community tools
    • Good understanding of TCP, UDP, RS-485, SPI and I2C Communications
  • Desirable:
    • Knowledge of Python language
    • Knowledge of Assembly language for embedded firmware design
    • Working knowledge of device drivers and networking stacks
    • EN54 Fire Detection and fire alarm system standards
    • Familiarity with the Linux Kernel, Linux device driver or core kernel development, Jav, .NET, SQL, and Android.
    • Linux Inter-Process Communications (Shared memory, Semaphore and FIFO)
    • Fundamental understanding of electronic circuits
    • Knowledge of USB communications
    • Enthusiasm for continuous learning.
    • Excellent verbal and written communication skills.

Personal qualities

  • An analytic approach to problem solving
  • A critical thinker and active listener
  • Good time management skills
  • Strong problem solving skills
  • Self-starter with the ability to quickly learn about new processes
  • A good team player with ability to work on own initiative