3 Lessons from big software failures