Awsome article Mike!! As usual, you are spot-on. If we don't have some failures (and learn from them), then we aren't pushing ourselves. We have to test our limits and be bold to deliver innovative solutions for ourselves, our customers and our partners. In connection with our transition to programmability, I'll codify my comment on the process:

# Ideation and proof-of-concept
result, cost, value = experiment()

# Iteration
while value and justified(cost):
if result.failure() or result.success():
new_knowledge = result.learn()
result, cost, value = experiment(new_knowledge)

# Innovation
if result.success():
yield_innovation(result, value)

gain_experience()
next_project()