Programming.
Many times you solve them without hearing the answer. Create flexible and forgiving software. Don’t prepare it just for the ideal situation; increase the situations in which it doesn’t fail; handle errors, recovering gracefully and with fallbacks. Prepare for constant change. Good code is prepared