Embedded Software Engineer 3
Full Time
Mid Level
5+ years
Posted 3 weeks ago
Interested in this position?
Upload your resume and we'll match you with this and other relevant opportunities.
Upload Your ResumeAbout This Role
Join a fast-paced startup to design, develop, and implement containerized Linux applications for centralized control of laboratory instruments. This role involves building foundation infrastructure and working with cutting-edge technologies.
Responsibilities
- Design and develop a containerized Linux application for centralized control of multiple laboratory instruments
- Implement robust communication interfaces for diverse instrumentation (fiber amplifiers, laser controllers, DACs, precision electronics)
- Develop software that interfaces with hardware devices over multiple protocols (UDP/TCP sockets, serial communication, USB, vendor-provided SDKs)
- Design and implement network communication interfaces for remote instrument control and monitoring
- Collaborate with stakeholders to develop and refine system requirements and translate them into technical specifications
- Architect scalable, maintainable software solutions that accommodate evolving requirements and future instrument additions
- Write comprehensive unit and integration tests to ensure system reliability and robustness
- Develop and maintain clear technical documentation including API specifications, system architecture diagrams, and integration guides
- Collaborate with cross-functional teams, including hardware engineers, scientists, and other software engineers
- Participate in code reviews, provide constructive feedback, and adhere to best coding practices
Requirements
- U.S. person as defined by 8 U.S.C. § 1324b(a)(3)
- 5+ years of professional experience in C++ software development for embedded or instrumentation systems
- Strong understanding of modern C++ (C++14/17/20)
- Proven experience developing software for Linux environments, including containerization with Docker
- Hands-on experience with multiple communication protocols: TCP/IP, UDP, serial (RS-232/RS-485), USB, and SDK integration
- Experience designing network-based APIs or control interfaces
- Demonstrated ability to work with hardware interfaces and understand datasheets, communication specifications, and timing requirements
- Experience with requirements gathering, system design, and architectural decision-making
- Familiarity with unit testing frameworks, preferably Google Test or similar
- Experience working with version control systems (Git)
- Strong problem-solving skills
- Experience with CMake or similar build systems for C++ projects
- Familiarity with multi-threaded programming and concurrency in C++
- Knowledge of software best practices, including design patterns, SOLID principles, and performance optimization
Qualifications
- A bachelor's degree in Software Engineering, Computer Engineering, or a related field
- Minimum of 5 years of relevant experience, ideally within a startup or technology company, with 5+ years of professional experience in C++ software development for embedded or instrumentation systems
Skills
Docker
*
C++
*
TCP/IP
*
Git
*
Linux
*
USB
*
CMake
*
UDP
*
SOLID principles
*
RS-232
*
RS-485
*
Design patterns
*
SDK
*
Google Test
*
* Required skills
Benefits
Dental Insurance
13 paid company holidays
9/80 work schedule (every other Friday off)
Vision Insurance
Fidelity 401(k) plan with 4% employer matching
Medical Insurance
20 paid time off (PTO) days per year