Build and Release Developer
Montreal, QCSTART YOUR APPLICATION
Algolux is a globally recognized computer vision company addressing the critical issue of safety for advanced driver assistance systems and autonomous vehicles. Our machine-learning tools and embedded AI software products enable existing and new camera designs to achieve industry-leading performance across all driving conditions. Founded on groundbreaking research at the intersection of deep learning, computer vision, and computational imaging, Algolux has been repeatedly recognized at industry and academic conferences and has been named to the 2021 CB Insights AI 100 List of the world’s most innovative artificial intelligence startups.
As a key member of our Engineering team, the Build and Release Specialist supports the Algolux team with the infrastructure needed to run our 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
In addition to the above, the ideal candidate would have:
- 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