Développeur.euse logiciel | Software Developer
About the role
Raison d’être du poste
À titre de Développeur·euse logiciel II au sein de notre équipe Plateforme centrale, vous apporterez des contributions significatives au logiciel qui alimente les systèmes d’automatisation et de contrôle de mouvement de TAIT, la technologie derrière notre vision de créer des moments qui font bouger les gens. Des tournées de concerts et productions théâtrales aux installations permanentes et attractions de parcs thématiques, notre plateforme pilote l’automatisation qui déplace décors, gréements et éléments cinétiques de façon sûre et précise, souvent en temps réel et devant public.
Vous concevrez et mettrez en œuvre des fonctionnalités de façon autonome, résoudrez des enjeux techniques au sein d’une base de code C++ multiplateforme et contribuerez à l’évolution de nos produits. Grâce à une approche proactive de résolution de problèmes et à une collaboration efficace entre les équipes, vous contribuerez à maintenir des solutions logicielles fiables, performantes et sûres, tout en commençant à influencer certaines décisions techniques et à soutenir le développement de collègues moins expérimenté·e·s.
Notre environnement technique
Notre Plateforme centrale est développée principalement en C++ et s’exécute sur plusieurs plateformes. Au quotidien, vous travaillerez notamment avec : C++, le contrôle de version (Git), des systèmes de construction basés sur CMake, des tests automatisés, ainsi que des concepts tels que la concurrence et le multithreading, la gestion de la mémoire, le réseautage (TCP/UDP), le débogage et le profilage, et l’optimisation des performances. Puisque notre logiciel contrôle du matériel physique dans des environnements en direct, la fiabilité, le déterminisme et la tolérance aux pannes sont au cœur de tout ce que nous construisons.
Responsabilités essentielles
La Personne Titulaire Du Poste
prend en charge le développement de fonctionnalités et la correction de bogues dans notre base de code C++, de la conception jusqu’à la mise en œuvre et aux essais; rédige un code efficace, maintenable et bien documenté, conformément aux normes et pratiques établies, y compris le code propre et les patrons de conception; effectue des revues de code par les pairs et fournit une rétroaction constructive afin d’assurer la qualité et le respect des lignes directrices d’architecture; contribue à une base de code multiplateforme, en portant attention à la concurrence, à la gestion de la mémoire et à la performance; collabore avec différentes équipes — notamment les architectes logiciels, le matériel et les produits — pour résoudre des problèmes complexes et soutenir les efforts d’intégration; contribue à maintenir un comportement fiable et à haute disponibilité dans un logiciel qui contrôle des systèmes de mouvement physiques; contribue à l’amélioration des pratiques, des méthodes de travail et de l’outillage de l’équipe (p. ex. systèmes de construction, CI/CD, essais); agit comme mentor et apporte du soutien à des développeur·euse·s moins expérimenté·e·s dans le développement de leurs compétences; participe à l’évaluation et à l’intégration de nouveaux outils ou cadres technologiques dans les projets; accomplit toute autre tâche requise pour répondre aux besoins de l’entreprise.
Qualifications Et Expérience
Formation
Baccalauréat en informatique ou expérience équivalente dans l’industrie.
Expérience, connaissances et compétences
Minimum de 3 années d’expérience dans un environnement de développement logiciel. Solide compréhension des pratiques en développement logiciel, des patrons de conception et du développement modulaire. Maîtrise pratique du C++, avec la capacité de livrer un code bien structuré et maintenable avec une supervision limitée. Expérience (ou bonne familiarité) avec plusieurs des éléments suivants : contrôle de version (Git), systèmes de construction (CMake), essais automatisés, concurrence et multithreading, gestion de la mémoire, réseautage (TCP/UDP), débogage et profilage, et optimisation des performances. Exposition au développement multiplateforme et à la conception de systèmes fiables et tolérants aux pannes. Familiarité avec les bonnes pratiques de développement logiciel, notamment en matière d’essais et de documentation. Expérience sur des systèmes comportant plusieurs composantes ou sur des projets de taille moyenne. Solides aptitudes d’analyse et de résolution de problèmes. Bonnes habiletés de communication, avec la capacité de documenter clairement et de discuter de solutions techniques. Aisance à offrir du mentorat à des collègues plus juniors et à participer aux revues de code. Expérience de collaboration avec des équipes multidisciplinaires dans un environnement en évolution rapide. Volonté de faire preuve d’initiative et d’améliorer les systèmes, les outils ou les processus.
Atouts (idéalement)
Exposition à l’un ou l’autre des éléments suivants : systèmes temps réel ou embarqués, systèmes distribués, environnements QNX ou POSIX, logiciels critiques pour la sécurité ou déterministes, architecture à faible latence, intégration matérielle, ou modernisation de systèmes hérités. Cadres de tests (p. ex. GoogleTest), CI/CD, infrastructure as code (IaC), ou principes DevOps. Expérience avec Rust. Expérience dans des environnements de développement agiles.
Connaissance de l’anglais
Une Connaissance Fonctionnelle De L’anglais, Tant à L’oral Qu’à L’écrit, Est Requise Pour Ce Poste. Cette Exigence Est Nécessaire Puisque La Personne Titulaire Du Poste Devra
collaborer régulièrement avec des collègues, équipes et partenaires situés à l’extérieur du Québec dont la langue de travail est l’anglais; participer à des réunions techniques, des revues de code et des discussions de conception tenues en anglais; consulter, analyser et utiliser de la documentation technique, des outils de développement, des cadres logiciels (frameworks) et des ressources spécialisées principalement disponibles en anglais; rédiger ou réviser de la documentation technique, des commentaires de code et des communications destinées à des équipes anglophones; contribuer à des projets logiciels mondiaux nécessitant des échanges fréquents en anglais.
———————————
ENGLISH
Position Purpose
As a Software Engineer II on our Core Platform team, you will deliver meaningful contributions to the software that powers TAIT’s entertainment automation and motion-control systems, the technology behind our vision to Create Moments that Move People. From concert tours and theatrical productions to permanent installations and theme-park attractions, our platform drives the automation that moves scenery, rigging, and kinetic elements safely and precisely, often in real time and in front of live audiences.
You will independently design and implement features, solve technical challenges across a cross-platform C++ codebase, and support the evolution of our products. Through proactive problem-solving and effective collaboration across teams, you will help ensure our software remains reliable, performant, and safe, while beginning to influence technical decisions and mentor less experienced engineers.
Our Technical Environment
Our Core Platform is built primarily in C++ and runs across multiple platforms. Day to day, you can expect to work with C++, version control (Git), CMake-based build systems, automated testing, and concepts such as concurrency and multithreading, memory management, networking (TCP/UDP), debugging and profiling, and performance optimization. Because our software controls physical hardware in live environments, reliability, determinism, and fault tolerance are central to everything we build.
Responsibilities
The Software Engineer II will:
Take ownership of feature development and bug fixes in our C++ codebase, from design through implementation and testing. Write efficient, maintainable, and well-documented code following established standards and practices, including clean code and design patterns. Perform peer code review, providing constructive feedback to ensure quality and adherence to architectural guidelines. Contribute to a cross-platform codebase, with attention to concurrency, memory management, and performance. Collaborate across teams — including software architects, hardware, and product — to resolve complex issues and support integration efforts. Help maintain reliable, high-availability behaviour in software that controls physical motion systems. Contribute to improving team practices, workflows, and tooling (e.g., build systems, CI/CD, testing). Mentor and support more junior engineers in developing their skills. Assist with evaluating and integrating new tools or frameworks into projects. Perform other duties as required to meet business needs.
Position Requirements
Qualifications – Academic / Vocational
Bachelor’s degree in Computer Science or equivalent industry experience.
Experience – Knowledge And Skills
3+ years’ experience in a software engineering environment. Strong understanding of software engineering practices, design patterns, and modular development. Working proficiency in C++, with the ability to deliver well-structured, maintainable code with limited supervision. Experience with, or solid familiarity with, several of the following: version control (Git), build systems (CMake), automated testing, concurrency and multithreading, memory management, networking (TCP/UDP), debugging and profiling, and performance optimization. Exposure to cross-platform development and to building reliable, fault-tolerant systems. Familiarity with software development best practices, including testing and documentation. Experience working on multi-component systems or medium-sized projects. Strong analytical and problem-solving skills. Good communication skills, with the ability to clearly document and discuss technical solutions. Comfortable mentoring junior engineers and participating in peer reviews. Experience collaborating with cross-functional teams in a fast-paced environment. Desire to take initiative and improve systems, tools, or processes.
Ideal (Nice to Have)
Exposure to any of: real-time or embedded systems, distributed systems, QNX or POSIX environments, safety-critical or deterministic software, low-latency architecture, hardware integration, or modernization of legacy systems. Testing frameworks (e.g., GoogleTest), CI/CD, Infrastructure as Code (IaC), or DevOps principles. Experience with Rust. Experience working within agile development environments.
English Language Requirement
Required
Functional proficiency in spoken and written English is required for this position. This requirement is necessary because the successful candidate will:
regularly collaborate with colleagues, teams, and partners located outside Quebec whose working language is English; participate in technical meetings, code reviews, and design discussions conducted in English; review, analyze, and use technical documentation, development tools, software frameworks, and specialized resources that are primarily available in English; prepare or review technical documentation, code comments, and communications intended for English-speaking teams; contribute to global software projects that require frequent communication in English.
Not the right fit? Search for Développeur.euse logiciel jobs in Montreal, Quebec, Canada
About TAIT
TAIT sets the standard for world-class live experiences.
We bring extraordinary ideas to life, collaborating on visionary concepts and delivering precision engineering, technical innovation, manufacturing, and production. We engineer complex movement for artists, brands, performing arts spaces, and venues around the world with our industry leading show control and automation technology.
We are a global team of planners, creative engineers, fabricators, technologists, and producers, with over 1400 employees in 20 office locations. We have worked in over 30 countries, all seven continents, and even outer space. Our clients include Taylor Swift, Cirque Du Soleil, The Metropolitan Opera House, NASA, National Geographic, Beyoncé, and The Olympics.
In addition to the core custom project business, the TAIT Group includes like-minded companies operating as one cohesive group in the live experience space. Our team shares a passion for creating ground-breaking experiences, and together, our work makes lasting memories for hundreds of thousands of people. The TAIT Group includes productionglue, Kinesys, ITEC Entertainment, and the Thinkwell Group.
Similar Jobs
Développeur.euse logiciel | Software Developer
About the role
Raison d’être du poste
À titre de Développeur·euse logiciel II au sein de notre équipe Plateforme centrale, vous apporterez des contributions significatives au logiciel qui alimente les systèmes d’automatisation et de contrôle de mouvement de TAIT, la technologie derrière notre vision de créer des moments qui font bouger les gens. Des tournées de concerts et productions théâtrales aux installations permanentes et attractions de parcs thématiques, notre plateforme pilote l’automatisation qui déplace décors, gréements et éléments cinétiques de façon sûre et précise, souvent en temps réel et devant public.
Vous concevrez et mettrez en œuvre des fonctionnalités de façon autonome, résoudrez des enjeux techniques au sein d’une base de code C++ multiplateforme et contribuerez à l’évolution de nos produits. Grâce à une approche proactive de résolution de problèmes et à une collaboration efficace entre les équipes, vous contribuerez à maintenir des solutions logicielles fiables, performantes et sûres, tout en commençant à influencer certaines décisions techniques et à soutenir le développement de collègues moins expérimenté·e·s.
Notre environnement technique
Notre Plateforme centrale est développée principalement en C++ et s’exécute sur plusieurs plateformes. Au quotidien, vous travaillerez notamment avec : C++, le contrôle de version (Git), des systèmes de construction basés sur CMake, des tests automatisés, ainsi que des concepts tels que la concurrence et le multithreading, la gestion de la mémoire, le réseautage (TCP/UDP), le débogage et le profilage, et l’optimisation des performances. Puisque notre logiciel contrôle du matériel physique dans des environnements en direct, la fiabilité, le déterminisme et la tolérance aux pannes sont au cœur de tout ce que nous construisons.
Responsabilités essentielles
La Personne Titulaire Du Poste
prend en charge le développement de fonctionnalités et la correction de bogues dans notre base de code C++, de la conception jusqu’à la mise en œuvre et aux essais; rédige un code efficace, maintenable et bien documenté, conformément aux normes et pratiques établies, y compris le code propre et les patrons de conception; effectue des revues de code par les pairs et fournit une rétroaction constructive afin d’assurer la qualité et le respect des lignes directrices d’architecture; contribue à une base de code multiplateforme, en portant attention à la concurrence, à la gestion de la mémoire et à la performance; collabore avec différentes équipes — notamment les architectes logiciels, le matériel et les produits — pour résoudre des problèmes complexes et soutenir les efforts d’intégration; contribue à maintenir un comportement fiable et à haute disponibilité dans un logiciel qui contrôle des systèmes de mouvement physiques; contribue à l’amélioration des pratiques, des méthodes de travail et de l’outillage de l’équipe (p. ex. systèmes de construction, CI/CD, essais); agit comme mentor et apporte du soutien à des développeur·euse·s moins expérimenté·e·s dans le développement de leurs compétences; participe à l’évaluation et à l’intégration de nouveaux outils ou cadres technologiques dans les projets; accomplit toute autre tâche requise pour répondre aux besoins de l’entreprise.
Qualifications Et Expérience
Formation
Baccalauréat en informatique ou expérience équivalente dans l’industrie.
Expérience, connaissances et compétences
Minimum de 3 années d’expérience dans un environnement de développement logiciel. Solide compréhension des pratiques en développement logiciel, des patrons de conception et du développement modulaire. Maîtrise pratique du C++, avec la capacité de livrer un code bien structuré et maintenable avec une supervision limitée. Expérience (ou bonne familiarité) avec plusieurs des éléments suivants : contrôle de version (Git), systèmes de construction (CMake), essais automatisés, concurrence et multithreading, gestion de la mémoire, réseautage (TCP/UDP), débogage et profilage, et optimisation des performances. Exposition au développement multiplateforme et à la conception de systèmes fiables et tolérants aux pannes. Familiarité avec les bonnes pratiques de développement logiciel, notamment en matière d’essais et de documentation. Expérience sur des systèmes comportant plusieurs composantes ou sur des projets de taille moyenne. Solides aptitudes d’analyse et de résolution de problèmes. Bonnes habiletés de communication, avec la capacité de documenter clairement et de discuter de solutions techniques. Aisance à offrir du mentorat à des collègues plus juniors et à participer aux revues de code. Expérience de collaboration avec des équipes multidisciplinaires dans un environnement en évolution rapide. Volonté de faire preuve d’initiative et d’améliorer les systèmes, les outils ou les processus.
Atouts (idéalement)
Exposition à l’un ou l’autre des éléments suivants : systèmes temps réel ou embarqués, systèmes distribués, environnements QNX ou POSIX, logiciels critiques pour la sécurité ou déterministes, architecture à faible latence, intégration matérielle, ou modernisation de systèmes hérités. Cadres de tests (p. ex. GoogleTest), CI/CD, infrastructure as code (IaC), ou principes DevOps. Expérience avec Rust. Expérience dans des environnements de développement agiles.
Connaissance de l’anglais
Une Connaissance Fonctionnelle De L’anglais, Tant à L’oral Qu’à L’écrit, Est Requise Pour Ce Poste. Cette Exigence Est Nécessaire Puisque La Personne Titulaire Du Poste Devra
collaborer régulièrement avec des collègues, équipes et partenaires situés à l’extérieur du Québec dont la langue de travail est l’anglais; participer à des réunions techniques, des revues de code et des discussions de conception tenues en anglais; consulter, analyser et utiliser de la documentation technique, des outils de développement, des cadres logiciels (frameworks) et des ressources spécialisées principalement disponibles en anglais; rédiger ou réviser de la documentation technique, des commentaires de code et des communications destinées à des équipes anglophones; contribuer à des projets logiciels mondiaux nécessitant des échanges fréquents en anglais.
———————————
ENGLISH
Position Purpose
As a Software Engineer II on our Core Platform team, you will deliver meaningful contributions to the software that powers TAIT’s entertainment automation and motion-control systems, the technology behind our vision to Create Moments that Move People. From concert tours and theatrical productions to permanent installations and theme-park attractions, our platform drives the automation that moves scenery, rigging, and kinetic elements safely and precisely, often in real time and in front of live audiences.
You will independently design and implement features, solve technical challenges across a cross-platform C++ codebase, and support the evolution of our products. Through proactive problem-solving and effective collaboration across teams, you will help ensure our software remains reliable, performant, and safe, while beginning to influence technical decisions and mentor less experienced engineers.
Our Technical Environment
Our Core Platform is built primarily in C++ and runs across multiple platforms. Day to day, you can expect to work with C++, version control (Git), CMake-based build systems, automated testing, and concepts such as concurrency and multithreading, memory management, networking (TCP/UDP), debugging and profiling, and performance optimization. Because our software controls physical hardware in live environments, reliability, determinism, and fault tolerance are central to everything we build.
Responsibilities
The Software Engineer II will:
Take ownership of feature development and bug fixes in our C++ codebase, from design through implementation and testing. Write efficient, maintainable, and well-documented code following established standards and practices, including clean code and design patterns. Perform peer code review, providing constructive feedback to ensure quality and adherence to architectural guidelines. Contribute to a cross-platform codebase, with attention to concurrency, memory management, and performance. Collaborate across teams — including software architects, hardware, and product — to resolve complex issues and support integration efforts. Help maintain reliable, high-availability behaviour in software that controls physical motion systems. Contribute to improving team practices, workflows, and tooling (e.g., build systems, CI/CD, testing). Mentor and support more junior engineers in developing their skills. Assist with evaluating and integrating new tools or frameworks into projects. Perform other duties as required to meet business needs.
Position Requirements
Qualifications – Academic / Vocational
Bachelor’s degree in Computer Science or equivalent industry experience.
Experience – Knowledge And Skills
3+ years’ experience in a software engineering environment. Strong understanding of software engineering practices, design patterns, and modular development. Working proficiency in C++, with the ability to deliver well-structured, maintainable code with limited supervision. Experience with, or solid familiarity with, several of the following: version control (Git), build systems (CMake), automated testing, concurrency and multithreading, memory management, networking (TCP/UDP), debugging and profiling, and performance optimization. Exposure to cross-platform development and to building reliable, fault-tolerant systems. Familiarity with software development best practices, including testing and documentation. Experience working on multi-component systems or medium-sized projects. Strong analytical and problem-solving skills. Good communication skills, with the ability to clearly document and discuss technical solutions. Comfortable mentoring junior engineers and participating in peer reviews. Experience collaborating with cross-functional teams in a fast-paced environment. Desire to take initiative and improve systems, tools, or processes.
Ideal (Nice to Have)
Exposure to any of: real-time or embedded systems, distributed systems, QNX or POSIX environments, safety-critical or deterministic software, low-latency architecture, hardware integration, or modernization of legacy systems. Testing frameworks (e.g., GoogleTest), CI/CD, Infrastructure as Code (IaC), or DevOps principles. Experience with Rust. Experience working within agile development environments.
English Language Requirement
Required
Functional proficiency in spoken and written English is required for this position. This requirement is necessary because the successful candidate will:
regularly collaborate with colleagues, teams, and partners located outside Quebec whose working language is English; participate in technical meetings, code reviews, and design discussions conducted in English; review, analyze, and use technical documentation, development tools, software frameworks, and specialized resources that are primarily available in English; prepare or review technical documentation, code comments, and communications intended for English-speaking teams; contribute to global software projects that require frequent communication in English.
Not the right fit? Search for Développeur.euse logiciel jobs in Montreal, Quebec, Canada
About TAIT
TAIT sets the standard for world-class live experiences.
We bring extraordinary ideas to life, collaborating on visionary concepts and delivering precision engineering, technical innovation, manufacturing, and production. We engineer complex movement for artists, brands, performing arts spaces, and venues around the world with our industry leading show control and automation technology.
We are a global team of planners, creative engineers, fabricators, technologists, and producers, with over 1400 employees in 20 office locations. We have worked in over 30 countries, all seven continents, and even outer space. Our clients include Taylor Swift, Cirque Du Soleil, The Metropolitan Opera House, NASA, National Geographic, Beyoncé, and The Olympics.
In addition to the core custom project business, the TAIT Group includes like-minded companies operating as one cohesive group in the live experience space. Our team shares a passion for creating ground-breaking experiences, and together, our work makes lasting memories for hundreds of thousands of people. The TAIT Group includes productionglue, Kinesys, ITEC Entertainment, and the Thinkwell Group.