Overview
Skills
Job Details
Senior Embedded Linux Software Engineer
SUMMARY
Design, develop, maintain, test, and evaluate software for computer control system under limited supervision of the Software Engineering Supervisor. This level of engineering calls for an experienced engineer with expertise in particular area(s) (specific for particular job differentiations).
ESSENTIAL DUTIES AND RESPONSIBILITIES include the following. Other duties may be assigned.
- Proposes problem solutions through analysis, problem definition, requirement generation and implementation of proposed solutions.
- Creates documentation and supporting diagrams supporting solutions.
- Prepares and installs source code into source control by determining compliance of software changes with system specifications, programming best practices, and ensuring these changes are free from defects.
- Improves workflow by conducting analysis, and recommending changes in policies and procedures to management.
- Creates bug reports through investigation and by collecting, and analyzing data, and providing clear documentation on reproduction of observed issues.
- Must be an active coder.
- Communicate technical ideas clearly, able to use Microsoft Office applications when appropriate.
- Employees are expected to follow instructions, procedures and to escalate any issue impacting workflow, quality, etc. Additionally, there are high value items that require proper care and protection.
SUPERVISORY RESPONSIBILITIES
This job does not have any supervisory responsibilities.
QUALIFICATIONS
To perform this job successfully the candidate must be able to perform each essential duty adequately. The requirements listed below are representative of the knowledge, skill, and/or ability required. Reasonable accommodations may be made to enable individuals with disabilities to perform the essential functions.
Minimum Qualifications
- 5+ years of coding experience.
- Expertise in C and C++. (Java is a plus).
- OOP (Object Oriented Programming) experience is a plus.
- Experience reading and writing bash and batch scripts (intermediate to expert).
- Experience in developing and maintaining board support packages (BSP) for embedded systems. (ARM Cortex-A systems is a plus).
- Experience in applying patches to and debugging the Linux kernel.
- Experience in writing and debugging Linux device drivers (SPI, PCIe, UART, etc.).
- Comfortable working in Windows and Linux environments. Linux is a requirement.
- Experience with inter-process communication (Google Protocol Buffers is a plus).
- Experience in writing and debugging multi-threaded applications.
- Strong understanding of real time systems, XML , file systems, networking, multi-threaded applications, computer graphics, linear algebra, calculus, geometry, and trigonometry, human-computer interaction/User Interface design, design patterns, encryption, hashing, checksum, and CRCs (Cyclical Redundancy Check).
- Communicate technical ideas clearly, able to use Microsoft Office applications when appropriate.
- Experience in reading and writing technical requirement documentation.
- Experience working with source-control system.
- Experience with Eclipse/Visual Studio.
- Can reverse engineer source code written in C and generate requirements, and write equivalent code in a higher level language.
- Employees must exhibit honesty and integrity as well as demonstrate adherence to rules, procedures and policies.
EDUCATION and/or EXPERIENCE
Master's Degree MSCS or MSCE, from a four-year college or university is required, plus an additional 5+ years related experience or Bachelor's Degree BSCS/BSCE with 7+ years plus an additional of related experience, training and/or equivalent combination of education and experience.