Participate in all phases of software lifecycle, from requirements definition through design, development, integration, and test with minimal supervision.
Apply state-of-the-art programming techniques, software design best practices, and software technologies.
Analyze and modify software systems by reverse-engineering, architecting, coding, installing, testing, debugging, and documenting designs/APIs.
Stand up development environment and platform application environment from scratch.
Guide customers and systems engineers in formulating software requirements, advise on alternative approaches, and conduct feasibility studies, as required.
Prepare and communicate daily status information in accordance with required software development lifecycles.
Independently derives requirements into actionable tasks.
Follow all company policies and guidelines, including familiarity with company-wide software practices.
Requirements
2 years relevant experience with Bachelors in related field; 0 years experience with Masters in related field
5 years relevant experience with Bachelors in related field; 3 years relevant experience with Masters in related field
Proficient in various embedded programming languages (e.g. Embedded C/C++, C/C++)
Proficient in common procedural/scripting languages and object definition files (Python, Bash, MATLAB, JavaScript, JSON, XML)
Proficient in industry-standard software documentation methods such as user stories, UML, Agile and supporting tools such as Doxygen, Bamboo, JIRA
Experience with Linux kernel modules, Linux source code, and device trees
Experience building the Linux kernel from scratch (Yocto, Buildroot)
Experience debugging kernel drivers
Experience with Power BI
Ability to obtain and maintain a secret government security clearance.
Tech Stack
JavaScript
Linux
Python
Benefits
Health insurance
401(k) matching
Paid time off
Tuition reimbursement
Employee discounts
Life insurance
Early childhood and post-secondary education scholarships