Software Engineer
Summary
Mid-level software engineer (hybrid in Scottsdale, AZ) building software tools, automation frameworks, GitLab CI/CD pipelines, and containerized deployment infrastructure for spacecraft payload development and hardware-in-the-loop lab test environments, working alongside systems, FPGA, and hardware engineers. Requires US citizenship and 5+ years experience (or Master's + 3).
Scottsdale, AZ - Hybrid
A Software Engineer designs, develops, tests, and maintains software applications or related, Science, Engineering or Mathematics fields, ensuring they meet user requirements and perform efficiently. They collaborate with cross-functional teams to integrate solutions and troubleshoot issues.
- Basic Qualifications: Bachelor's degree in Software Engineering, or related Science, Technology, Engineering or Mathematics field, plus a minimum of 5 years of relevant experience; or Master's degree, plus 3 years relevant experience.
- US Citizenship required
ROLE AND POSITION OBJECTIVES:
You will be a Software Engineer supporting the Software Systems Integration side of the team. You will design, develop, test, and maintain software tools, automation frameworks, CI/CD pipelines, and deployment infrastructure used across spacecraft payload development and hardware test environments. This role supports the DevOps Test Infrastructure, DOTI, and helps provide the software backbone for the Hardware Development Environment, HDE, and related lab integration activities.
In this role, you will work with systems, FPGA, hardware, test, and integration engineers to turn engineering needs into reliable software capabilities. You will build practical software that runs close to real hardware, supports automated test workflows, improves developer productivity, and enables repeatable integration across lab benches and payload programs. This is a mid-level software engineering position for someone ready to own well-defined features, contribute to technical design, and grow into broader platform ownership within.
Key Responsibilities
- Design, develop, test, and maintain software applications, services, scripts, and automation frameworks that support capabilities
- Build and improve CI/CD pipelines in GitLab, including automated builds, tests, packaging, deployment workflows, and runner-based execution
- Develop software interfaces and utilities that connect lab systems, test equipment, data services, payload hardware, and engineering workflows
- Support deployment and configuration of containerized services using tools such as Docker, Kubernetes, Helm, or related technologies
- Write automated tests, troubleshoot software defects, and improve code quality through peer review, static analysis, and disciplined debugging
- Collaborate with systems, FPGA, electrical, hardware, and I&T engineers to understand requirements and deliver practical software solutions
- Investigate integration issues across software, Linux systems, networks, containers, pipelines, and hardware-in-the-loop test environments
- Create and maintain clear documentation for software designs, APIs, deployment steps, test workflows, release notes, and user guidance
- Identify opportunities to improve automation, reliability, repeatability, and developer experience across shared test infrastructure
Preferred Skills & Experience
- Bachelor's degree in Computer Science, Computer Engineering, Electrical Engineering, Systems Engineering, or a related technical field
- Mid-level software engineering experience developing maintainable applications, services, tools, or automation in Python, C/C++, Go, JavaScript/TypeScript, or a similar language
- Strong software fundamentals, including data structures, object-oriented design, testing, debugging, version control, and code review
- Experience building automated test suites using PyTest or similar frameworks and applying test-driven or test-informed development practices
- Experience with Git-based workflows, including branching, merge requests, peer review, issue tracking, and release coordination
- Experience developing and maintaining CI/CD pipelines using GitLab CI, GitHub Actions, Jenkins, or similar platforms
- Comfort working in Linux environments such as RHEL or Ubuntu, including command-line tools, shell scripting, services, logs, and package management
- Familiarity with containerized application development and deployment using Docker, Kubernetes, Helm, or related tools
- Working knowledge of networking concepts such as Ethernet, subnets, routing, firewalls, ports, DNS, and lab network isolation
- Experience integrating software with hardware, lab instrumentation, embedded systems, APIs, databases, or distributed services is a plus
What Sets You Apart
- You see this as a software engineering role first, while staying curious about the hardware, networks, and test systems your code supports
- You enjoy building practical tools that make engineering teams faster, more reliable, and more consistent in the lab
- You write clean, readable, well-tested code and care about long-term maintainability, not just getting a script to run once
- You can own a feature or tool from requirements through implementation, test, documentation, and user feedback
- You are comfortable debugging across software, containers, Linux systems, CI/CD pipelines, network services, and hardware-adjacent interfaces
- You communicate clearly with engineers from other disciplines and can translate their integration needs into usable software capabilities
- You ask good questions, work through ambiguity, and know when to pull in senior engineers or domain experts
- You identify opportunities to apply automation and AI tools to improve engineering efficiency, test repeatability, and software quality