SOFTWARE ENGINEER
Role details
Job location
Tech stack
Job description
Your tasks Product software team is responsible for providing customer facing software that runs on our industry-leading all-optical network switch. The team is responsible for managing two different software stacks running on different PCBs. The network software (NIC SW) implements various L2/L3 protocols and allows customers to communicate with the optical switch using the desired interfaces that includes TL1, Netconf, Restconf and WebUI. The control software (DSP SW) is a bare metal stack that receives user commands through NIC SW and controls the movement and position of piezoelectric actuators.
The Software Engineer plays a key role in enhancing and optimizing H+S Polatis products, with a strong focus on software architecture, design, and integration. This position demands hands-on technical contributions and active collaboration across cross-functional teams to drive product excellence and team efficiency.
Software Architecture and Design:
Work closely with the Software Architect and senior engineers to refine and implement scalable software architecture. Lead the design and development of key software components, ensuring maintainability and performance.
Contribute to architectural reviews and provide feedback on design decisions.
Technical Expertise:
Take ownership of software modules, driving development from concept to deployment. Add features in existing or new code base demonstrating strong proficiency in C programming within embedded Linux environments.
Collaborate with test engineers to define verification strategies and ensure thorough test coverage.
Analyse complex test results and implement corrective actions with minimal supervision.
Hardware Integration:
Lead software-hardware integration efforts, interpreting hardware schematics and managing communication protocols (I2C, UART, SPI, USB).
Troubleshoot and resolve hardware-software interaction issues efficiently.
Cross-Functional Collaboration:
Collaborate with cross-functional teams including production to understand and diagnose potential software issues and resolve them.
Requirements
Produce the relevant project artefacts as required by the software development process. Provide specific documentation related to product design to meet regulatory compliance and organization requirements. Your profile Bachelor's degree in computer science, Electronics, or related field (or equivalent experience).
Problem-Solving: Analytical mindset with a willingness to explore and learn from challenges.
Adaptability: Open to feedback and new technologies.
Initiative: Proactive in learning and contributing to team goals.
Attention to Detail: Careful and methodical approach to coding and testing.
Desirable skills
Experience in C programming language, its application in an embedded environment. Familiarity with ARM microcontrollers. Familiarity with coding standards and best practices.
Experience in Linux-based systems development including some experience in Linux boot process, DTB and kernel drivers. Ability to write user space application software using POSIX APIs. Ability to integrate open-source library into existing programs. Ability to use number of development tools for system administration and debugging.
Version Control: Familiarity with Git for source code management and collaboration.
Understanding of hardware protocols (I2C, UART, SPI, USB) and ability to read simple HW schematics.
Communication: Clear verbal and written communication, especially when discussing technical issues or documenting findings.
Knowledge of Software build systems (Yocto). Ability to modify Yocto to support a new platform design, new versions.
Continuous integration tools, and scripting languages to automate tasks and improve development workflows.