Degree in computer science or systems engineering, or equivalent experience.
Minimum 3 years in software engineering for complex distributed applications.
Proficient in object-oriented programming (C/C++, Java, or similar).
Experience with scripting languages (Bash, Python).
Familiarity with POSIX-compatible environments (Linux, UNIX).
Responsibilities
Contribute to the design and maintenance of safety-critical ATM software.
Apply software engineering principles to ensure safety and quality.
Develop, test, and review software changes for system integration.
Investigate technical issues and propose reliable software solutions.
Collaborate with teams to clarify requirements and coordinate software changes.
Document technical information to support team understanding.
Benefits
Hybrid work model with a minimum of 3 days on-site.
Opportunity for occasional national and international travel.
Work at the Ottawa Technical Systems Centre.
Full Job Description
Job Posting Title Software Developer
Job Category Systems Engineering
Language Requirements English / Anglais
Flexible Work Agreement Type Hybrid / Hybride
Posting End Date 2026-11-19
Job Grade PIPSC-3
Pay Range $111,451 - $140,007
Job Summary The Software Developer participates in the design, development, integration, testing and maintenance of safety-critical software supporting Air Traffic Management (ATM) systems. The work includes application development, automation and system monitoring in Linux environments.
Working with software developers, systems engineers and test specialists, the Software Developer implements changes and enhancements, investigates technical issues, and contributes to reliable, maintainable software while following established safety, quality and configuration management processes.
Key Accountabilities:
Contribute to the analysis, design, development and maintenance of safety-critical software supporting Air Traffic Management (ATM) systems.
Apply established software and systems engineering principles, standards and procedures to maintain safety and quality throughout the software life cycle.
Develop, test, and review software changes. Support system integration and verification against operational and technical requirements.
Investigate technical issues, assess the impact of proposed changes, and contribute to reliable, maintainable software solutions.
Collaborate with multidisciplinary teams to clarify requirements, review designs and coordinate software changes and integration activities.
Communicate technical information and maintain documentation to support shared understanding.
Job Requirements
Education:
Graduation from a recognized community college or university with specialization in computer science or systems engineering or a secondary school diploma and an acceptable combination of education, training, and experience.
Experience:
A minimum of 3 years' experience in software engineering and development for complex distributed applications.
Experience developing or maintaining object-oriented applications in C/C++, Java or a comparable programming language.
Experience developing scripts or automation using at least one scripting language, such as Bash or Python.
Experience developing, troubleshooting and supporting software in a POSIX-compatible environment, such as Linux or UNIX.
Experience in software integration, software configuration management, unit and integration testing.
Knowledge:
Knowledge of the software development life cycle (SDLC), including detailed design, coding, testing, implementation and maintenance.
Knowledge of Linux or UNIX operating system fundamentals, including processes, services, permissions, system events and logs.
Strong expertise in network programming and client-server communications, including TCP/IP, connection management and communication failure handling.
Knowledge of software configuration management and delivery practices, including source control, automated build pipelines, dependency management, and software packaging.
Understanding of SAFe or Agile practices.
Abilities:
Ability to formulate and evaluate proposals, design concepts, test cases, and implementation plans of large computer systems.
Ability to satisfy operational requirements and systems engineering integration objectives by analyzing and defining user, operational and technical requirements and preparing appropriate system specifications.
Ability to investigate software and system issues using logs, process and service information, and network diagnostics.
Ability to develop and maintain automation for software installation, configuration or deployment, using scripting languages such as Bash or Python.
Ability to implement and verify networked applications and monitoring functions, including status changes, event handling and failure recovery, using protocols such as TCP/IP or SNMP.
Personal Suitability:
Communicates clearly and effectively, both orally and in writing, and listens constructively to others.
Works cooperatively in multidisciplinary teams, builds respectful working relationships, and demonstrates sound judgement, accountability and a commitment to safety and quality.
Demonstrates initiative and seeks opportunities to contribute to the team's success.
Curiosity and a willingness to learn complex systems and adapt to changing requirements.
Working conditions:
Occasional national and international travel is required (1-2 times per year).
Flexible work arrangements:
This is a hybrid position with a minimum requirement of 3 days per week on site.
The work location is the Ottawa Technical Systems Centre, 280 Hunt Club Road.
About NAV CANADA
NAV CANADA is a privately run, not-for-profit corporation that owns and operates Canada's civil air navigation system. It was established in accordance with the Civil Air Navigation Services Commercialization Act, which was passed by the Canadian Parliament in 1996. The company provides air traffic control, flight information, weather briefings, aeronautical information, airport advisory services and electronic aids to navigation.