Supercharging Trial-and-Error for Learning Complex Software Applications