Software Engineer – Equipment Control & Automation
Summary
This role involves developing software to control and operate automated equipment, working across the stack from firmware and hardware communication to Windows-based GUI applications. The engineer will collaborate with cross-functional teams to integrate sensors, motion systems, and electronic hardware into functional products.
Position Overview
We are looking for a Software Engineer who enjoys working with both software and hardware to develop the software that controls and operates our automated equipment.
You will work across the boundary of software, firmware, electronics, and automation — from writing C/C++code and communicating with hardware, to developing Windows applications and user interfaces that allow engineers and customers to operate complex equipment.
This is a hands-on engineering role where you will see your software directly control real hardware and equipment. You will work closely with software, electrical, mechanical, and application engineers to bring new equipment features from concept to working products.
If you enjoy understanding how things work, solving difficult technical problems, and seeing your code interact with the physical world, this role could be a good fit.
Key Responsibilities
- Develop, test, maintain, and support software for automated equipment.
- Write software in C/C++, with opportunities to work with C#/.NET where appropriate.
- Develop software that communicates with and controls electronic hardware, sensors, cameras, motion systems, controllers, and other equipment.
- Work with firmware, device drivers, communication interfaces, and hardware-software integration.
- Develop software for equipment control, configuration, monitoring, data acquisition, and diagnostics.
- Develop Windows-based applications and utilities to make equipment easier to operate and maintain.
- Create and improve graphical user interfaces (GUI) for equipment operation and monitoring.
- Work with electrical/electronics and mechanical engineers to integrate new hardware and software features.
- Troubleshoot problems across the software, firmware, and hardware and identify the root cause of issues.
- Work with application engineers and customers to understand their requirements and develop practical software solutions.
- Improve equipment performance, reliability, automation, and ease of use.
- Participate in the complete development cycle —from design and prototyping to testing, debugging, deployment, and product support.
Requirements
- Diploma or Bachelor's degree in Computer Engineering, Electrical & Electronic Engineering, Computer Science, Mechatronics, or a related field.
- Basic to good programming experience in C or C++. Experience with C#/.NET is a plus.
- Interest in or some experience with firmware, embedded systems, hardware integration, or equipment control.
- Basic understanding of electronics and electronic circuits.
- Comfortable learning how software communicates with and controls hardware.
- Familiarity with Windows software development is an advantage.
- Some understanding of multi-threaded programming, software testing, and debugging is beneficial.
- Familiarity with communication interfaces such as USB, Ethernet, RS-232/RS-485, SPI, I²C, or similar is a plus, but not essential.
- Experience with PLCs, robotics, motion control, machine vision, sensors, or automation equipment is an advantage.
- Good analytical and troubleshooting skills and an interest in finding out why something isn't working.
- Able to work independently while collaborating with engineers from different disciplines.
- Good communication skills and a willingness to learn new technologies.