views:

130

answers:

5

I was wondering... There are people out there who code stuff going to mars, satellite control systems, nuclear facilities. What kind of training did they do ? What is their career path ?

A: 

There are dozens or perhaps many dozens of different types of jobs involved. Some do more physics, simulation, GUIs, command and control, and so on. Is this question "How do I get started down this career path?" or "I'm curious, who are these people?"

MJB
... it's both :)
Stefano Borini
A: 

Those type of fields require an education (probably through at least masters) in Physics and Mathematics, where programming is a secondary skill.

Stephen Swensen
That would certainly explain a lot of these mission failures. Anyone who thinks Physics and Mathematics is a substitute for engineering discipline deserves to lose their $500 million satellite.
MusiGenesis
That programmers are coding stuff they don't have technical expertise with, or that mathematicians and physicist can't keep track of pointers?
Stephen Swensen
I agree with @MusiGenesis. If you study physics, and then you are put on programming for mission critical sw withouth additional and specific training, you are likely to blow things up.
Stefano Borini
Ideally, you'd have your main focus of education in math or physics, with a minor in computer science, and then a career in software engineering (you don't just "put" them on a mission critical programming task, anymore than you put a junior cs major on a mission critical programming task).
Stephen Swensen
I would be prone to think you have a math/physics primary engineer working together with a software primary engineer. They both have cross training skills but they both have expertise in their field. I really doubt they have one-man-shows doing this stuff.
j0rd4n
I'm reminded of my father-in-law, who has a masters in electrical engineering, but at some point moved to programming embedded devices because the job market was better. 20 years later he is still doing the same thing, and you can bet he's become an accomplished software engineer, but in such a specialized discipline, you really need the proper background to begin with.
Stephen Swensen
A: 

The typical path probably looks like:

  1. Get a student job in a University research lab
    • Learn from the "old" graduate students and employees
  2. Get hired as a temporary employee in said research lab
    • Teach the "new" graduate students
  3. Do something good to get noticed
  4. Make contacts with people in the granting agency
  5. Get hired by the contracting agency or one of their contractors
tvanfosson
+3  A: 

I have a friend who, after graduating with a BS in optical engineering, went to work for Perkin-Elmer, grinding among other things, the Hubbel mirror. In his free time, he wrote software to calculate the trajectories of earth projectiles and teaching himself orbital mechanics. His interest and accomplishments so impressed people at NASA that they hired him and his career included managing SW development for the space shuttle simulator and acting as mission specialist on a couple shuttle missions.

I have had discussions with people working at Los Alamos National Laboratory and they say that in order to work there, you find someone who already does and then call them every week for at least two years and that may lead to an interview. In other words, be interested and persistent.

Bruce
ok, but how did he learn these things? just by himself ?
Stefano Borini
As far as I know, by himself. However, I imagine there were some smart people at work that he talked to. University profs are also good people to get to know.
Bruce
+1 This is akin to my answer: you start out specialized in a given field, and then move to software engineering in the course of your career.
Stephen Swensen
+2  A: 

A counter question - are you talking about R&D or production code?

Alot of the answers above apply to the R&D teams developing new ideas to enhance existing inventions, or to enable new scientific adventures that were not previously possible - in those cases I agree.

But there's still a slew of people writing the code that actually gets deployed with the hardware. As with any major endeavor - you don't want the visionary dreamers who came up with the radical solution to be the guys actually implementing the thing that could risk human life. It's two different focuses and two different careers.

I agree with the Academic, research approaches you're talking about the R&D teams.

But if you want to write the production code, get familiar with process and quality control and assurance practices. All of the fields mentioned involve development contracts with the government which will require the highest degree of due diligence and care, since they cost huge money, may risk at least a few human lives, and in the case of a nuclear facility - they could destroy entire populations. You want to make sure that code went through plenty of review and testing!!

To get on the development teams, learn some of the high end development processes and practices - CMMI, Six Sigma. Learn as much as you can about testing and lifecycles. Work in an internship close to this field, particularly if the internship will submit you for a clearance - a lot of the work you mentioned may require defense clearances, and it's a huge leg up if you graduate college with a clearance in hand.

bethlakshmi