At Mira, engineering is of paramount importance to our success as an organization. As the Senior Embedded Software Engineer at Mira, you will collaborate closely with the mechanical, electrical, and product teams to help build the next generation of our augmented reality hardware. The Senior Embedded Software Engineer is expected to maintain and develop Mira's embedded systems software, which involves both a Yocto-based Embedded Linux system and an Arduino-based ARM microcontroller system. Our development process is highly iterative and often requires low-volume production of prototypes for internal product testing and customer pilots. You'll solve challenging problems on a daily basis and work with the latest in immersive technologies.

The ideal candidate for this position is a self-manager, able to take direction from Mira leadership and translate that into an effective plan of action.

Responsibilities:

  • Develop software features for existing and new products
  • Work with sub-contractors to implement product features
  • Update and maintain Mira's Yocto-based Embedded Linux system
  • Update and maintain Mira's ARM-based Embedded System
  • Develop and implement firmware versioning and release processes
  • Quickly and iteratively prototype new software features and bring up new electrical designs to help drive product feature decisions
  • Actively manage production line testing and product provisioning
  • Collaborate with hardware, software, and product teams on the design, implementation, and roadmap for Mira's evolving product line
  • Work closely with CPO, CTO, Director of Software, Mechanical Lead, and Electrical Engineering Lead to ensure a tightly integrated product experience

Required Qualifications:

  • B.S. or M.S. in EE, Computer Engineering, or CS
  • 7+ years' work experience related to software development or embedded systems
  • Must be authorized to work in the U.S.
  • Experience guiding novel commercial products through the NPI process from concept through mass production
  • Experience working at an early-stage startup
  • Team leadership experience (technical or managerial)
  • Strong skills in the following programming languages:
    • C++
    • Python
  • Ability to read and review electrical schematics
  • Linux system administration experience (e.g., systemd, udev services, bash scripting)
  • Embedded Linux experience, including:
    • U-boot
    • BSP development
    • Device trees
    • Kernel configuration
  • Experience developing multi-threaded programs (C++ STL, pthread, or an RTOS)
  • Experience debugging hardware (use of oscilloscope, multimeter, logic analyzer, JTAG/SWD debug adapters)
  • Strong written and verbal communication skills
  • Eagerness to grow embedded and leadership skill sets and drive development decisions to closure

Bonus Qualifications:

  • Experience with Linux user-space and kernel-space driver development
  • Android development experience
  • Experience communicating with an iPhone via MFI or USB Multiplexing Daemon (usbmuxd)
  • Familiarity with the Yocto Project
  • Familiarity with the Mender
  • Experience writing Machine Learning (ML) software
  • Experience developing a camera-based embedded system or working on ISP code
  • Knowledge of Objective-C, C