Job Description
Embedded Software Engineer
Role Overview
The overall responsibility of the Embedded Software Engineer is to design and implement software for Embedded devices, working as part of the Global R&D organisation on products targeted towards the Onshore, Offshore and Transportation markets.
Key Responsibilities
* Developing and maintaining C/C++ application code running on ARM-based Linux and RTOS platforms
* Writing code that is appropriately flexible, reusable, efficient and adaptable to changing requirements
* Contributing to software architecture and design decisions
* Writing unit and integration tests; supporting formal verification activities
* Working in a structured environment following safe and secure development principles
* Reviewing the code of peers with a focus on correctness and maintainability
Skills Required
The successful candidate will:
* Proactively assess and eliminate root cause when faced with technical barriers
* Be a team player, comfortable working in a close-knit team and building strong professional relationships
* Actively support less-experienced members of the team by helping them with their development, providing guidance and setting a good example
* Take responsibility for any failures in the project and take action to prevent them in the future, embracing and sharing the learning
* Be inquisitive to understand products and customer use cases
* Be able to work independently, proactively making decisions, problem solving and driving issues to a conclusion
* Have good communication skills (both written and verbal)
* Organise and communicate on own work activities aligned with wider business objectives
* Have strong technical skills and a desire to develop these
* Be hands-on with using hardware and software and ideally, be familiar with electronic test equipment
Knowledge & Experience Required
* 3+ years of professional software development experience
* Strong proficiency in C++ - solid understanding of memory management, concurrency and SOLID design principals
* Embedded Linux experience; cross-compilation, BSP familiarity, device interfaces
* Comfortable working with networking fundamentals - TCP/IP, UDP multicast, socket programming
* Experience developing and maintaining cross-platform applications in Qt
* Experience with build systems (CMake) and version control (Git)
* Ability to read and contribute to technical specifications and architecture documents
Education & Qualifications
* Good degree in Computer Science, Electronics Engineering or similar background