Embedded Software Engineer
Job Status: Full Time
Reports To: Engineering Manager, Embedded Systems
Amount of Travel Required: up to 15% Positions Supervised: None
Research, design, develop, and test embedded controller hardware and software. Set operational specifications and formulate and analyze system requirements. Apply principles and techniques of Embedded Design, Real-time Control applications and System Design Practices and Mechatronics.
Reasonable Accommodations Statement
To accomplish this job successfully, an individual must be able to perform, with or without reasonable accommodation, each essential function satisfactorily. Reasonable accommodations may be made to help
enable qualified individuals with disabilities to perform the essential functions.
Essential Functions Statement(s)
Requirement gathering and analysis to develop software solutions by studying system and subsystem needs
Determines operational feasibility by evaluating analysis, problem definition, requirements, solution development and proposed solutions.
Documents and demonstrates solutions by developing documentation, flowcharts, layouts, diagrams, charts, code comments and clear code.
Designing and developing firmware/software for new embedded products
Operate software development tools, lab equipment or other equipment to perform engineering
Use microcontrollers to develop control signals, implement control algorithms, or measure
process variables, such as temperatures, pressures, or positions.
Collaborate directly with electrical engineers in selecting hardware components as well as
testing and debugging firmware/software on hardware components.
Ensure conformance to design and equipment specifications and compliance with operational
and safety standards.
Recommend, plan, and lead software development improvement initiatives.
Obtains and licenses software by obtaining required information from vendors; recommending
purchases; testing and approving products.
This position is a senior position as the engineer will act as a mentor and be willing to teach less experienced engineers.
Responsible for continual improvement and monitoring of all Software Design and Development processes and procedures.
Ensures implementation and utilization of state-of-the-art analytical tools and techniques in the area of software development and reliability.
Develop or direct software system testing or validation procedures.
Prepare reports or correspondence concerning project specifications, activities, or status.
Updates job knowledge by studying state-of-the-art development tools, programming techniques, and computing equipment; participating in educational opportunities; reading professional publications; maintaining personal networks; participating in professional organizations.
Develop and maintain knowledge base and standards related to software development, quality, and reliability
POSITION QUALIFICATIONS Competency Statement(s)
Accountability - Ability to accept responsibility and account for his/her actions.
Communication, Oral - Ability to communicate effectively with others using the spoken word.
Communication, Written - Ability to communicate in writing clearly and concisely.
Creative - Ability to think in such a way as to produce a new concept or idea.
Technical Aptitude - Ability to comprehend complex technical topics and specialized information. •
Initiative - Ability to make decisions or take actions to solve a problem or reach a goal.
Detail Oriented - Ability to pay attention to the minute details of a project or task.
Analytical Skills - Ability to use thinking and reasoning to solve a problem.
Change Management - Ability to encourage others to seek opportunities for different and innovative approaches to addressing problems and opportunities.
Judgment - The ability to formulate a sound decision using the available information.
Conceptual Thinking - Ability to think in terms of abstract ideas.
Decision Making - Ability to make critical decisions while following company procedures.
Systems Analysis - Ability to determine how a system should work and how changes in conditions, operations, and the environment will affect outcomes.
Problem Solving - Ability to find a solution for or to deal proactively with work-related problems.
3+ years’ experience in embedded, bare metal, development preferably for engine, hydraulic, or vehicle control systems.
2+ experience in Altium, OrCad, or equivalent hardware development package.
Proven expertise in writing low level firmware and test routines for firmware in C
and in assembly language (desirable) for embedded interface implementations such as I2C, SPI, UART, CAN.
Demonstrated familiarity with embedded development using RTOS on 16 and 32-bit systems in C and Assembly. Specifically, experience with ARM and/or PowerPC and/or TriCore.
Linux OS, MS Windows, Microsoft Office Suite which includes Outlook, Word, Excel, etc. required.
Experience working in an Agile environment with common Agile tools (preferably JIRA and/or Polarion)
Demonstrated familiarity with common automotive standards (J1939)
Knowledge of Python, Lua or C# is a plus.