This position is responsible for a portion of a total engineering project related to designing, developing, testing, and maintaining software systems and applications. We're looking for someone who knows their way around embedded systems and who has knowledge of Linux and real-time operating systems. If you understand networking, cyber-security, bootloaders, kernels, and the Qt application framework, that's a big plus! Bonus points if you've configured a custom Linux distro using Yocto. We value diversity in the workplace and encourage women, minorities, and veterans to apply!
Type: Direct Hire
Location: Remote/onsite as needed
JOB DUTIES AND RESPONSIBILITIES:
- Independently applies knowledge of software engineering principles to design, code, troubleshoot, and debug software applications.
- Develops new and varied solutions to software problems within standards and contributes to the value of product design by studying competitive products, customer practices, and identifying customer needs.
- Analyzes software issues to determine suitable solutions to prototypes, production, or field failures by establishing and coordinating design reviews with peers and project leads. Responsible for organizing data and preparing documentation for assigned reviews.
- Responsible for thoroughly testing their software, coordinating others on software verification tests, and testing peer software when necessary.
- Responsible for development and completion of all software documentation, working collaboratively with cross-functional teams. Ensures documentation is complete, accurate, and properly maintained, recording new ideas in the form of flow charts, sequence diagrams, etc. to convey concepts.
- May direct the work of drafters, technicians, and others who assist in small projects.
QUALIFICATIONS:
Knowledge, Skills, and Abilities
- Ability to develop software requirements and apply design methodologies.
- Excellent written/oral communication skills with a proven ability to work both independently and collaboratively within a team environment while following established procedures.
- Strong understanding of the software development lifecycle.
- Understanding of software configuration management tools.
Education and Experience
- Bachelor’s degree or relevant experience, plus, at least five years of relevant software engineering experience of increasing complexity.
- Software development experience using C/C++, Python, TypeScript, and other programming languages.
- Experience working with Linux or a real-time operating system (RTOS).
- Familiarity with UI application frameworks and/or cloud platforms.
Disclaimer
A background check and screen for the illegal use of drugs is required.