Embedded Software Engineer
Elemental Machines
About the Role
Elemental Machines is looking for a Software Engineer to join our Device Engineering Team in the creation of new IoT sensors and modules. This role involves the development of high-volume embedded systems for life-changing applications. You will work closely with hardware, firmware, and applications software developers, as well as the verification team, in the development of IoT devices and gateways.
- Location: Hybrid - Greater Boston Area, MA
- Employment Type: Full-time
- Pay: $90,000 per year
Key Responsibilities
- Write embedded software applications in Python and C/C++ that run on IoT gateways and devices.
- Collaborate with team members to develop system architecture for a robust, scalable platform.
- Understand user requirements, contribute to the development of product requirements, and participate in the entire product development life cycle.
- Document your code, APIs, and design decisions.
- Participate in code reviews, giving and receiving feedback.
Requirements & Tech Stack
- A bachelor's degree in Computer Science, Computer Engineering, Electrical Engineering or a related field, or equivalent practical experience.
- 0–3 years of experience building software including internships, co-ops, research, or personal projects.
- Programming experience in Python, C/C++ is a plus.
- Confident use of the Linux command line, Bash scripting, and Git.
- Working knowledge of containerization tools such as Docker.
- A habit of writing clean, testable code and a willingness to ask questions and learn quickly.
- Familiarity with software testing methodologies and design patterns.
- Understanding of application design: state machines, event-driven architecture.
Nice to Have
- Understanding of concurrency on constrained devices: threads or tasks, queues, mutexes and avoiding race conditions.
- Exposure to application-level communication such as TCP/IP, MQTT, BLE/Wi-Fi or serial command protocols.
- Experience with embedded development, including microcontroller platforms such as Arduino or ESP32, and RTOS concepts.
- Experience interacting with hardware / low-level protocols (e.g. I2C, UART, Modbus, CAN).
- Debugging on real hardware with JTAG/SWD debuggers, oscilloscopes, and logic analyzers.
- Experience with device fleet management platforms.
- Exposure to cloud platforms such as AWS, Azure, or GCP.