Key Responsibilities
1. Develop software concepts and participate in technical feasibility studies for new product features and systems.
2. Design, implement, test, and release high-quality software solutions, ensuring adherence to development standards and review processes.
3. Take ownership of software development tasks, including implementation, documentation, and quality assurance.
4. Define, estimate, and plan work packages while maintaining and improving software specifications and system designs.
5. Contribute to software architecture discussions, defining quality attributes and incorporating modern technology trends.
6. Conduct root-cause analysis for complex issues and implement bug fixes for post-market software releases.
7. Ensure software development activities comply with processes, quality standards, and regulatory requirements.
8. Collaborate closely with hardware, engineering, and cross-functional teams to deliver robust and reliable solutions.
Required Skills & Experience
9. University degree in Software Engineering, Electrical Engineering, or a related technical field.
10. Strong experience in Rust development with a solid understanding of:
Ownership
Borrowing
Lifetimes
11. Experience with asynchronous programming in Rust (e.g., async/await).
12. Familiarity with common Rust libraries and frameworks such as:
tokio
actix-web
rocket
serde
sqlx
13. Experience working with Linux environments and Docker.
14. Strong software engineering fundamentals and experience in modern development practices.
Nice to Have
15. Basic scripting experience.
16. Knowledge of RabbitMQ or messaging systems.
17. Experience with CAN bus communication.
18. Familiarity with event-driven architectures.
19. Experience working in regulated environments, such as the medical device industry.
20. German language skills.