Lead Software Engineer
Confirmed live in the last 24 hours

51-200 employees

Realtime object recognition
San Jose, CA, USA
Experience Level
Desired Skills
Operating Systems
Software Testing
Software Engineering
  • B.S. (M.S. preferred) in Computer Science, Electrical or Computer Engineering or a related field
  • 10+ years of experience developing software
  • Excellent proficiency in C/C++ programming coupled with a genuine passion for software development
  • Experience with low-level RTOSes (QNX, vxWorks, ThreadX, etc.) and developing device drivers for them
  • Experience with embedded development IDEs and debuggers (gdb, lldb, etc.) and JTAG-based debugging
  • Experience with embedded development tool-chains and cross-compilation methodologies
  • Experience with multiprocessor-based embedded systems
  • Experience with software architecture, development and testing best practices
  • Experience with automated software testing systems for embedded systems
  • Experience with with standard hardware blocks and protocols (MIPI, PCIe, USB, GPIO, I2C, SPI, UART, MMU, DMA, etc.)
  • Some experience working with safety critical systems with exposure to DO-178C or ISO 26262 preferred, but is not a must
  • Demonstrable proficiency with test equipment relevant to embedded product development (JTAG, logic analyzers, scopes, etc.)
  • Ability to comprehend hardware specs and schematics
  • Familiarity with version control systems (expertise in Git is strongly-preferred)
  • Self-starter and highly-motivated to work in a dynamic start-up environment
  • Work as a principal technical contributor in the definition, design, implementation and verification of the embedded software of a high-performance AI-based camera and perception module for ADAS systems
  • Utilize formal design processes to develop embedded software that meets the high-reliability and functional safety requirements of the the perception module
  • Contribute to the selection, integration and debug of real-time operating systems (RTOS)
  • Integrate (or develop where necessary) low-level I/O drivers (e.g. Automotive Ethernet, USB, GPIO, etc.)
  • Implement cryptographic integrity checking, secure boot (with hard time-to-operational requirements) and over-the-air update lifecycle functionalities for the embedded software
  • Collaborate with hardware engineers designing application-specific integrated circuits (ASIC) in the selection of embedded CPU cores (e.g. ARM, RISC-V, etc.), as well as supporting functionality variants of those cores (e.g. MMU, MPU, VLIW vector units, etc.)
  • Perform system bringup, debugging and testing
  • Perform requirements analysis and author high-level and detailed requirements
  • Troubleshoot software issues and fix defects
  • Write test specifications and integration tests
  • Architect and maintain automated software build flows, integrate with continuous integration (CI) systems, and author scripts and utilities