Proof Engineering: The Soft Side of Hard Proof