Job Description
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.
* Research new technologies potentially providing a competitive advantage to the next generation products. Leverage collaborations with universities and technology partners to speed-up innovation.
* Attend technical and soft-skill training initiatives promoted by the Company to ensure continuous learning and professional growth.
Requirements:
Education: Master's Degree in Computer or Electronic Engineering or Computer Science
Languages: Italian, fluent English
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:
* 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
* Proven hands-on experience with design and development of software for Linux-based embedded systems, preferably working in both user and kernel space
* Good knowledge of DevOps tools (Git, Docker, and Jenkins) and CI/CD principles and best-practices
* Experience with processors based on ARM, RISC-V or MIPS CPU architecture is a plus.
#LI-IC1