Job Summary:
We are seeking a Controls Software Engineer to join our Equipment Engineering team. In this role, you will develop C# desktop applications that control and interface with custom production and engineering equipment using a variety of hardware communication protocols, including Ethernet, USB, and RS-232.
Working alongside mechanical, electrical, and software engineers, you will contribute to the design, development, and continuous improvement of innovative manufacturing equipment. This position offers the opportunity to work on challenging, real-world automation systems while helping develop reliable, maintainable software that supports both engineering and production operations.
Our team is committed to modern software development practices, including clean architecture, object-oriented design, source control, and collaborative development, providing an excellent environment for engineers to learn and grow.
Responsibilities:
-
Develop and maintain C# desktop applications that control and interface with production and engineering equipment.
-
Design, implement, test, and debug software that communicates with hardware devices using Ethernet, USB, RS-232, and other industrial communication protocols.
-
Collaborate with mechanical, electrical, and software engineers throughout the design, development, and commissioning of new equipment.
-
Write clean, maintainable, and well-documented code using modern software engineering principles and team coding standards.
-
Utilize version control systems (Subversion, Git, etc.) and participate in collaborative development workflows, including branching, merging, code reviews, and CI/CD processes.
-
Troubleshoot software and hardware integration issues using common electronic test equipment and diagnostic tools.
-
Support continuous improvement efforts by identifying opportunities to enhance equipment performance, reliability, and maintainability.
Preferred Qualifications
-
Interest in writing clean, maintainable, and reusable software as part of a collaborative engineering team.
-
Strong foundation in object-oriented programming with C# and the .NET platform.
-
Experience developing Windows desktop applications using WPF and the MVVM design pattern.
-
Familiarity with modern software engineering practices, including Clean Architecture, SOLID principles, dependency injection, and the .NET Generic Host.
-
Experience using version control systems such as Git or Subversion in a collaborative development environment.
-
Working knowledge of SQL databases and data access concepts.
-
Familiarity with hardware communication protocols such as Ethernet, USB, or serial (RS-232) interfaces.
-
Exposure to industrial automation technologies, including PLCs, Beckhoff controllers, or Structured Text, is a plus but not required.
-
Experience with Linux and embedded platforms such as Raspberry Pi is a plus.
-
Strong analytical and problem-solving skills with an interest in developing software for real-world automation systems.
Education and Experience:
-
Bachelor's or Master's degree in Computer Science, Software Engineering, or a closely related field.
-
0-2 years of software development experience, including internships, co-op experience, or relevant academic projects.
Location:
This role requires on-site presence; it is not a remote position.