The company is looking to build robust electro-mechanical systems and needs an Embedded Software Engineer to oversee the software that makes its way onto these systems. The engineer will also play a key role in defining user interaction with the platforms, making decisions on what to build, and how to develop, deploy, and test software.
Requirements
- Fluent in C/C++, and some fluency in Python or another scripting language
- Base understanding of algorithms, data structures, and software design patterns
- Experience with Linux
- Understanding of communication buses and protocols (CAN, USB, I2C, Ethernet, etc.)
- Comfortable using lab instruments (Oscilloscopes, logic analyzers)
- Some familiarity, even if very limited, of ROS 1/2
- Developed projects beyond the scripting phase, preferably into some form of production/release
Responsibilities
- Understand system requirements, negotiating against unnecessary ones and translating the ones that remain into final solutions
- Work with team and users to design hyper-critical features from the ground up - including high-level architecture and workflows
- Prototype, validate, and refine end-to-end features; from sensor integration to how output is relayed over network.
- Test features in both lab and simulated environments to ensure reliability
- Optimize features for network communications in even low bandwidth environments
- Optimize features for hardware when necessary - be it in compute, data transfer, or memory
- Debug complex issues after testing or operation, including those in processing and threading
Other
- Bachelor's degree preferably in computer science or an engineering discipline
- 1-3+ years of experience developing with hardware, preferably in industry
- Make your code readable and useable, but not necessarily a work of art.
- Stay up to date on users, best practices, and emerging tech
- Communicate directly with users as necessary to determine engineering direction for specific features