Embedded Software Engineer (R&D93) Full-time Job
1 settimana fa - Engineering - Calderara di RenoDettagli del lavoro
Embedded Software Engineer
Platforms Embedded Software Engineers are part of a team dedicated to research and development of state‑of‑the-art edge-computing platforms and application-level SW components, both intended to become trusted building blocks on which most of the new generation Datalogic products will be based.
Main duties and responsibilities of a Platforms Embedded SW Engineer are:
- Research and develop new edge-computing platforms and application-level SW components for products dedicated to 1D/2D code‑reading and/or other computer-vision applications, in accordance with predefined project requirements and in collaboration with other R&D engineers skilled in embedded SW, image‑processing algorithms, electronics or optics
- Contribute to define detailed requirements of new software components, starting from higher level requirements provided by involved systems engineers
- Contribute to develop the software architecture of Linux-based embedded devices dedicated to 1D/2D code-reading and/or other computer-vision applications. The architecture has to be future-proof and very scalable because the software is intended to run on a multitude of devices which differ from each other by image-sensors' resolution, data processing power, type of communication interfaces, etc.
- Design, develop and validate new pieces of software, following well-established Software Quality Assurance (SQA) principles and best-practices. The required coding languages are C++ for Linux user-space programming and C for any Linux Kernel and Bootloader changes.
- Porting existing pieces of software from a device to another one, taking care of all the possible hardware differences related to image-sensors, processor, memories, peripherals, etc.
- Contribute to maintain already released pieces of software by debugging any open defects and implementing new added-value features.
- Support program managers to estimate effort required to carry out assigned tasks and to keep updated project plans, facilitating monitoring of own task progress.
- Contribute to spread SQA principles and best-practices throughout the team, for example by establishing design and development guidelines, mentoring less experienced teammates, and promoting systematic code reviews.
Requirements:
- Education: Master’s Degree in Computer or Electronic Engineering or Computer Science
- Languages: fluent English (mandatory), Italian (preferred)
- Experience: more than one year of hands-on experience in SW engineering for Linux-based embedded-systems, object-oriented design, and C++ programming
Specific Knowledge and Experience:
- Good command of C++ programming, object-oriented design, and design patterns
- Good command of well‑established Software-Quality-Assurance principles and best-practices
- Good command of most common debugging, profiling, and code analysis tools
- Good knowledge of DevOps tools (Git, Docker, and Jenkins) and CI/CD principles and best-practices
- Knowledge of Yocto build system is highly preferred
Soft Skills: ability to work both in team and autonomously, capability to work in a dynamic international team and in a complex environment, ownership and commitment, problem solving attitude, open mindset.