Bachelor's degree in Computer Science, Computer Engineering, or Electrical Engineering
5-10 years experience in Software Engineering or related
Develops embedded software based on prototype algorithms with supervision
Mastery of high level development languages (e.g. C/C++, Rust)
Experience with UML/SysML
Experience with in-circuit emulators, JTAG debuggers and laboratory test equipment
Excellent development and troubleshooting skills on embedded targets
Excellent knowledge of OS coding techniques٫ IP protocols٫ interfaces and hardware subsystems
Expertise in software development for real-time systems
Communicate with customers and stakeholders to establish requirements and describe the design and deliverables
Identify program/system-level technical risks and develop and execute mitigation strategies for them
Actively mentor less experienced engineers
Evaluate results to establish problem causes and develop solutions for inefficient or problems
Develops and executes software tests to check compliance with requirements
Prepares technical data, procedures, reports, drawings, manuals, and other required documentation
Ability to take responsibility for subset of engineering scope
Drive solutions to complex problems with limited direction – contribute to requirements development and architecture solution ideation
Evaluates requirements, proposes solutions, explores design trades to support a design