A lot of this is just common sense, at least for a programmer. But everyone knows code doesn't end up that way. Why not?
I think the core of the problem lays not in the fundamental design and the initial prototypes or versions, but in the attitude towards progression.
1. Time. The 'Fix it, but don't refactor it' attitude.
2. Pressure. The 'our customer needs the fix in negative 7 days' attitude.
Combine the two, and the pressure cooking vessel needs to vent sometime – the result, more often than not, being nasty code.
Getting 2.5 Megalines of code to behave
First some basics. The rover uses a radioactive power source which systematically delivers power to it in a continuous fashion. The power source also provides some heating to the rover in general – wh…