Location: Hybrid in Ottawa is preferred but open to other locations within Canada – supporting EST time
Contract duration: 18 months
Main profile requirements:
- Strong C/C++ developers.
- ARM CPU, Linux kernel configuration and drivers
- TCP/IP networking, REST, gRPC, micro-services
- Containers and virtual machines
- Cryptography or / and security protocols
- Familiarity with RUST or GO would be a plus as well
- Familiar with Jira & agile methodologies
- Python and shell scripting
Principal Software Development Engineer
Our client has been the number one vendor in the HSM (Hardware Security Module) market for years. A successful candidate will join the Ottawa-based engineering team that designs the next generation, cloud-native, multi-tenant HSM product, which will further advance their leading position in the HSM market.
· You will architect, design, code, test, debug, and document the Linux-based embedded HSM software and the host-side software, which interfaces with the embedded HSM software
· You will be exposed to all areas of cloud-native, Linux-based embedded designs from boot-loaders to high-level applications to containers and virtual machines to crypto algorithms to device drivers to low-level hardware interfaces to test tools.
· You will work on new features and products. You will also integrate with the third party software and, as needed, maintain the existing code base
· You will participate in requirements analysis, architecture/design discussions, planning sessions and effort estimates.
· You will heavily invest in documenting and testing your designs including test
· You will work in a very dynamic environment and will interact other teams.
· You will mentor and guide more junior team members
Required Skills and Experience:
· At least 10 years of related work-place experience
· Mandatory skills
· Solid work experience in embedded software development in
performance-demanding, resource-constrained Linux environments
· Very strong C, reasonable C++
· Strong understanding of multi-threading, inter process communication,
operating systems and hardware interfaces
· Ability to design complex systems and write architectural, functional, and
· Preferred skills
· Knowledge and experience in several of the following:
· ARM CPU, Linux kernel and drivers
· TCP/IP networking, REST, gRPC, micro-services