Senior Software Developer - Embedded (Job Req #2025-275)
Ross Video
Job overview:
We are looking for a talented Embedded Software Engineer to join our dynamic software team. This role offers a unique opportunity to contribute to the full software lifecycle—from requirements definition to production deployment and post-production support. You will play a key role in developing robust, scalable, and efficient software for cutting-edge embedded systems, while collaborating closely with hardware teams and customers to ensure seamless system integration and support.
The ideal candidate is an experienced engineer with a solid background in embedded development, particularly in bootloaders, Linux device drivers, and ARM-based SoC platforms. We're seeking someone who is proactive, adaptable, and able to jump into critical issues, resolve them efficiently, and seamlessly resume ongoing project work. Strong customer-facing communication skills are also essential.
Who you report to: Senior Manager, Embedded Software Development
What we offer:
Ross offers competitive salaries, comprehensive health plans, and several perks to help you perform at your best.
Some of these perks include flexible hours, generous paid time off, fitness/wellness allowance, an employee share ownership program, development support, and a ton of fun social activities and events!
Best of all, you will be part of the Ross Video family, and we've got an energizing environment here.
What the job is all about:
- Design and implement software for embedded systems, from concept through production.
- Develop, test, debug, and maintain embedded software components.
- Create stable, scalable, and high-performance system solutions.
- Review and improve code for efficiency, stability, and scalability.
- Integrate and validate new hardware and software designs.
- Develop and troubleshoot bootloaders and Linux kernel device drivers.
- Work with ARM-based SoCs (e.g., Altera SoC, Xilinx Zynq).
- Collaborate on networking interfaces and protocols (TCP/IP, UDP, VLAN).
- Implement and manage peripheral interfaces such as USB, I2C, SPI, PCIe, and DMA.
- Utilize Yocto, Buildroot, and other embedded Linux build frameworks.
- Conduct performance tuning and support QA validation efforts.
- Respond quickly to critical issues in the field or during development, resolve them independently, and return to ongoing tasks with minimal disruption.
- Provide post-production technical support, including direct communication with customers for issue resolution and technical guidance.
- Collaborate with hardware design and development teams to ensure smooth system integration.
- Assess, adapt, and integrate third-party and open-source software components.
Who you are:
- Bachelor’s degree in Computer Science, Electrical/Computer Engineering, or a related field.
- Proven experience in embedded software development with preemptive, multitasking real-time operating systems (RTOS).
- Proficiency in C and C++ programming for embedded systems.
- Hands-on experience with Linux kernel internals, device drivers, and board bring-up.
- Strong understanding of OS design, IP networking protocols, and hardware-software interfacing.
- Familiarity with embedded development frameworks such as Yocto, Buildroot, and associated cross-compilation toolchains.
- Experience with version control, bug tracking, and code review tools and practices.
- Ability to read and interpret hardware schematics and datasheets.
- Excellent written, verbal, and interpersonal communication skills, including the ability to confidently engage with customers and present complex technical information.
Preferred Traits
- Proactive and self-motivated: Takes initiative in identifying and solving issues without waiting for direction.
- Customer-oriented mindset: Comfortable interacting with customers to understand problems, explain solutions, and build trust.
- Context-switching ability: Can shift focus to address urgent issues and then efficiently return to ongoing development tasks without losing momentum.
- Strong problem-solving skills: Analytical thinker with a practical approach to debugging and optimizing embedded systems.
- Collaborative attitude: Works effectively with cross-functional teams including hardware, QA, and customer support.
- Ownership mentality: Takes full responsibility for assigned components or issues, from start to finish.