Overview
Skills
Job Details
Job Title: Software Algorithm Engineer
Location: Southfield, MI (Fully onsite)
Duration: 12+ Months
Job Description:
- Bachelor's degree or equivalent experience in Computer Science or related field
- 5+ years of experience in embedded software development using C/C++ (additional experience with assembly or Python is a plus).
- Hands-on knowledge of microcontrollers, RTOS environments, hardware interfaces (SPI, I2C, UART), and hardware-in-the-loop testing.
- Familiarity with version control tools (e.g., Git) and continuous integration (CI/CD) practices.
- Comfortable working at the intersection of hardware and software understanding low-level drivers, interrupt service routines, and resource constraints.
- Ability to translate system requirements into efficient, maintainable code with a keen eye for potential performance bottlenecks.
- Adept at breaking down complex technical challenges related to sensors, wireless protocols, or real-time constraints into actionable tasks.
- Thrives in a fast-paced, R&D-focused environment where some requirements may be fluid and solutions need to be validated quickly.
- Ownership of projects, from initial planning through deployment, while actively seeking and incorporating stakeholder feedback.
- Enthusiastic about working in a multi-disciplinary team and contributing to the collective success of high-accuracy micro-location solutions.
Job Responsibilities:
The ideal candidate will be responsible for developing high-quality applications. They will also be responsible for designing and implementing testable and scalable code.
Responsibilities:
- Design and implement embedded software solutions that interface with sensors, wireless radios, ethernet networks, etc. while maintaining real-time requirements (sub micro/nano-second).
- Develop robust drivers and firmware components that integrate seamlessly into larger embedded platforms.
- Work closely with FPGA, hardware, and DSP teams to ensure smooth integration of software and firmware components.
- Optimize embedded system performance memory usage, real-time responsiveness, and power consumption across various platforms and microcontrollers.
- Collaborate with QA and test engineers to define comprehensive testing strategies, including unit tests and automated integration tests.
- Diagnose complex issues using debug tools, oscilloscopes, and in-circuit emulators, ensuring system reliability and stability.