Senior Embedded Software Engineer
Senior Embedded Software Engineer
Core Expectations for the Position:
The Senior Embedded Software Engineer will collaborate in the design, development and maintenance of new products and new features for existing products within the Kitchen Brains ecosystem. In all of these tasks, he or she will work closely with the Director of Software Engineering and other development team members as well as our support, operations and quality assurance teams. As a senior member of the team, you may be asked to mentor and direct junior members of the development team from time to time. Most of your work will be done at either our Stratford, CT or Fort Lauderdale, FL facilities.
As a key member of the Embedded Development team, your responsibilities will include:
Responsibilities:
- Design, program and test enhancements and new features for the Kitchen Brains embedded products including timers and touch screen controllers that may have multiple boards, SOMs, video, sound, Wi-Fi and security requirements.
- Maintain the existing Kitchen Brains embedded product set by investigating, designing and implementing fixes to customer reported defects.
- Works as part of a team to define and develop requested software development deliverables.
- Participate in the development of product and technology road maps.
- Remain current on core technologies and best practices.
- Provide solid security coding practices.
- Maintain/update documentation related to software features and functionality.
Requirements:
- Bachelor’s degree in Electrical Engineering or Computer Science or equivalent.
- 7+ years of professional software development using C/C++.
- Experience with real time design and real time operating systems
- Experience with programming different embedded microcontrollers
- Experience with designing software to run on LINUX systems
- Experience with software debuggers and emulators, compilers, linkers, and build environments
- Experience reading electrical schematics for integrating new software on different hardware platforms
- Knowledge of and experience using lab equipment (oscilloscopes, meters, logic analyzers etc.)
- Formal Software Behavior specification approaches such as UML, OO, State Machines, Data Flow Diagrams, Flow-Charts
- Experience with Software Quality Control, issues tracking, gate reviews, review checklists
- Formal Software Test Methods, tools, procedures
- Excellent communication and collaboration skills and an ability to interface with business stakeholders and other engineers.
- Ability to prioritize, meet deadlines and to work well under pressure.
- Must enjoy working in a fast-paced teamwork environment and dealing with a variety of people and shifting priorities.
- Proficient written and oral communication skills that provide effective interaction with all levels of the business organization.
- Proficient analytical and problem-solving skills.
- Experience working with tools like Git and Jenkins a plus.
- Experience working in an Agile/Scrum environment using tools like Atlassian JIRA/Confluence a plus.
- Hands-on LINUX kernel experience including build systems (Yocto, Arch, Buildroot), u-boot, kernel vs kernel modules, system libraries, system utilities and user space is a plus.
- Proficiency in scripting (Batch, Python) is a plus.
- Experience with security and memory management is a plus.
- Development of software under IEC, ISO, UL, DO-178C, or other formal software Quality Management Systems. The ISO/IEC 12207 Systems and software engineering – Software life cycle processes is a plus.