Senior Embedded Software Engineer
Location: Worthing, SD Department: Engineering Job Type: Full-Time
About Puck
Puck started with a family, a few acres in Manning, Iowa, and a habit of building better tools than the ones on the market. Since then we've grown into a family of manufacturing brands serving agriculture, oil and gas, fire, and industrial markets - engineering equipment that's used hard, in the field, everyday. We're Built to Lead, and that shows up in how we build products and how we build careers: we invest in people, push for continuous improvement, and don't cut corners.
About the Role
We're looking for a Senior Embedded Software Engineer to lead the design and development of embedded software powering our connected industrial and machine control systems. You'll work in an embedded Linus environment across C++, Qt, and Structured Text (ST), owning technical architecture from hardware-software interfaces down to the UI layer. This is a senior individual contributor role - you'll set technical direction, mentor other engineers, and directly shape how our platforms evolve, while staying hands-on with firmware, application code, and system-level debugging.
If you like solving hard problems at the intersection of software, hardware, and controls - and want your work to end up running in real machines in the field - this is that role.
What You'll Do
- Lead the design, implementation, and long-term evolution of embedded software components using C++, QT, and modern engineering practices in an embedded Linux environment.
- Own technical design for complex embedded systems - architecture, hardware-software interfaces, inter-process communication, device integration, and performance optimization.
- Build and maintain software for machine, vehicle, or industrial control systems using protocols, and configuration tools.
- Design UI and application-layer functionality in Qt for operator displays, diagnostics, and configuration tools.
- Contribute to control logic and automation using Structure Text (ST), collaborating across embedded and controls. domains.
- Drive engineering quality through code reviews, design reviews, technical standards, and testing strategy.
- Partner with product, program, QA, and engineering peers to turn requirements into robust software solutions.
- Lead root-cause analysis on complex field and lab issues spanning software, hardware interfaces, and communication buses.
- Build and improve automated build, integration, test and release workflows.
- Mentor engineers and help shape the technical roadmap and long-term architecture of our embedded platforms.
What You Bring
- Bachelor's degree in Computer Engineering, Electrical Engineering, Computer Science, Software Engineering, or related field — or equivalent practical experience
- 6+ years of professional experience developing production-grade embedded systems
- Deep proficiency in C++ for embedded applications, including object-oriented design, multithreading, memory management, and performance-conscious development
- Strong hands-on experience in embedded Linux, including system bring-up, process-level debugging, and device interfaces
- Experience building UI or application components with Qt in embedded or industrial environments
- Practical experience with industrial or vehicle communication protocols (J1939, CANBus, Ethernet) and message-based system integration
- Experience with Structured Text (ST) or comparable IEC 61131-3 programming for control systems or automation
- Solid grounding in source control, automated testing, debugging tools, and modern team-based development practices
- Comfort using AI-assisted development tools to improve design, coding, testing, and documentation without sacrificing code quality or judgment
- Strong debugging and problem-solving skills across software, hardware interfaces, and communication networks
- Excellent communication skills and the ability to work across software, hardware, systems, and non-engineering teams.
Nice to Have
- Low-level Linux development, device drivers, board support packages, or hardware abstraction layers
- Cross-compilation toolchains, Yocto, Buildroot, or similar embedded Linux build environments
- Hands-on experience with bus analyzers, logic analyzers, or protocol analyzers
- Real-time systems, concurrency, and performance optimization in resource-constrained environments
- Experience integrating software with sensors, actuators, displays, controllers, or other embedded peripherals
- Knowledge of software safety, reliability, diagnostics, or secure development practices for industrial/vehicle systems
- Experience with hardware-in-the-loop (HIL), system integration, or validation testing
- A track record of mentoring engineers and shaping coding standards across teams
- Familiarity with regulated, industrial, automotive, agricultural, or heavy equipment environments
Why Puck
- Competitive pay and benefits, including health, dental and vision
- 401(k) with company match
- Paid time off and holidays
- A family-owned company where your work directly shapes machines used in the field - not just a slide deck.
Puck is an Equal Opportunity Employer