Senior Embedded Software Engineer Job Description Template
Our company is looking for a Senior Embedded Software Engineer to join our team.
Responsibilities:
- Create maintainable, well documented code and tests; participate in code reviews; troubleshoot issues; optimize system performance;
- Keep abreast of the latest technology trends & best practices, and understand when might be the appropriate time to adopt them;
- Participate in agile software development practices such as standups, estimating, prioritization, and retrospectives;
- Support algorithm implementation, system integration, test, and debug;
- Implement drivers in C/C++ and write test scripts to verify them across a variety of operating scenarios;
- Identify points of weakness in the software and electronics; help develop plans for improving and robustifying the product;
- Participate in interviewing and onboarding new team members;
- Interface with hardware design and development;
- Coordinate technical approach with cross-discipline team members;
- Review code and design;
- Develop and improve software development processes and procedures;
- Perform analysis, resolution, and tracking of defects and improvement to closure;
- Design, develop, code, test and debug system software;
- Contribute to the continuous improvement of best practices and processes within the engineering department;
- Design systems that can include components from embedded electronics to firmware to frontend, in collaboration with clients and teammates.
Requirements:
- Travel as needed, up to 10% throughout year;
- Confidence to represent organization as a technical contact on projects;
- Support various amounts of overtime (paid) depending on project needs;
- Ability to follow good software engineers processes;
- Proficient knowledge of software tools supporting Integrated Development Environments (IDE), version control, defect reporting and scripting;
- Exercises independent judgment and sometimes defines new procedures and practices to improve team and company performance;
- Proficient in Microsoft Office applications;
- Proficient ability to use the appropriate processes, procedures, and tools throughout the software development life cycle;
- Familiarity setting up various embedded toolchains, build, and debugging environments;
- Proficient programming in ROS, C, Python;
- Experience in reading schematics and data sheets;
- Experience writing unit test, code coverage profiling, and static analysis tools;
- Strong interpersonal and communication skills;
- Strong C++ skills, Object Oriented Design concepts, UML, and experience in real time operating systems for embedded systems;
- 5+ years experience in systems testing or equivalent field.