Software Engineer - Flight Platforms Software engineers and programmers for flight software and mission operations software are needed. We are looking to hire individuals who have not just maintained/made incremental improvements to an existing large codebase/product, but rather are comfortable writing a 10-20,000 line of code application in under a year, and hopping between multiple projects. Ideally, someone with substantial open-source work (personal projects, Linux Kernel contributions, etc.) Our Engineers would love to see your Github account! Candidates with experience in the High-frequency Trading (HFT), Finance/FinTech, Gaming/VR, Scientific Computing, & NewSpace industries are encouraged to apply! Key responsibilities:
Architecting a robust, highly resilient and fault-tolerant distributed avionics system
Selecting third-party/open-source software frameworks (RTOS, middleware, bootloaders, C/C runtimes) based on system-level and schedule requirements
Selection of peripheral devices and interfaces for processing platforms
Development of drivers and board-support packages (BSP)
Participating in informal and formal system design reviews and fault tolerance analysis/FMECA
Supporting flight operations
Required skills:
Thorough understanding of C and C (C98 or greater)
Understanding of build tools and infrastructure (compilers, linkers, debuggers, C/C runtime libraries, CI tools)
Detailed knowledge of software design from first principles on x86, ARM & PowerPC architectures (bootloaders, startup code, C/C runtime implementation)
Development of hard-real time software in POSIX environments
Basic understanding of operating system kernel configuration fundamentals for real-time system behavior
Detailed understanding of common software design paradigms (message-passing, event-driven, RAII, et. al.)
Understanding of considerations when developing fault-tolerant software components such as error-tolerant file systems, communications agents, memory-scrubbing/EDAC
Additional useful skills:
Experience with Modern C (C11/14 or greater) or emerging systems languages like Rust
Understanding of basic EE hardware design concepts
Board design/bring-up experience
Knowledge of analog/mixed-signal systems design
Experience in controls/GNC (implementing state estimation, sensor fusion & similar algorithms)
Working knowledge of communications security (commsec) and information assurance concepts
Experience with Linux/UNIX, Linux kernel (scheduler, driver stack), microcontrollers (Cortex R/M)
Some experience with PCB design and/or board bring-up from an embedded standpoint