Besides to get the right abstraction you often need to iterate a few times. It actually requires failure.