Anyone who has built something for public sale has felt both the pain and joy of deployment.
Last night’s Mars Curiosity landing was a deployment that every software team or product developer should be in awe of.
That highly complex, if not seemingly crazy Mars Curiosity landing plan went without a hitch.
The first Curiosity photo returned from Mars showed the rover’s shadow, taken through the dust cover of the lens.
Millions of lines of code. A multi-step time-sensitive deployment where the smallest mistake likely means that we leave a very expensive pile of broken, tangled metal on the surface of Mars.
And yet, it went perfectly.
Thanks to the University of Arizona’s HiRise project, we even have a picture of Curiosity’s chute deployment, despite landing on the side of Mars we couldn’t see from Earth at landing time last night. Simply amazing.
Perfect first-time deployment?
Deployment in the field almost always comes with challenges and adjustments.
How can you possibly deploy something perfectly in the field the very first time?
“Simple.” – By not doing it for the very first time in the field.
These things happened perfectly the first time, in part because of redundant systems, but primarily because of testing of all kinds done well before anyone built the device, much less fired it into the sky toward Mars.
NASA does the same kind of testing that we talked about last week re: Intuit’s 10 million lines of code.
Unit testing. Integration testing. System testing. Testing redundant systems. Simulations. Much of it automated so that nothing gets missed and everything possible is tested every single time it or a related component changes.
It’s not “simple”, but it’s what professionals do. Test. Everything. Not just manually, not just once the thing is done and ready to roll out the door. After every build. Automatically. Long before liftoff.