Software Engineer III - Embedded Systems
About the role
We design and manufacture components, instruments, and systems that transform the world by identifying, enabling, and accelerating key photonics (i.e., light-based) technologies. This position will be responsible for the design and development of control firmware and software for a broad range of precision laser and photonic instruments within the Laser Systems and Technology (LST) business unit.
The successful candidate will have the ability to design and build complex embedded code for micro-controllers as well as graphical user interfaces (GUI). The Software Engineer should have sufficient proficiency and experience to serve as a go-to reference and resource to guide a multi-disciplinary team in making successful decisions in architecting complex codebases, facilitating collaborative software development via GIT and Azure DevOps. This position will also mentor and supervise junior members of the software/firmware team within the LST business unit. Although the position is located in the Baltimore/Washington DC area, occasional duties may be required at other Thorlabs locations.
Responsibilities
- Firmware and software development for the company's advanced photonics and instrumentation products.
- Microcontroller programming.
- Programming graphical user interfaces (GUI).
- Complex software/firmware architecture planning and implementation.
- System level thinking and cross-disciplinary interactions.
- Managing multiple projects simultaneously, maintaining schedules and reporting on progress to business unit leadership.
- Documentation and bug tracking.
- Production support, as needed.
- Training, mentoring, and supervising junior team members.
Requirements
Experience: 7+ years of experience in firmware or software development for scientific, academic, industrial, biotech, medical, or semiconductor instrumentation.
Education: Bachelor's degree (BS), Master's degree (MS) preferred, in Computer Science, Computer or Electrical Engineering, or related field.
Skills
Required:
- Experience with C/C++ programming for embedded real time systems and microcontroller firmware.
- Hands-on experience with embedded development, including bare-metal and RTOS environments.
- Strong debugging skills and proficiency with electronics lab tools (oscilloscopes, logic analyzers, multimeters).
- Strong commitment to software engineering best practices including version control, documentation, and structured release management.
- GUI development with C# and/or Qt C++ on either Windows or Linux.
- Python.
- GIT for software version control.
- Experience with Linux system configuration.
Preferred:
- Experience with STM32 microcontrollers and FreeRTOS.
- Proficiency with modern C++.
- Experience using Azure DevOps for managing software projects.
- Linux Bash scripting.
- General understanding and/or hands-on experience with analog and digital electronics.
- Good communications skills, both oral and written, technical presentation skills.
Pay
The estimated pay range for this role is $99,000 - $130,000 annually.
Benefits
- Medical, dental, and vision insurance.
- Company-paid life insurance.
- Generous PTO package.
- 401(k) plan.
- Tuition reimbursement.