Build and Release Engineer
Starting Salary (annually): CAD $90.000
Montreal, Canada Remote · Full time
An industry-leading Canadian software provider with technology at the intersection of AI, computer vision, and computational imaging is looking for the top Latin American talent. Their award-winning products address mission-critical applications for the Advanced Driver Assistance Systems (ADAS), Autonomous Vehicle (AV), Smart City, and video security markets.
As a key member of the Engineering team, the Build and Release Specialist supports the Company team with the infrastructure needed to run the products reliably. Embedded in a development team, and reporting to the R&D Manager, you will advise on and deploy new technologies required for our products, monitor and improve the performance of infrastructure systems, support Continuous Integration, and analyze the need for Continuous Deployment. Automation is at the heart of solving most of our challenges.
You will also develop and maintain the necessary C++ and Python tools that enable developers to more effectively debut and test our product code.
You will be a key part of a multidisciplinary team that develops machine learning solutions for digital cameras in self-driving cars.
Select, develop, and maintain repeatable build systems for C++ and python source code base.
Co-own the design and development of our source code build and release systems (Docker, CMake, Python) that enable our software development workflows.
Work with the QA team to increase automated testing.
Evaluate and evolve ongoing design, architecture, and standards for our underlying infrastructure and services.
Collaborate with our enterprise DevOps team to plan service capacity and spec new systems needed to meet growing demand.
Develop and articulate a robust release engineering strategy.
Resolve service problems for the products you maintain.
Develop tools to assist other developers and researchers in their tasks.
Write maintainable, legible CI/CD and build related scripts.
Mentor and share knowledge with team members.
5+ years of DevOps/Build & Release experience administering and developing in Linux.
Mastery of containerization, packaging, and deployment tools (Docker, deb/apt).
High proficiency in a scripting language (Python, Bash, etc.).
Understanding of C++ build toolchains and systems (CMake/Make is a must).
Understanding of static and dynamic library linking process. Ability to manage library interdependencies.
Debug, understand and resolve build or runtime failures due to missing or misconfigured dependency libraries.
Experience with CI services such as GitLab, Jenkins, Travis, or CircleCI.
Proven track record of delivering reliable solutions.
Strong communication skills.
Ability to clearly document work and create step-by-step instructions.
Real-world experience developing code in Modern C++14 or newer.
Understanding of software packaging and distribution solutions (deb, apt, wheel, pipy)
Familiarity with network drives (NFS, SAMBA, etc.)
Judgement with regard to technical decisions, and an appreciation for the trade-offs taken when making those calls.
Ideas on how to streamline the software development lifecycle, and the ability to articulate those to the team and implement them as real practice.