Software Engineer
About the Role
We are looking for a Software Engineer to join our team and contribute to the design,
development, and maintenance of our software products. You will work across the full
development lifecycle — writing production -quality code, debugging complex issues, building
robust CI/CD pipelines, and collaborating with cross -functional teams to deliver reliable
software.
This is a hands -on engineering role. You'll own features end to end, improve the quality and
performance of existing systems, and contribute to engineering best practices across the
organization.
What You'll Do
Design, develop, and maintain software in C, C++, and Python across embedded, systems,
or application -level projects
Debug and troubleshoot complex issues across the stack — from low -level memory and
concurrency bugs to integration and system -level failures.
Build, maintain, and improve CI/CD pipelines to enable fast, reliable, and repeatable builds,
tests, and deployments.
Write and maintain unit tests, integration tests, and automated test suites to ensure code
quality and prevent regressions.
Participate in code reviews, providing constructive feedback on correctness, readability,
performance, and adherence to coding standards.
Profile and optimize software for performance, memory usage, and reliability.
Collaborate with systems engineers, QA, and product teams to translate requirements into
well -structured, maintainable code
Contribute to build systems, toolchains, and developer infrastructure improvements.
Investigate tool outputs, triage defects, and drive issues to resolution.
What We're Looking For
Required
Strong proficiency in C and C++ (including modern C++ standards), with the ability to read
and reason about complex, large -scale codebases.
Solid experience with Python for scripting, automation, tooling, or application
development.
Demonstrated debugging skills — comfort with GDB, sanitizers (AddressSanitizer,
ThreadSanitizer), Valgrind, or equivalent tools for
diagnosing memory, concurrency, and
runtime issues.
Hands -on experience with CI/CD systems (e.g., Jenkins, GitLab CI, GitHub Actions, or
similar) — building pipelines, automating testing, and integrating static/dynamic analysis
into workflows.
Familiarity with version control (Git) and collaborative development workflows
(branching strategies, pull requests, merge policies).
Experience with build systems such as CMake, Make, Bazel, or similar.
Understanding of software testing practices — unit testing (Google Test, pytest, or
similar), code coverage measurement, and test -driven development.
Preferred
Experience with static analysis tools (e.g., Coverity, Polyspace, cppcheck, PC -lint,
Klocwork) and integrating them into CI pipelines.
Working knowledge of a functional safety standard (ISO 26262, IEC 61508, DO -178C, IEC
62304, or equivalent) and experience supporting safety compliance activities such as
verification planning, requirements traceability, coverage reporting, or safety case
documentation.
Familiarity with coding standards such as MISRA C/C++, CERT C, orAUTOSAR C++14.
Experience with embedded systems, cross -compilation toolchains, or linker scripts.
Exposure to custom instrumentation, coverage tooling, or compiler internals.
Experience preparing documentation or evidence packages for safety audits or
certification activities.
What You'll Bring
A problem -solving mindset — you dig into root causes rather than patching symptoms.
The ability to communicate technical ideas clearly to both engineering peers and non -technical stakeholders.
Ownership and initiative — you see issues through to resolution and look for ways to
improve processes and tooling.
Comfort working in a collaborative environment, balancing independent deep work with
team coordination.
Curiosity about how systems work (and how they break) and a drive to continuously
improve code quality and engineering practices