Senior (II) Embedded Software Engineer
Dover Corporation
- Nottingham
- Permanent
- Full-time
- Drive quality and efficiency within embedded software team by setting an outstanding example in terms of high-quality design, code and validation.
- BSP/Linux Kernal and driver development using Yocto Project for embedded Linux
- Research, champion, and facilitate implementation and improvement of best practices and tools to improve team efficiency, effectiveness, and software quality.
- Promote extremely high software quality and reliability by driving continuous improvement in the areas of unit testing, system testing, automation, code analysis, etc.
- Understand implementation of cryptographic functions used to protect secrets from the application user and unauthorized access. Have knowledge of process/policy for how cryptographic keys are managed.
- Access control - Understand enforcement of authorization controls and how to restrict access and segregate privileged logic from other application code.
- Lead and facilitate high level software estimation to support business planning activities.
- Provide a positive impact on the team with their work as well as improve the overall productivity of the team.
- Mentor and teach less experiences software engineers to improve their skills on the current projects and software discipline.
- Drive continuous improvement in source control and continuous integration by staying up to date with the latest industry practices and tools.
- Interface with other engineering teams, stakeholders, Product/Marketing team and customers to understand/specify the application space and product/business requirements.
- Act as a liaison between cross-functional teams and as a spokesperson for Software Discipline.
- Drive the effectiveness of distributed teams through building positive, cross-site collaboration within software team.
- Lead design reviews and drive improvements in design and code quality produced by internal and external engineers.
- Drive discipline in our specifications and validation activities.
- Use outstanding communication and interpersonal skills to lead and create efficient interfaces with third party engineering partners.
- Build and apply a strong understanding of Markem-Imaje and our competitors printing technologies and application spaces.
- Minimum a Bachelor's degree in Computer Science, Computer Engineering or Software Engineering with ideally 10 years of professional experience developing software or Master's degree with 8 years of professional experience developing software.
- Demonstrable record of developing high-quality embedded software for end-user products from requirements analysis to delivery.
- Demonstrable experience in a technical leadership role within a software team.
- Advance knowledge of Yocto Project Reference System Structure including Poky Core Components and Poky Metadata Layer, OpenEmbedded-Core Metadata Layer, and Yocto Board Support Package (BSP) Layer.
- Advance knowledge of adding build packages, working with Yocto Layers, developing Kernel Recipes, Configuring and building the Yocto Project Kernel and custom Kernel, extending the Yocto Project Kernel.
- Experience troubleshooting Yocto Build Failures by using dependency graphs, variables and Metadata, Bitbake debug outputs, and developer shell.
- Experience booting target hardware and strong understanding of Filesystem packaging and embedded file types and Root File systems in general.
- Experience with Cryptographic Practices is preferrable.
- Cross-functional, multi-cultural, and/or distributed team collaboration experience is preferable.
- Advanced architecture and design skills such as functional decomposition, architectural viewpoints, UML/SYSML, and design patterns.
- Knowledge and experience with implementation skills such as object-oriented programming, pair programming, memory management, distributed systems programming, multi-threaded programming, and on-target debugging.
- Advanced knowledge of verification skills such as test-driven development, unit testing, code reviews, and defect characterization.
- Advanced requirement analysis and planning skills such as user story development, backlog management, high-level estimation, and detailed estimation.
- Advance configuration management skills such as revision control, continuous integration, continuous deployment, automated build systems, release management, and technical documentation.
- General knowledge of real time operating system concepts and experience in their use.
- Intermediate knowledge of electronics including micro-controllers, memory and peripherals as well as in reading schematics and basic use of oscilloscopes/logic analyzers.
- Knowledge of C++ application development on Linux OS.
- Knowledge of tools such as GCC. Visual Studio, Ecplise, JSON, XML, Python, Bamboo, SCONS, FitNesse, Lauterbach debuggers, FreeRTOS and/or Yocto Linux is a plus.
- Ability to work autonomously with strategic direction as well as part of a cross-disciplinary, international, product development team.
- Strong organizational and desicion making skills.
- Experience in evaluating open source and commercial off-the-shelf software option is a plus.
- Aptitude in engineer excellence processes such as FMEA Root Cause Analysis, Design of Experiments. etc. is a plus.
- Collaborative entrepreneurial spirit
- Winning through customers
- High ethical standards, openness and trust
- Expectations for results
- Respect and value people