Diverse volte nella mia carriera ho lavorato su contratti NASA. L'ultima volta ho lavorato come "Test and Verification Analysis" sullo Space Launch System. Ho passato del tempo con gli sviluppatori dei requisiti e i codificatori del software di volo.
Alcune caratteristiche salienti del lavoro sul software spaziale per la NASA:
- Il software non è il prodotto. È solo un altro componente di un sistema più grande. Ricordatelo.
- Il software è guidato dai "requisiti". Dovrete studiare i requisiti.
- L'ambiente di sviluppo e i compilatori Wind River sono lo standard accettato nel software Flight Critical (aviazione e spazio). I compilatori Wind River non sono aggiornati con le caratteristiche del C++ come gcc.
- Se supportate sistemi più vecchi, come Chandra, dovrete programmare su vecchi computer (ora obsoleti) come il 1750a e programmare in ADA e codice Assembly.
- Scordatevi l'AI per il software spaziale. Non può essere testato in modo deterministico, non può volare.
- I nuovi sistemi usano i PowerPC.
- Farai un sacco di studi on the job per capire gli strumenti e i sistemi unici che supportano le missioni. Vi divertirete ad imparare. Per le missioni a lungo termine, ci saranno computer e software scritti decenni fa, come Chandra.
L'ambiente di lavoro della NASA è costantemente votato come la migliore agenzia governativa per cui lavorare. Non mi sono mai sentito così a mio agio in un posto di lavoro come la NASA. È un posto di lavoro vario e solidale.
Ma il software non è una specialità di carriera.
Suggerisco vivamente di aggiungere un'istruzione superiore in fisica, astrofisica o ingegneria dei sistemi.
Suggerisco di leggere: http://www.flownet.com/gat/jpl-lisp.html