Develop and maintain software applications that interface with hardware systems; design, implement, and test device communication and control functionality; troubleshoot software, hardware, and integration issues; collaborate with engineering teams; participate in code reviews and documentation.