Embedded Software Engineer Role
We are seeking an experienced Embedded Software Engineer to join our team. In this role, you will develop software and firmware solutions for embedded systems while improving the quality of the design of our electronic and software products by thorough testing.
About This Role
* Develops, maintains, and optimizes high-quality embedded C code to interface power electronics for LED lighting products, with a focus on reliability, performance, testability and long-term maintainability.
* Integrates external communication protocols, including Ethernet and serial.
* Designs software architectures with consideration for real-time constraints, processing throughput, execution context, electrical protocols, data coherence, and concurrency.
* Performs firmware bring-up of firmware on new electronics designs, ensuring proper initialization, configuration, and validation of the embedded system.
* Develops and maintains Yocto recipes, Makefiles, Bash and Python scripts, and other build automation tools.
* Participates in and appreciates collaborative peer review of code, designs, test strategies and project plans.
* Writes, maintains and executes a variety of unit, integration, and end-to-end tests to ensure functional correctness and prevent regressions.
* Gathers, analyses and workshops requirements.
* Regularly presents work to Product Managers to gather early feedback and align on requirements.
* BREAKS down work into small actionable tasks with time estimates.
* Develops and debugs software in a mixed Linux and Windows environment.
* Participates in Agile Retrospectives to evolve the team's process in a continuous improvement cycle.
Requirements
* Bachelor's degree in Computer Science or related field of study, or equivalent years of work experience.
* 2-4 years of Embedded Linux and C programming experience.
What You Bring
* High proficiency in understanding software flow from computer science first principles across multiple layers of context in an embedded system.
* High proficiency in understanding the interaction between software and electronic components in an embedded system.
* Moderate proficiency programming in ANSI standard C.
* Moderate proficiency working in a Linux software development environment.
* Familiarity with building and cross-compiling open-source projects from scratch.
* Familiarity with Yocto and building Linux from source.
* Familiarity with Ethernet and serial interfaces.
* Highly proficient at applying analytical and problem-solving skills.
* Strong attention to detail and ability to follow detailed, established procedures, policies, and processes.
* Familiarity with OOP, SOLID, GRASP, Design Patterns, and refactoring to Patterns.
* Ability to build and configure physical test beds for various hardware controller configuration and applications, including setting up communications.
* Moderate proficiency with Microsoft applications such as Word, Excel, PowerPoint, and Outlook.
* Excellent verbal and written English communication skills.
* Excellent time management and organization skills.
Benefits
We offer amazing corporate culture, fun company events, company donation matching and volunteer rewards, career development opportunities and profit sharing bonus.
Others
We are an equal opportunity employer. All qualified applicants will receive consideration for employment without regard to age, ancestry, color, disability, gender, gender identity or expression, military and veteran status, national origin, race, religion, sexual orientation, or any other applicable legally protected status or characteristic.