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