• Bachelor’s Degree in Computer Engineering or equivalent required.
• Six (6) or more years of experience with demonstrated credibility and track record in embedded programming, to specify, architect, design, code, test, troubleshoot and support embedded applications in a team environment.
• Proficiency with software development processes and tools such as requirements management, design modeling / UML, software architecture, configuration management, software testing, task/issue/defect tracking and review
• Proficiency with IDE, source code control, documentation, and design modeling tools
• Proficiency in object oriented design and programming techniques and experience in a higher-level programming language (preferably C++).
• Experience in numerous embedded controls (e.g. PID control loops, motor control, digital filters, state machines, low-level peripheral drivers, etc.)
• Experience with embedded RTOSes, and embedded Linux
• Familiarity with Agile or Scrum software development process in a team environment
• Familiarity with continuous integration build server technology
• Familiarity with troubleshooting hardware technology (i.e. reading electrical schematics and using multimeters and oscilloscopes)
• Familiarity with industrial fieldbus protocols and other serial network communications is a plus (ProfiNet, Ethernet/IP, DeviceNet, CAN, USB, RS485, Modbus, etc.).
• Familiarity with Ethernet and wireless communications stacks is a plus (TCP/IP, UDP, Zigbee, Bluetooth, wifi, etc.)
• Limited travel may be required.