When Analysis Fails: Heuristic Mechanism Design via Self-Correcting Procedures