Waterloo, ON, Canada
13 hours ago
Software Developer (Multimedia)

Ford was built on the belief that freedom of movement drives human progress. As we look to the future and the changing needs of society, we are committed to becoming the world’s most trusted mobility company – delivering smart vehicles for a smart world. Join our team as we create tomorrow! We believe in putting people first, working together, and facing challenges head-on.

You will be joining a dynamic team responsible for delivering some of the most highly utilized functions of a modern in-car infotainment system. You will be working as part of a motivated team in a fast-paced working environment, where quality and attention to detail are vital. You will design and implement customer-visible features that are used by millions of people every day. Along the way, you will have the opportunity to test your software under real conditions in Ford test vehicles. Media playback is a critical piece of the modern in-car infotainment system, everybody interacts with it and expects it to work flawlessly. The challenge and the reward are getting that playback experience so flawless people don’t even think about it. Whether it’s a library of MP3s on a USB stick, or the latest Apple Music streaming service from an iPhone, we make it accessible and intuitive to enjoy, with lots of creative and efficient code under the covers to make the magic happen.

The minimum requirements we seek: 

Bachelor's degree in Computer Engineering, Electrical Engineering or Computer Science. (Successful candidates will be required to provide proof of degree completion for the highest level of education attained.  If the degree was obtained from a school outside of Canada, an Education Credential Assessment report showing Canadian equivalency is also required.)10+ years of total work experience working on Java/Kotlin/C++ programming languages5+ years of experience developing on Android3+ years of experience with the AOSP level of Android (could include writing headless services, APIs, AIDLs, etc.)2+ years of experience as software architectThorough understanding of object-oriented design and developmentSolid grasp of data structures and algorithmsExperience with Multimedia and/or USBFamiliarity with QNX, Linux or other UNIX-like operating systemsExperience with TDD

Our preferred requirements:

Experience in Automotive industry as a software developer is preferredExperience with the Agile methodology, and a firm understanding of the Software Development Life Cycle.Experience writing applications for Android and using tools such as ADB.Experience with unit-testing and mock frameworks (Robolectric or Mockito)An understanding of how streaming works over various technologies such as Bluetooth or USB.Advanced debugging experience (with gdb) and the ability to use and understand the output of code analysis tools like SonarQube.An understanding of different media formats, and the containers they may come in. (H.264 video in an MKV container for example)A power-user level of experience with Linux.Experience designing/developing in a distributed architecture.Excellent communication and interpersonal skills

 

We thank all applicants for their interest, but only those selected for an interview will be contacted.

Ford of Canada is an Equal Opportunity Employer and is committed to a culturally diverse workforce. Accommodations for applicants with disabilities throughout the recruitment, selection and / or assessment processes, where needed, are available upon request. Please inform Human Resources of the nature of any accommodation(s) that you may require.     

Candidates for this position must be legally entitled to work in Canada. Ford Motor Company of Canada, Limited does not sponsor work permit applications. 

RESPONSIBILITIES: 

The primary responsibilities for this position include but are not limited to:

Leverage industry best practices to design, implement, test, and support new feature developmentParticipate in designing Multimedia software architectureWork in an agile team of software developers and test engineers Investigating, debugging, understanding, and fixing bugs in the product Investigate options for how to design new features, reviewing these options with the rest of the team.Write an appropriate amount of unit tests to properly prove out your code.Review other team members code, supplying constructive feedback for their changes.Develop proof of concepts and prototypes of potential new featuresParticipate in design reviews with the team 
Confirm your E-mail: Send Email