2.3 Producing Robust Programs