Lead Software Engineer
Kepler Communications
Responsibilities:
- Next-generation satellite onboard software
- Work on Linux-based platforms including satellites
- Firmware and drivers
- Kepler satellite network infrastructure
- Application infrastructure
- Mission control software and automation
- Hardware and software test infrastructure and automation, including writing thorough tests and documentation
- Work in a CI/CD environmentand develop unit tests and integration tests suitable for automation in a CI/CD infrastructure
- Lead software design review and code review processes
- Work with electrical, digital design, and operations teams to identify required features and solidify the system architecture
- Provide technical leadership, working with customers to ensure on-time delivery that meets requirements
Requirements:
- 4+ years of embedded software development experience
- 4+ years of Python experience
- Bachelor's degree in Computer Science or equivalent
- Strong software design and development skills, including algorithms, testing and debugging
- Proficiency in C/C++, especially in embedded topics such as interrupt handlers, concurrency, memory mapped peripherals, and hardware interfaces (Ethernet, RS-422/485, SPI, I2C)
- Experience with embedded operating systems and build systems, including OpenEmbedded/Yocto and FreeRTOS
- Ability to operate in a Linux-based environment, with embedded Linux experience including writing kernel modules, device trees, and drivers
- Experience working with relational databases
- Excellent communication skills
- Ability to effectively use git
Bonus Points:
- Post-graduate degree in a relevant field
- Current and/or active US security clearance
- Experience developing software for aerospace applications
- Experience working with commercial and US Government customers
- Experience developing multi-stage bootloaders
- Strong knowledge of computer networking and modern networking protocols
- Experience with RTL (Verilog and/or VHDL), embedded SoCs, and ARM assembly
- Hardware debugging experience (oscilloscopes, logic analyzers, etc.)
- Familiarity with Python development tools such as pytest/unittest, setuptools, SWIG, and C-extensions
- Experience with build and deployment tools like Make, Docker, and Ansible
- Strong knowledge of computer networking and modern networking protocols