Responsibilities
1. Works with the project manager, team leader and software team to plan and manage delivery schedules
2. Acts as the single point of contact for all issues related to a particular software module development, high level design and delivery, and as such works with all other engineering disciplines.
3. Performs modules maintenance, modifications, and enhancements to new/existing systems through programming, testing, documenting.
4. Follows, recommends, and implements software processes
5. Provides technical directions to others as necessary
6. Analyze and resolve technical and application problems
7. Works with HW teams on testing procedures for various HW subsystems
8. Develops services and applications as part of the embedded firmware (file operations, networking, GNSS)
9. Performs system development and designs system architecture
10. Development application-specific message exchange protocols with HW components via i2c, SPI buses (LED controller, IMU, power MCU, radio and others)
11. Supports GNSS-specific functionality like protocol translation, PPS/Event, time synchronization, encryption schemes for custom formats
Minimum Job Requirements
Education & Experience
12. University degree in Computer Science, Engineering, Electronics, or a related field.
13. 3+ years of professional experience in C++ development, with a focus on embedded development for Linux.
14. Overall software development experience for at least 8 years.
15. Experience in software development process implementation.
16. Experience with software development tools (containers docker/podman, configuration management, design, emulation, debugging, compliers, test, static analys, etc.)
17. Experience with GNSS and/or Optical Survey will be a plus
Knowledge, Skills & Attributes
18. Strong understanding of software design principles, software design patterns, object-oriented programming.
19. Knowledge of algorithms, data structures, multithreading and real-time development concepts.
20. Expert knowledge in C++, Standard Library, Boost
21. Experience with code optimization (performance, memory consumption)
22. Understanding of CI/CD pipelines and automated testing
23. Knowledge of bug tracking systems (JIRA) and version control systems.
24. Experience with yocto or buildroot Linux build systems
25. Knowledge of Docker or Podman
26. Knowledge of Networking protocols and concepts including IoT, MQTT, REST, TCP/IP, UDP, TLS, VPN, firewall implementations.
27. Experience working with oscilloscope and hardware debuggers (JTAG)
28. Ability to read digital schematics.
29. Experience with bare-metal and/or RTOS (ex. FreeRTOS) development
30. Experience with microcontrollers programming
31. A good command (both written and speaking) of ENGLISH language is required for the job
Working Conditions
We offer a balanced work setup that combines in-person collaboration with flexibility
32. Office presence: at our Bologna office ( full time) at least three days per week
33. On-site activities: Occasional visits to our Test Site in Concordia sulla Secchia (MO) for demonstrations and testing
34. Remote work options (Smart Working) available to support focus and flexibility
We’d love to hear from you! Please send us your application, and the earliest date you could join our team.