C++ Embedded Programmer

C++ Embedded Programmer

Department:   Information Technology (IT)

Location:        Hybrid (remote|onsite)

Number of Positions: 1    

Position Type:     Full-Time

Schedule (may change based on business needs): 8-5pm

Position Overview:

As an C++ Embedded Programmer, you will be responsible for executing complete embedded software life cycles for the company. You will meet with internal clients and engineering teams to determine the project requirements, design software architecture, and run tests to ensure the functionality of embedded systems.

You should have working knowledge and experience in C and C++, excellent knowledge of embedded coding techniques and possess detailed knowledge of microcontroller protocols. You should be able develop scalable software systems that are optimized for the embedded device within hardware constraints and easily identify inefficiencies or software errors.

Responsibilities:

Must be able to…

  • Meet with internal clients, designer(s), and engineering team to define technical requirements.
  • Create design goals and deadlines.
  • Design program architecture based on project requirements and hardware specifications.
  • Design, write and implement software code, embedded programs, and system protocols according to desired specifications.
  • Conduct tests on the embedded software systems to ensure proper integration, scalability, and structure.
  • Document software application values.
  • Troubleshoot and optimize embedded systems and diagnose errors, malfunctions, or inefficiencies.
  • Implement effective repairs, modifications, and upgrades to the embedded code.
  • Liaise with design and engineering teams to ensure process alignment.
  • Manage project timelines and reporting any delays or issues to the supervisor.
  • Generate diagnostic reports, technical manuals, and software development documentation.
  • Maintain embedded software programs, systems and perform maintenance as needed.

Nothing in this job description restricts management’s right to assign or reassign duties and responsibilities to this job at any time.

Required Knowledge, Skills, and Experience

Minimum/Essential Qualifications:

  • Bachelor’s degree in computer science, computer engineering, or similar.
  • 3+ years' experience as an embedded developer, engineer, programmer.
  • Advanced experience in C and C++ programming languages.
  • Strong knowledge of hardware architecture such as AVR and ARM (including familiarity with datasheets).
  • Familiarity with hardware communication protocols including USB, UART, I2C, and SPI.
  • Understanding of basic electrical theory and components.
  • IOT design experience (techniques and tools including AWS, Azure, HTTP protocols, etc.).
  • Experience with Full Stack development.
  • Experience with SQL.
  • Familiarity with Test Driven Development.
  • Knowledge of modern OS coding techniques, IP protocols, and hardware interfaces.
  • Experience with OS platforms such as Linux, Unix, and RTOS concepts.
  • Experience and demonstrated success working in a team environment.
  • Excellent diagnostic skills.
  • Strong critical thinking, analytical and problem-solving abilities.
  • Strong organizational and project management skills.
  • Good communication skills.
  • High-level writing and documentation skills.
  • An openness and drive to learning new technologies and techniques.
  • Focus on delivering quality outcomes.
  • Passionate about continuous improvement; generating and implementing ideas for making process, procedure, experience better.
  • Ability to travel to Central Boiler locations (Greenbush, MN, Red Lake Falls, MN) as needed.

Preferred Qualifications/Selection Criteria:

  • Experience and/or a strong interest in working in IT for manufacturing.
  • Experience in agile collaboration and peer code review.
  • Knowledge and experience with RTOS.
  • Basic electrical engineering knowledge/skills.
  • Big data analytics experience.

Physical Requirements such as below:

  • Physical requirements include sitting, walking, and reading.
  • Generally, spend the workday sitting at a workstation and operating computer devices, such as, but not limited to keyboard, mouse and screen
  • Generally, spend the workday performing repetitive motions that involve or affect the hands and head.