Spacecraft Software Engineer (Associate or Mid-Level)- Millennium Space Systems
Skip the busywork
ApplyBolt rewrites your resume for this exact role and hits submit. You just pick the jobs.
About this role
Job Summary:
As a Spacecraft Software Engineer (Associate or Mid-Level) at Millennium Space Systems, you’ll create the software that makes our satellites function in orbit. Your code will run on our custom avionics, process signals from sensors like our star trackers, and command actuators like the propulsion system. Your software may also interface with custom payloads and perform high-level autonomy functions to ensure our spacecraft accomplish their missions. We are looking for software engineers that can lead a small team developing the for a satellite, work with other teams to determine what the software needs to do, and then write (and test!) robust embedded C/C++ to meet those requirements. And when that code is running in space, you’ll continue to support mission operations with software updates and enhancements. This position's internal job code is Software Engineer - Embedded. Our team is currently hiring for Levels 2-3.
Strong communication and organizational skills are critical to success in this position, along with the ability to build strong relationships, collaborate in a cross-functional environment, and utilize problem-solving skills to proactively identify and manage risks and opportunities.
Position Responsibilities:
- Work collaboratively with hardware, control and system engineers to define and develop software requirements, architectures and designs suited for fault-tolerant spacecraft
- Rapidly prototype novel software solutions to prove out the architecture/design concepts, quantify technical risk, and create new capabilities
- Implement designs in C/C++, integrate software components, create and run unit tests, validate on Hardware-in-the-Loop and release real-time embedded solutions
- Assist with system verification and qualification, assessing the outputs and documenting the results to ensure software products that meet system requirements and mission-critical standards
- Be responsible for all phases of software development and problem resolution from program inception to post-launch support
- Work with hardware engineers to verify hardware-hardware and hardware-software interfaces
- Break down the software development needed for a program into smaller discrete tasks that can be given to others to implement and monitor their progress
- Perform code reviews to ensure the software being developed is functionally correct, efficient, and meets our coding standards
Basic Qualifications (Required Skills/Experience):
- 1+ years’ experience in software or hardware engineering, requirements, design, development, test, and working with software and hardware
- 1+ years of experience working with Linux
- 1+ years of experience in C and C++ programming
Preferred Qualifications (Desired Skills/Experience):
- Bachelor's degree or higher in Electrical Engineering, Computer Engineering or Computer Science
- 3+ years of experience in C and C++ programming
- Experienced in embedded environment and/or bare metal C on a microcontroller
- Experience with concurrent HW/SW development
- Experience with iterative and/or agile development processes
- Experience with serial data protocols (HDLC, I2C, SPI)
- Experience in Python programming
- Experience in Verilog and FPGAs
- Experience with git, JIRA, confluence
- Knowledge of satellite systems and components
- Level 2: 1 or more years' related work experience or an equivalent combination of education and experience
- Level 3: 3 or more years' related work experience or an equivalent combination of education and experience