Resilient Program Design: Beginning with the End in Mind