Markem-Imaje is looking for an Embedded Software Engineer III to design, implement, validate, and maintain the embedded software for their current and future printers across a variety of print technologies and application spaces.
Requirements
- Advanced knowledge of C++, functional decomposition, UML/SYSML, design patterns, OOP, multi-threaded programming, and on-target debugging.
- Linux configuration and optimization, Real-time operating systems.
- Knowledge and experience with verification skills such as test-driven development, unit testing, code reviews, and defect characterization.
- Requirement analysis and planning skills such as user story development, backlog management, high-level estimation, and detailed estimation.
- Configuration management skills such as revision control, continuous integration and deployment, automated build systems, release management, and technical documentation.
- General knowledge of real time operating system concepts and experience in their use.
- Basic knowledge of electronics including micro-controllers, memory, and peripherals as well as in reading schematics and basic use of oscilloscopes/logic analyzers.
Responsibilities
- Design, implement, and validate high quality embedded software as part of an Agile team of engineers.
- Help define and implement best practices and tools to improve team efficiency, effectiveness, and software quality.
- Stay up to date with the latest industry standards and advocate for continuous improvement in the areas of unit testing, system testing, automation, code analysis, source control, continuous integration, etc.
- Contribute high-level and detailed software estimation to support planning activities.
- Interface with other engineering teams and stakeholders to understand the application space and business requirements.
- Collaborate with members of other engineering disciplines using excellent communication and interpersonal skills.
- Participate in and lead design reviews and contribute to improvements in design and code quality produced by internal and external engineers.
Other
- Bachelor’s or Master’s degree in Computer Science, Computer Engineering, or Software Engineering
- Bachelor’s degree with minimum 5 years of professional experience developing software, or Master’s degree with minimum 4 years of professional experience developing software.
- Cross-functional, multi-cultural, and/or distributed team collaboration experience preferrable.
- Experience with Agile/Scrum development practices.
- Travel: Up to 10%, possible international travel