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.