En varias ocasiones a lo largo de mi carrera he trabajado en contratos de la NASA. La última vez fue trabajando como «Análisis de Prueba y Verificación» en el Sistema de Lanzamiento Espacial. Pasé tiempo con los desarrolladores de los requisitos y los codificadores del Software de Vuelo.
Algunas características destacadas de trabajar en software espacial para la NASA:
- El software no es el producto. Es sólo un componente más dentro de un sistema mayor. Recuerde esto.
- El software se rige por los «requisitos». Tendrá que estudiar los requisitos.
- El entorno de desarrollo y los compiladores de Wind River son el estándar aceptado en el software Flight Critical (aviación y espacio). Los compiladores de Wind River no están tan actualizados con las características de C++ como gcc.
- Si da soporte a sistemas más antiguos, como Chandra, estará programando en ordenadores más antiguos (ahora obsoletos) como el 1750a y programando en código ADA y ensamblador.
- Olvídese de la IA para el software espacial. No se puede probar de forma determinista, no puede volar.
- Los nuevos sistemas utilizan PowerPCs.
- Harás mucho estudio en el trabajo para entender las herramientas y sistemas únicos que apoyan las misiones. Te divertirás aprendiendo. Para las misiones a largo plazo, serán ordenadores y software escritos hace décadas, como Chandra.
El entorno de trabajo de la NASA es votado constantemente como la mejor agencia gubernamental para trabajar. Nunca me he sentido tan cómodo en un lugar de trabajo como en la NASA. Es un lugar de trabajo diverso y solidario.
Pero el software no es una especialidad de la carrera.
Sugeriría encarecidamente una educación superior de adición en Física, Astrofísica o Ingeniería de Sistemas.
Sugeriría leer: http://www.flownet.com/gat/jpl-lisp.html