¿Cómo es trabajar como programador de software en la NASA?

Teniendo en cuenta que la experiencia es antigua, como 30 años:

  • Se espera que encuentre la forma más sencilla, elegante y económica de resolver un problema. Si tiene que construir una pila de comunicaciones completa desde cero porque el sistema operativo no lo proporcionó, entonces debe hacerlo. Si necesita encontrar una manera de reutilizar un área temporalmente en blanco en una estructura de datos del sistema operativo para ejecutar algún código para agregar una función, entonces haga eso (esa fue una de las cosas que me hizo ganar un premio a principios de los años 80 )
  • Planeas todo con anticipación. Usted revisa, vuelve a revisar y vuelve a revisar todo. Esta es la razón por la cual los satélites y los rovers de Marte tienen una vida proyectada de, en el caso de Opportunity, de 3 meses, y aún continúa después de 12 años más.
  • Llegas al cronograma y planeas con bastante holgura, porque a Mars no le importa si estuviste enfermo durante una semana; aún debe presionar la ventana de inicio o se harán preguntas. En el congreso. Principalmente por idiotas.
  • Usted documenta todo. Un número alto de camión de cerveza es obligatorio (es la abreviatura de “cuántas personas tendrían que ser golpeadas por un camión de cerveza antes de que perdamos la información crítica que necesitamos para usar esto / ejecutar esto / mantener esto”).
  • Todo debe tener un plan de respaldo y un respaldo, incluso si es solo para este sitio web que las personas usan para encontrar datos estáticos que ya están en el terreno, porque podrían necesitarlo * en este momento * para evitar que algo más salga mal.
  • Debe comprender todo lo que pueda sobre el hardware y el software con el que trabaja, porque a veces tendrá que hacer que haga cosas raras para arreglarse a sí mismo (vea el espacio temporalmente vacío en el bloque de control del sistema arriba).
  • Te acostumbras a usar hardware que a veces está desactualizado junto con hardware que está actualizado y hace que funcionen a la perfección.
  • Aprende a ser persistente y a documentar cuidadosamente las cosas para poder demostrar que sí, que esta cosa extraña está sucediendo en este conjunto peculiar de circunstancias y esto es lo que está roto y necesita ser arreglado.
  • A veces trabajas con científicos brillantes que podrían hacer tu trabajo y el de ellos al mismo tiempo sin sudar, a veces con personas que no entienden lo que haces y no les importa cómo funciona mientras puedan obtener su trabajo. datos para hacer su ciencia, y a veces estás trabajando con burócratas profesionales que solo llegaron a donde están por pura longevidad y no por habilidad. Y aprende a trabajar con cada uno de estos y, a veces, los enfrenta entre sí.
  • A veces terminas haciendo cosas que parecen una pérdida de tiempo porque son ordenadas por la Administración de la NASA, no porque haya una razón técnica obvia para hacerlas. A veces tienes razón y es un desperdicio, otras veces te das cuenta de que en realidad era una muy buena idea y simplemente no captaste todos los detalles.
  • Realmente nunca tienes suficiente dinero; siempre lo estás haciendo barato.
  • Los científicos no obtienen seguridad de datos tan bien a veces. “Snookumspoo” no es una buena contraseña, especialmente si este es el nombre de su mascota para su cónyuge y lo usa en el correo electrónico …
  • Lamentablemente, la NASA está en deuda con la política. Terminé renunciando porque estaba trabajando para un grupo de ciencias de la tierra, y la evidencia del calentamiento global estaba en LA LA LA NO QUEREMOS ESCUCHAR ESA categoría con las personas en el Congreso a las que pedíamos dinero. Dinero ajustado == poco o ningún aumento.
  • Trabajar para la NASA es su propia recompensa, y tiene que ser para que te quedes. Poder levantarse por la mañana y decirse a sí mismo: “Trabajo para la NASA y estoy haciendo cosas que en general son una mejora del mundo” es una gran ventaja. Que te paguen mucho menos de lo que podrías ganar en otro lado, no tanto.

No he trabajado en la NASA, pero he trabajado en diferentes trabajos críticos de software y puedo darle una idea de las cosas.

Cuanto más importante es un código, más se inspecciona, prueba y revisa, y más difícil es obtener cambios. Si está trabajando en la gestión de contenido de un sitio web o en el procesamiento de reclamos de seguros. Puedo decirle por experiencia personal que puede hacer las cosas tres veces más rápido que un sistema bancario, 10 veces más rápido que un sistema de seguridad y 20 veces más rápido que un sistema médico.

He escuchado anecdóticamente que escribir sistemas de control de software para naves espaciales tripuladas requiere hasta siete niveles de revisión y cuesta aproximadamente 100 veces más por línea de código.

De nuevo. No puedo hablar con detalles específicos de la NASA, pero si desea tener una idea de la atención al detalle que es típica de los sistemas que absolutamente no pueden fallar, entonces realmente se trata de imponer controles y documentación estrictos, además de hacer 20-100 veces validación muy detallada, como es típico en un sistema que no puede causar daño a alguien. Luego imagina que la nave espacial tripulada es el caso más crítico que se me ocurre.