Sierra Space is an industry-leading space and defense technology company providing satellites, spacecraft, and enabling mission systems and components. The Principal Software Engineer role involves designing, developing, and testing software applications for space systems and technologies, requiring extensive expertise in multiple programming languages and software development principles.
Responsibilities:
- Design, develop, and test software applications for space systems and technologies
- Write clean, maintainable code that adheres to best practices and coding standards
- Architect and implement complex software systems to meet project requirements
- Collaborate with team members to understand project needs and contribute to effective software solutions
- Utilize version control systems such as Git to manage code changes and work collaboratively with team members
- Participate in code reviews to ensure code quality and adherence to development standards
- Troubleshoot and resolve software-related issues in a timely manner
- Document software configurations, processes, and procedures for future reference
- Stay current with industry trends and advancements in software development and space technologies
- Independently contribute to the design and development of software applications, conduct unit tests, and participate in code reviews
- Provide technical leadership and mentorship to other engineers, fostering collaboration and growth within the team
Requirements:
- Requires Bachelor's degree in a related field (or equivalent work experience in lieu of degree or Masters +10 yrs experience)
- Typically 12+ years of related experience
- Extensive expertise in multiple programming languages and software development principles
- Ability to design, architect, implement, and test complex software systems
- Expert understanding of software engineering processes, advanced algorithmic knowledge, domain-specific design patterns, performance tuning, and system scalability
- Mastery in writing scalable, optimized code, ability to design complex software systems, and knowledge of best practices, including secure coding, and system architecture principles
- Ability to independently contribute to the design and development of software applications, conduct unit tests, and participate in code reviews
- Experience with different software development methodologies such as Agile and Scrum/Kanban
- Advanced degree in Computer Science, Software Engineering, or a related field
- Extensive experience with kernel-level programming
- Proficiency in programming languages (Python, C++, Java) and their ecosystems
- In-depth knowledge of scripting languages and automation tools
- Proven experience with software development methodologies such as Agile or Kanban/Scrum
- Exceptional analytical skills and meticulous attention to detail
- Superior communication skills and the ability to work effectively in a collaborative team environment
- Demonstrated ability to lead large-scale software projects from inception to completion
- Strong strategic thinking and decision-making skills
- Strong analytical skills, performance profiling, and debugging complex systems
- Excellent communication and teamwork skills, with experience using collaborative tools (GitHub, GitLab, Bitbucket)
- Ability to write and maintain technical documentation
- Familiarity with SysML/UML to create software designs
- Experience utilizing and setting up static analysis tools