My CTO today said that building a product, feature or capability that looks good, but most importantly is useful to solve some problem, is hard.
I know that sounds simplistic. But it’s true.
Everything that represents significant value is hard to build. Really hard, in fact.
His key learning in the process to build the feature he demo’ed (if you care – check out Network Manager) was to iterate.
Iteration in my view is synonymous with failure. You try something once, realize that doesn’t work well (either it isn’t pretty, or it isn’t usable, or both), and then you try again with a different approach. The “difference” in the two approaches can be small or large, but that’s not really what’s important. The importance is that you tried, you failed, and yet you tried again.