Lyft

Java Software Engineer on Embedded Systems

3+ months agoMontreal, Canada

At Lyft, our mission is to improve people’s lives with the world’s best transportation. To do this, we start with our own community by creating an open, inclusive, and diverse organization.

Lyft’s Bikes & Scooters team is developing the future of micro-mobility and we are looking for a solid, experienced Java (or equivalent) Software Engineer to join our Stations Software Platform team. Our goal is to continue the development of our station kiosk software, improve its reliability and security, evolve its software architecture and communication protocols to our backend services and improve our user interface/experience. As of today, the main application is coded in Java running on a Yocto Linux distribution and running on ARM architecture. It integrates with various devices and provides a user interface for end-users and technicians. 

Technical interviews and interactions with the other offices in the company will be in English; however, the working environment in Montreal is bilingual. 

Responsibilities:


  • Help define the roadmap and architecture based on technology and business needs

  • Write well-crafted, well-tested, readable, maintainable code

  • Have a good grasp and ability to explain the various tradeoffs made in decisions

  • Participate in code reviews to ensure code quality and distribute knowledge

  • Lead projects from idea to positive execution

  • Incorporate considerations for business context and failure modes in your work

  • Proactively participate in resolving ongoing incidents 

  • Unblock, support, effectively communicate, and obtain buy-in across teams to achieve results

  • Share your knowledge by giving brown bags, tech talks, and evangelizing appropriate tech and engineering best practices


Experience:

  • BSc/MSc in Computer Engineering, Computer Science, related field or relevant work experience

  • 5+ years of engineering industry experience working on IoT devices with limited resources

  • Experience with Java, including JNI and working with a limited subset of the libraries 

  • Experience with native libraries 

  • Experience with Linux

  • Must have a track record of professional excellence

  • Must be fluent in spoken and written English and have a working proficiency in French


Ideally, the candidate will have experience in or interest in learning and working with the following technologies:



  • C, C++

  • Low-level graphic libraries, font engines, framebuffers

  • TCP/IP

  • Bluetooth LE

  • Communication protocols such as RS-232, RS-485, SPI , I2C, CAN

  • Payment systems (E.g. EMV, paypass, paywave)


Linux-specific:



  • Shell scripting

  • Linux on ARM

  • Developing drivers on Linux

  • The Linux Git tree and upstream work

  • U-Boot or other bootloaders

  • OTA updates of embedded Linux systems


Benefits:

  • Extended health and dental coverage options, along with life insurance and disability benefits

  • Mental health benefits

  • Access to a Health Care Savings Account

  • In addition to provincial observed holidays, team members get 15 days paid time off, with an additional day for each year of service 

  • 4 Floating Holidays each calendar year prorated based off of date of hire

  • 10 paid sick days per year regardless of province

  • 18 weeks of paid parental leave. Biological, adoptive, and foster parents are all eligible


Lyft proudly pursues and hires a diverse workforce. Lyft believes that every person has a right to equal employment opportunities without discrimination because of race, ancestry, place of origin, colour, ethnic origin, citizenship, creed, sex, sexual orientation, gender identity, gender expression, age, marital status, family status, disability, pardoned record of offences, or any other basis protected by applicable law or by Company policy. Lyft also strives for a healthy and safe workplace and strictly prohibits harassment of any kind. Accommodation for persons with disabilities will be provided upon request in accordance with applicable law during the application and hiring process. Please contact your recruiter now if you wish to make such a request.