We are recruiting an experienced Software Engineer to join our team to support our client in the automotive industry.
NOTE:
RESPONSIBILITIES:
- Designing, developing, testing, integrating, deploying, and maintaining software applications, embedded software components
- Platform services to meet customer needs
- Entire software development lifecycle, including requirements analysis, software architecture, implementation, testing, integration, deployment, troubleshooting, and post-release support
- Support complex automotive software systems, including Android Automotive, infotainment, digital cockpit, embedded platform services, and vehicle-facing applications
- Collaborate with product owners, designers, architects, software developers, test engineers, and other cross-functional teams to deliver high-quality, reliable, and user-focused vehicle experiences
- Engage with customers and cross-functional stakeholders to understand use cases, pain points, technical requirements, and user needs, advocating for reliable and user-centric software solutions
- Solve complex software problems by designing, developing, integrating, testing, and delivering solutions using C++, Java/Kotlin, Android, embedded systems, and other appropriate technologies
- Develop and integrate software for Android Automotive, infotainment, and digital cockpit systems, including graphical user interfaces, middleware, platform services, and vehicle-facing applications
- Develop and maintain Android platform services and applications using Java/Kotlin and C++, including customized Android services, Binder-based communication, AIDL interfaces, and system-level components
- Work within the Android Open Source Project (AOSP) to implement, customize, integrate, debug, and maintain Android platform functionality and system-level components
- Design, develop, integrate, and troubleshoot automotive Hardware Abstraction Layer (HAL) components and modern Stable AIDL HAL interfaces
- Assess software requirements and determine appropriate technology stacks, integration approaches, deployment strategies, and architectural solutions for embedded and automotive software systems
- Create high-level software architecture designs defining system structure, components, interfaces, inter-process communication, data flow, and integration points
- Own software features or components through the complete development lifecycle, from requirements and architecture through implementation, testing, release, post-release support, crash analysis, stability analysis, and continuous improvement
- Collaborate with product owners, designers, architects, software developers, test engineers, technical product managers, and other stakeholders to deliver high-quality software throughout multiple release cycles
- Define and implement software test strategies and quality practices, including unit testing, mock-based testing, integration testing, static analysis, dynamic analysis, and performance validation
- Continuously improve software performance, reliability, memory usage, concurrency, and system stability. Diagnose and resolve crashes, memory corruption, race conditions, deadlocks, threading issues, and other complex system problems
- Apply software engineering practices including test-driven development, continuous integration, continuous delivery, code reviews, automated testing, and agile development methodologies
- Support security practices designed to safeguard customer and vehicle data, including appropriate encryption, access controls, and data protection mechanisms
- Develop and maintain software interfaces, services, APIs, and system components as required by the product architecture and vehicle ecosystem
- Evaluate and incorporate emerging technologies and capabilities to improve software functionality, reliability, development efficiency and over all vehicle user experience
- Close collaboration with software, hardware, product, design, and test engineering teams and may involve development and integration of software components across the Android Automotive and embedded vehicle technology stack
REQUIRED SKILLS & QUALIFICATIONS:
- Bachelor's Degree in Computer Science, Software Engineering, Electrical/Computer Engineering, or a related field
- Practitioner-level experience with at least one programming language or framework
- 4+ years of IT experience
- 3+ years of software development experience
- Experience should demonstrate progressively increasing responsibility in software design, development, testing, integration, troubleshooting, and delivery
- Experience with C++ development is required, with demonstrated understanding of modern C++ development, memory management, multithreading, and software architecture
- C++ or above, including strong knowledge of memory management, object-oriented programming, polymorphism, multithreading/thread synchronization, concurrency, lambda expressions, debugging, and performance optimization.
- Automotive Hardware Abstraction Layer (HAL) development, integration, troubleshooting, or implementation.
- Experience with Android Automotive OS, AOSP, Android platform architecture, or Android system services
- Experience developing or integrating software within AOSP, including system-level components and platform customization
- Familiarity with AOSP build systems, including Android.bp/Soong and Android.mk
- Experience developing software for embedded automotive, infotainment, digital cockpit, or vehicle systems
PREFERRED SKILL & QUALIFICATIONS:
- Master's Degree in Computer Science, Software Engineering, Electrical/Computer Engineering, or a related field.
- Experience owning a software feature or component through multiple release lifecycles, from inception and architecture through delivery and post-release support
- Experience working within a complex software ecosystem involving multiple applications/services, displays, databases, networking, inter-process communication, and thread synchronization
- Experience with Android Automotive, infotainment, digital cockpit, or other automotive embedded platforms
- Experience developing or integrating AOSP platform components
- Experience with automotive HAL and Stable AIDL implementations
- Experience performing crash, stability, profiling, and performance analysis on production software
- Java/Kotlin development for Android applications and platform services
- Customized Android services development, including Bound Services, Foreground Services, AIDL, Binder/local Binder communication, Messenger, and WorkManager
- Experience with Android framework integration and inter-process communication.
- Experience developing Android applications as well as Android platform/system components
- Experience with automotive development technologies, specifications, and processes such as CAN, ASPICE, FMEA, or equivalent
- Experience with QNX, Automotive Grade Linux (AGL), or other embedded automotive operating systems
- Experience with Android-specific profiling and debugging tools
- Experience diagnosing memory corruption, race conditions, deadlocks, crashes, performance issues, and system stability problems
- Experience with static and dynamic analysis tools such as SonarQube, Klocwork, Valgrind, or equivalent
- Experience with unit-testing and mock frameworks such as Mockito, MockK, or equivalent
COMPENSATION & BENEFITS:
- $54.00 - $56.00 / hour (depending on experience)
- Paid Benefits after 90 days (individual and family) – extended medical, out-of-country coverage, dental etc.
- Pension eligibility, with employer match, after 1 full year of work
MEDA offers an excellent referral bonus. Great candidates know great candidates.
MEDA Limited is an equal opportunity employer and does not discriminate in employment on the basis of any of the protected reasons as described in the Ontario Human Rights Code. We are committed to providing accommodation for persons with disabilities, as described in the Accessibility for Ontarians with Disabilities Act, 2005, reasonable accommodation requests will be reviewed and granted to those that request assistance during our hiring process.