Software Engineer (C++ / C#) – Embedded & Device Systems-CTO
Software Engineer (C++ / C#) – Embedded & Device SystemsRead on to find out what you will need to succeed in this position, including skills, qualifications, and experience.LocationSisters, OregonPosition SummaryWe are seeking a hands-on Software Engineer with strong *C++ and C# programming experience* to maintain, troubleshoot, enhance, and support our existing software platform. This role combines software development, advanced technical support, embedded systems troubleshooting, and customer-facing communication.The ideal candidate can quickly understand an existing codebase, diagnose root-cause issues, implement reliable fixes, and work comfortably across Linux, Microsoft, networking, and embedded hardware environments. This position is focused less on building entirely new products from scratch and more on understanding, maintaining, improving, and supporting a complex software ecosystem.About Our EnvironmentOur products operate in real-world customer environments and combine software, hardware, networking, and embedded systems. The successful candidate will work with Linux-based and Microsoft-integrated systems running on ARM and UpCore hardware platforms used in self-service and industrial applications.This role involves supporting and improving software that interacts with hardware devices, peripherals, payment systems, sensors, networking equipment, and cloud-connected services. Candidates should enjoy troubleshooting problems that span software, hardware, operating systems, and field deployments.Experience with kiosks, self-service systems, payment devices, IoT products, industrial equipment, vending systems, embedded hardware, or similar device-based technologies is highly desirable.Key Responsibilities* Analyze, understand, maintain, and improve an existing *C++ and C#/.NET codebase** Diagnose software defects, identify root causes, and implement tested solutions* Troubleshoot and resolve issues involving Linux operating systems, Microsoft environments, databases, networking, and ARM/UpCore hardware* Participate in the Software Development Life Cycle (SDLC) by logging defects, validating fixes, supporting testing efforts, and assisting with release readiness* Collaborate with engineering teams during requirements gathering, testing, deployment, and product improvement initiatives* Perform log analysis, command-line troubleshooting, and system configuration* Support firmware updates, device provisioning, and embedded system behavior* Test hardware and software interactions to reproduce and resolve customer-reported issues* Review system logs, kernel messages, application errors, and hardware diagnostics* Document issues, resolutions, and repeatable troubleshooting procedures* Maintain accurate records in ticketing systems such as Jira, Zendesk, Freshdesk, or similar platforms* Provide technical guidance to customers, field technicians, and internal teams* Create and maintain technical documentation* Assist with advanced customer escalations requiring code-level investigation* Recommend and implement improvements that increase system reliability, performance, and maintainability* Support deployments, upgrades, and ongoing system maintenanceRequired Skills & Qualifications* Strong professional experience programming in *C++** Experience with *C# and .NET development** Ability to read, understand, debug, and modify software written by other developers* Strong troubleshooting and root-cause analysis skills* Working knowledge of software architecture, object-oriented programming, and debugging methodologies* Strong working knowledge of Linux systems, including command-line operations, package management, system monitoring, and troubleshooting* Proficient with Microsoft technologies, including Windows OS, Microsoft 365, Azure AD, Intune, Teams, SharePoint, and enterprise administration tools* Experience with ARM-based systems, embedded hardware, or IoT devices* Familiarity with UpCore modules, boot behavior, firmware, GPIO, and hardware interfaces* Ability to read and interpret system logs, kernel messages, application logs, and hardware diagnostics* Understanding of networking fundamentals including TCP/IP, DHCP, DNS, routing, VPNs, and connectivity troubleshooting* Experience participating in the SDLC, including:* Logging defects* Validating fixes* Supporting regression testing* Reviewing release notes* Providing customer-impact analysis* Experience with source control systems such as Git* Excellent written and verbal communication skills* Ability to translate technical issues into customer-friendly explanations* Ability to work independently and take ownership of issues from diagnosis through resolutionPreferred Experience* Embedded Linux development* Industrial hardware, kiosks, IoT devices, or device-based product lines* Serial consoles, UART, SSH, and remote debugging xibtplm * Firmware flashing tools and bootloaders such as U-Boot and EFI* Bash, Python, PowerShell, or automation scripting* SQL databases and data-driven applications* Hardware interfaces including USB, GPIO, sensors, relays, CAN, and serial communications* Experience supporting field technicians and non-technical users* Experience working directly with engineering teams throughout development and release cycles* Experience supporting mixed-environment infrastructures and resolving cross-platform compatibility issues* Experience with payment systems, unattended retail, vending, or self-service technologiesIdeal Candidate ProfileThis person should be:* Calm, methodical, and structured in troubleshooting* Comfortable working independently with minimal supervision* Able to switch between software, hardware, networking, and customer-support responsibilities* Curious and willing to dig into source code, logs, configurations, and hardware behavior* Patient with customers but confident when diagnosing technical issues* Reliable, consistent, and documentation-driven* Comfortable performing hands-on testing and reproducing issues* Focused on finding root causes rather than temporary workarounds* Comfortable inheriting and improving an existing software platformThis position is ideal for someone who enjoys solving complex technical problems, maintaining and improving existing systems, and working at the intersection of software, hardware, Linux, Microsoft technologies, and customer support.Pay: $65,000.00 - $110,000.00 per yearWork Location: In person