Job Title: Embedded Software Engineer (Android Automotive)
Location: Ottawa, ON (Hybrid – 4 days/week onsite)
Employment Type: Contract
Pay Range: $37 – $39 per hour
Summary
We are seeking an experienced Embedded Software Engineer to support the development of next-generation digital cockpit and infotainment experiences. This role offers the opportunity to work on cutting-edge automotive software, creating innovative vehicle interfaces and connected experiences using Android Automotive technologies.
As part of a collaborative engineering team, you will develop high-quality software solutions that power graphical user interfaces, middleware, and platform services for advanced in-vehicle systems.
Responsibilities
- Develop new features and functionality for digital cockpit and infotainment platforms.
- Design, implement, test, and support software solutions throughout the full product lifecycle.
- Create robust Android Automotive services, applications, and platform components.
- Develop software using Java, Kotlin, and C++ within Android Automotive and AOSP environments.
- Collaborate with software engineers, test engineers, designers, product managers, and technical leads.
- Contribute to architecture discussions and advocate for best practices in software design and development.
- Perform unit testing, code reviews, static analysis, and performance optimization.
- Support post-release activities including troubleshooting, stability improvements, and crash analysis.
- Deliver high-quality code for complex application ecosystems involving multi-threading, networking, databases, and multi-screen experiences.
Required Qualifications
- Bachelor’s degree in Computer Science, Software Engineering, or a related field.
- 5+ years of software development experience.
- 3+ years of experience with C++ (C++17 or newer).
- 3+ years of experience with Java and/or Kotlin.
- At least 1 year of experience developing Android applications.
- At least 1 year of experience working within the Android Open Source Project (AOSP).
Technical Skills
- Strong understanding of:
- Memory management
- Polymorphism
- Thread management and synchronization
- Lambda expressions
- Experience developing customized Android services, including:
- Bound Services
- Foreground Services
- AIDL
- Local Binders
- Messengers
- WorkManager
- Experience with AOSP build systems, including:
- Android.bp
- Soong
- Android.mk
- Proven ownership of features or components through complete release lifecycles from design through production support.
- Experience with software architecture, design patterns, unit testing, and mocking frameworks such as Mockito or MockK.
- Familiarity with code quality and analysis tools such as SonarQube, Klocwork, Valgrind, or similar platforms.
- Experience working in Agile environments.
Preferred Qualifications
- Automotive software development experience.
- Knowledge of CAN, ASPICE, FMEA, or related automotive standards and processes.
- Experience developing Hardware Abstraction Layers (HALs), especially for automotive systems.
- Experience with Stable AIDL HALs and Android 11 standards.
- Hands-on experience using Android profiling and debugging tools to investigate memory corruption and race conditions.
- Experience with QNX or Automotive Grade Linux (AGL).
- Master’s degree in a related field.
#LI-MS1
