Sr C/C++/ RTOS Software Engineer - Core Tech Team
About the position
We are seeking a full-time Senior C/C++/RTOS Software Engineer at Garmin's location in Cary, NC or at Garmins U.S. Headquarters location in the Greater Kansas City area. This position is on the Core Platform Technology - Sensor Algorithms Team. As a member of the team, you will help implement cutting edge sensor-based algorithms that help people beat yesterday. This team’s work spans across multiple Garmin products and includes features such as activity monitoring, sports metrics, elevation-based features, and safety features.
Responsibilities
- Serves in a leadership capacity as an individual contributor for carrying out software development in C and C++
- May serve as a Lead Software Engineer for complex software development project designs and/or reviews architected modules and software systems supporting new technology or improving capability/performance of existing functionality
- Designs and deploys embedded software solutions, primarily in C++ and C, to be used throughout Garmin's extensive ecosystem of consumer electronics products, including smartwatches, cycling computers, and more.
- Researches fundamental problems and implements algorithm solutions that are appropriate
- Builds hardware-in-the-loop test infrastructure, integration pipelines, and diagnostic tools that reproduce field issues and verify fixes before deployment.
- Offers peer technical assessments in areas of expertise, new technologies and software designs
- Evaluates and understands various design tradeoffs including power consumption, cost, system constraints, reliability, and time to market.
- Participates in project leadership and/or program planning including providing technical input to product development plans and concept documents
- Makes substantial contributions toward determination of project goal/objective feasibility and applies good judgment in setting schedules/risk taking
- Mentors and provides guidance to less experienced Software Engineers (1 & 2)
- Contributes to advanced technical research on new technologies
- Offers process improvement suggestions and authors new procedures as appropriate
- Provides reliable solutions to a wide range of difficult problems using sound problem solving techniques
Requirements
- Bachelor’s Degree in Computer Science, Electrical Engineering, Computer Engineering, Software Engineering, Math, Physics or related field AND a minimum of 5 years relevant experience OR an equivalent combination of education and experience
- Mastered proficiency in writing software in C, C++ on RTOS
- Experience with Python for visualization and statistical analysis.
- Demonstrated proficiency with designing well architectured software systems and modules that support new technology or improve capability/performance of existing functionality
- Demonstrated competence with researching fundamental problems and implementing appropriate algorithmic solutions
- Demonstrated ability to serve as a lead software engineer for a complex software project
- Ability to decompose functional requirements into well-defined tasks while balancing quality, quantity, and complexity in work output
- Demonstrated capability to offer peer technical assessments in areas of expertise, new technologies and software designs
- Demonstrated strong and effective verbal, written, and interpersonal communication skills
- Must be positive, detail oriented, organized, team oriented and a driven problem solver, multi-tasker, and self-starter with the ability to prioritize and lead in a fast paced, deadline-driven environment
Nice-to-haves
- Strong quantitative, math, and statistics skills
- Experience in defining, characterizing, and baselining performance metrics for systems and/or algorithms.
- Experience with automation and testing software and systems, including hardware-in-the-loop (HIL), regression testing, GoogleTest, unittest. Experience working with CI/CD pipelines, such as Jenkins or Zuul.
- Experience with data analysis and statistical methods for investigating system behavior and root cause analysis.
- Experience debugging complex problems on embedded systems.
- Experience working on multiple simultaneous development projects.
- Familiarity with sensor fusion, time series analysis, Kalman filtering, or digital signal processing (DSP).
- Familiarity with inertial sensors, magnetic, and/or barometric pressure sensors.
- Proficiency or experience with Java for backend/server-side systems.
- Interest and ability to learn new tools, technologies, and methodologies across embedded systems, testing frameworks, and algorithm development as needed.
- Excitement to create and deliver algorithms for runners, cyclists, hikers, golfers, athletes, fitness buffs, and any person seeking to beat yesterday.
Benefits
- This position is eligible for Garmin's benefit program.