Software EngineeringPhase 0: How to Research Before You Code (And Why It Saves You Days of Debugging)