Skip Navigation

Principle Software Engineer
Carlsbad, CA

Back To Job Board

Direct Hire

$169,000 - $205,000 / yr

Principal Software Engineer, (Embedded, C/C++)

We are currently recruiting for a Principal Software Engineer. As the Principal Software Engineer, you will develop software and network applications and business solutions that enhance our product line. In addition, you will participate in the development of embedded applications that provide functionality to our products, with an emphasis on real-time, multitasking designs.

Position Summary:

In this role, you will join a team of experienced peers and lead the design and development of firmware and software applications of new complex projects. Your day-to-day playbook will revolve around leading team meetings to provide input on the overall software architecture, project development efforts, and schedule estimates through all phases. Plus, as a hands-on lead, you’ll design software and firmware using high-level design and modeling tools, compilers, and low-level assemblers and make recommendations of new software technologies to be applied to new product development. This role will also investigate customer problems as requested by Sales, Marketing, or Service and recommend and implement solutions and opportunities for improved efficiencies. Leading by example with a passion for excellence, you’ll also mentor junior engineers and be a champion for their growth and development on all phases of the process from identifying and defining requirements, documentation and review, to hands-on test, debug, and validation.

What you will need to succeed in this position:

  • Bachelor’s Degree with 10+ years of experience and excellence at writing embedded C++ applications running on Linux, RTOS, and bare-metal, etc.
  • 5+ years of technical experience in leading software development for embedded systems and experience with system-level architectures for embedded SW/HW design.
  • Experience with full software lifecycle: specification, design, implementation, integration, debug, and maintenance are required.
  • Thorough understanding of the Linux OS and kernel, specifically for embedded devices. Experience with bash scripting.
  • Experience with and or strong working knowledge of DSP, ARM processors, and fully featured microcontrollers, Linux kernel/driver development for multi-processor heterogeneous systems, Bluetooth Low Energy (both central as well as peripheral devices with custom profiles), SQL database development, and maintenance.
  • Experience with and or strong working knowledge of industry-standard networking and data communication protocols (web services, SOAP/REST, WebSockets), streaming audio over the network using Gstreamer, developing software to validate software/hardware systems (board bring up).
  • Understanding of full-stack web applications development (using Node.js and additional programming languages – node.js, react.js python, java, C# along with mobile applications development experience (Android) is highly desirable.
  • Experience with the Yocto Project, using IDEs such as Eclipse and VS Code, and working knowledge of continuous integration to include Git, Agile, and/or Kanban is highly desirable.

You will have the opportunity to learn and grow while developing our future products. Our benefits package includes tuition reimbursement; 3 weeks paid vacation your first year, paid holidays, medical, vision and dental coverage, pet insurance, life insurance, and 401K contributions.


The physical demands and work environment described here are representative of those that must be met by an employee to successfully perform the essential functions of this job. Reasonable accommodations may be made to enable individuals with disabilities to perform the essential functions. The employee will occasionally lift and move up to 25 pounds.

Back To Job Board

Submit Your Resume

"*" indicates required fields

First Name*
Last Name*
Max. file size: 20 MB.
Drop your resume and other files here or upload here
This field is for validation purposes and should be left unchanged.