Software Engineer
Actalent · White Salmon, WA · 1 wk ago
On-siteEngineering$40.87–$43.27/hrContract
Responsibilities
- Write, execute, and maintain unit tests for flight and embedded software primarily written in C, ensuring tests are directly tied to implementation details.
- Debug software at the code and logic level by reading, understanding, and reasoning through existing C code to identify, isolate, and clearly explain defects.
- Safely modify or extend existing code as needed, following documentation and established practices to maintain reliability and stability.
- Perform black-box system testing to validate inputs and outputs without relying on internal code access, focusing on system and acceptance-style verification.
- Design system-level tests based on documentation that defines what to test, determining appropriate methods to achieve thorough coverage.
- Develop and maintain test scripts in C or JavaScript to support automation, creating repeatable and maintainable test frameworks and procedures.
- Apply automated testing concepts and frameworks to improve test efficiency, consistency, and coverage across embedded and system-level software.
- Identify gaps in test coverage and propose additional tests or approaches to ensure comprehensive validation of system behavior and requirements.
- Reproduce issues consistently and document them clearly, providing detailed technical descriptions that support efficient troubleshooting and resolution.
- Validate software correctness without modifying production code, maintaining a rigorous focus on verification, coverage, and quality assurance.
- Use JavaScript and/or Python to build or enhance unit test tooling and system test automation, supporting continuous improvement of test infrastructure.
- Follow documentation-driven development and testing practices, contributing to and using technical documentation to guide test design and implementation.
- Apply strong attention to detail when reviewing requirements, documentation, and test results, ensuring accurate and reliable verification outcomes.
- Collaborate with engineering teammates in office, lab, and field environments to execute tests, share findings, and support product development activities.
- Communicate technical findings effectively through clear technical writing, including test plans, test reports, defect descriptions, and status updates.
- Demonstrate readiness to transition into flight code and product development over time, progressively working deeper within the codebase and firmware stack.
- Engage in continuous learning around embedded systems, firmware, and system testing techniques to support growth into advanced electronics design.
Essential Skills
- 0–1 years of experience in software development or testing, including internships, co-ops, capstone projects, or similar academic/industry experience.
- Strong C programming skills, including the ability to read, understand, and reason through existing C code in an embedded or low-level context.
- Demonstrated debugging skills to identify, isolate, and explain software defects at the code and logic level.
- Familiarity with software testing concepts, including either unit testing or black-box testing in a technical environment.
- Experience or coursework in embedded systems, firmware, or low-level software projects.
- Comfort working with documentation-driven development and testing, using specifications and requirements to guide test design.
- Strong attention to detail and a mindset oriented toward validation, coverage, and rigor rather than solely feature development.
- Technical writing skills to produce clear, concise, and accurate documentation, test reports, and defect descriptions.
- Eligibility to work on ITAR-controlled projects, including the ability to comply with all applicable regulations.
- Ability to discuss academic or project contributions in C programming in detail, demonstrating strong knowledge and ownership of work.
Additional Skills & Qualifications
- Bachelor’s degree in Electrical Engineering, Computer Engineering, or a related discipline.
- Experience with embedded C development for microcontrollers or similar platforms, including firmware or low-level software projects.
- Strongly preferred: JavaScript and/or Python experience, especially for building unit test tooling, scripting, and test automation.
- Exposure to system-style testing, including black-box testing and acceptance verification in C or JavaScript.
- Familiarity with aerospace or complex systems environments, particularly UAS or related advanced electronics applications.
- Experience or knowledge of C# scripting for test automation or tooling is a nice-to-have but not required.
- Understanding of basic web or GUI concepts that may support test interfaces or tooling.
- Knowledge of timers, clock distribution, and serial communication interfaces such as SPI, I2C, and UART.
- Familiarity with edge-triggered interrupts, ADCs, DACs, and servicing interrupts in embedded systems.
- Interest in growing into advanced electronics design and embedded software development for unmanned systems.