SOFTWARE ENGINEER

Huber+suhner Polatis
Cambridge, United Kingdom
2 days ago

Role details

Contract type
Permanent contract
Employment type
Full-time (> 32 hours)
Working hours
Regular working hours
Languages
English
Experience level
Senior

Job location

Cambridge, United Kingdom

Tech stack

C
API
Agile Methodologies
Software Applications
JIRA
Computer Networks
Continuous Integration
Software Debugging
Linux
Programming Tools
Memory Management
Hardware Design
Issue Tracking Systems
Key Management
Linux kernel
Linux System Administration
Netconf
Open Source Technology
Posix
Product Management
Program Analysis
Software Architecture
Webui
Software Engineering
Universal Asynchronous Receiver/Transmitter
USB
Network Switches
Scripting (Bash/Python/Go/Ruby)
Data Storage Technologies
Serial Peripheral Interface
Software Verification
Software Security
GIT
Yocto
Bare Metal
Build Tools
U-Boot
Software Coding
Software Version Control
Vulnerability Analysis

Job description

The Product Software Team are responsible for providing customer facing software that runs on our industry-leading all-optical network switch. The team are 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 Senior Software Engineer is responsible for enhancing and optimising Polatis products, focusing on software architecture, design, integration, and ensuring seamless collaboration across cross-functional teams. This role involves hands-on technical contributions, mentorship, and aiding in the overall growth and efficiency of the software development team.

Software Architecture and Design: Collaborate closely with the Software Architect to shape both system design and test pass criteria for all assigned projects, ensuring cohesive alignment with product architecture, user requirements, and technical constraints.

Technical Expertise: The role involves developing software in C for Linux-based embedded systems, contributing to the user-space software stack to enhance product functionality. It requires close collaboration with quality engineers to design and review software verification plans, as well as analysing test outcomes to identify improvement opportunities. The position also includes investigating customer-reported bugs, identifying root causes, and delivering effective fixes to uphold product quality and customer satisfaction.

Hardware Integration: Utilise hands-on experience to integrate software with hardware, comprehending various hardware protocols (I2C, UART, SPI, USB) and reading hardware schematics effectively.

Cross-Functional Collaboration: Collaborate with cross-functional teams to define project scopes and contribute to planning and estimation of work packages. Collaborate with production, NPI, and customer support teams to address potential software issues during production and in the field, ensuring timely resolution.

Process Orientation 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

Requirements

8+ years of product development experience in an embedded environment using C programming language. Experience of developing software targeted at ARM microcontrollers. Familiarity with coding standards and best practices.

Proven experience as a Senior Software Engineer, with a strong focus on Linux-based systems development. Ability to use number of development tools for system administration and debugging. Skills in optimizing software for performance and memory usage. Advanced understanding of static and dynamic analysis tools.

Experience with Hardware root of trust (RoT), Secure boot and TPM. Experience with security scanning tools, management of software vulnerabilities. Familiarity with security regulations.

Experience with software security that involves code signing, private key management using HSM. Ability to maintain Linux kernel with latest security patches, upgrading to new libraries.

Advanced understanding and contributions in Yocto build systems.

Experience with writing Linux user space application software using POSIX APIs. Ability to integrate open-source library into existing programs.

Experience of working in an Agile software development environment and contribute significantly to generating relevant process artefacts.

Familiarity with Jenkins CI/CD pipelines. Continuous integration tools, and scripting languages to automate tasks and improve development workflows.

Desirable skills

Solid understanding of networking or bus-based communication concepts, protocols, and security mechanisms including data storage, and preventing vulnerabilities.

Experience in gRPC, gNMI and gNSI Experience with version control systems (e.g., Git) and issue tracking tools (e.g., JIRA). Why HUBER+SUHNER Polatis? Our aim is to be the employer of choice and as such you can be assured of a market leading remuneration package that matches your skills and experience.

About the company

At HUBER+SUHNER, we design and create essential components that transport power and data through networks. This is how our employees around the globe contribute to a world where people get and stay connected.

Apply for this position