Bachelor's degree in Computer Science, Software Development, Computer Engineering, Electrical Engineering, or a related technical discipline.
10+ years of experience developing embedded software applications.
Strong hands-on experience developing embedded software using C++.
Minimum 5 years of hands-on experience working with VxWorks.
Proven experience designing and implementing safety-critical, real-time software systems.
Strong analytical and problem-solving skills with the ability to troubleshoot complex software and system-level issues.
The successful candidate must be able to obtain clearance under the Canadian Controlled Goods program (CGP).
Responsibilities
Lead the design of safety-critical, real-time embedded software solutions.
Develop, maintain, and test modular, efficient, and maintainable flight software.
Document software designs, technical decisions, interfaces, and implementation approaches.
Review software designs, code, tests, and other technical work produced by team members.
Mentor junior and intermediate developers through technical discussions and design reviews.
Collaborate with senior technical staff to define and improve coding standards and engineering processes.
Support automated testing, integration, debugging, and troubleshooting throughout the software development lifecycle.
Benefits
Opportunity to work on complex robotic and aerospace systems.
Hands-on involvement in embedded software development and testing.
Mentorship opportunities for junior developers.
Collaboration with senior technical staff and leadership.
Focus on continuous improvement of software quality and development efficiency.
Full Job Description
We are looking for a Senior Flight Software Developer to design, implement, maintain, and test safety-critical, real-time software for complex robotic and aerospace systems. This role will take ownership of challenging subsystem designs and implementations while contributing hands-on to embedded software development, testing, and technical problem solving. The successful candidate will also provide technical guidance to more junior developers and help establish strong development practices across the team.
What you'll do
Lead the design of safety-critical, real-time embedded software solutions.
Develop, maintain, and test modular, efficient, and maintainable flight software.
Document software designs, technical decisions, interfaces, and implementation approaches.
Lead and participate in the implementation and verification of complex embedded software subsystems.
Review software designs, code, tests, and other technical work produced by team members.
Mentor junior and intermediate developers through technical discussions, design reviews, code reviews, and explanation of engineering tradeoffs.
Lead effort estimation and technical planning for new development activities.
Collaborate with senior technical staff and leadership to define and improve coding standards, tools, development environments, and engineering processes.
Support automated testing, integration, debugging, and troubleshooting throughout the software development lifecycle.
Contribute to continuous improvement of software quality, reliability, testability, and development efficiency.
What you'll need to get the job done
Bachelor's degree in Computer Science, Software Development, Computer Engineering, Electrical Engineering, or a related technical discipline.
10+ years of experience developing embedded software applications.
Strong hands-on experience developing embedded software using C++.
Minimum 5 years of hands-on experience working with VxWorks.
Proven experience designing and implementing safety-critical, real-time software systems.
Experience developing software for System-on-Chip platforms.
Strong experience with automated software testing and embedded software verification.
Strong understanding of real-time software concepts, concurrency, timing constraints, resource management, and embedded system design.
Strong analytical and problem-solving skills with the ability to troubleshoot complex software and system-level issues.
Strong written and verbal communication skills with experience documenting designs and communicating technical decisions.
Experience leading complex technical work and mentoring junior or intermediate software developers.
The successful candidate must be able to obtain clearance under the Canadian Controlled Goods program (CGP), which requires Canadian Citizen or valid PR holder status.
The successful candidate must also be able to obtain and maintain the required security clearance for the position.
What will make us REALLY love you
Experience developing flight software, spacecraft software, aircraft software, or other highly regulated safety-critical embedded systems.
Experience with communication interfaces and protocols such as SPI, EtherCAT, CANopen, or similar technologies.
Experience with test-driven development, acceptance test-driven development, or behaviour-driven development practices.
Experience with continuous integration, automated builds, and embedded software deployment pipelines.
Experience with robotic arms, joints, mechatronic systems, motion control, or other electromechanical systems.
Familiarity with ARM and/or RISC-V processors and their development environments.
Experience with Docker, containerized development environments, or similar development tooling.