There's a lot of skills that are really hard to develop because they go against our instincts. The most familiar one to engineers is optimizing code, but I've realized that building a great user experience has the same problem.
When a newbie programmer has a program that's executing too slowly, she'll stare at the code, spot some ugly-looking loops or function calls and start re-writing. Hours or days later, she'll try the rewritten program and it will run at the exact same speed as before.
This happens because we're really, really bad at deducing why a program is slow from just inspecting the code and theorizing in our heads. One of the most important lessons programmers learn is to always, always profile before making any changes aimed at improving performance, and then perform controlled experiments measuring what changes work. You will be surprised, every time, guaranteed.
I've been wrestling with the Customer Development philosophy, and it only truly clicked was when I realized it was just about applying the principles behind effective code optimization to your interactions with users.
When a newbie entrepreneur has a service that nobody's using, he'll stare at the website, spot some missing features or ugly design and start coding. Hours or days later, he'll launch the rewritten site and still no one will use it.
This happens because we're really, really bad at deducing why people don't love a service from just inspecting the website and theorizing in our heads. One of the most important lessons we should learn is to always, always talk to current and potential users to see what they think before making any changes, and then perform controlled experiments measuring what changes work. I am surprised, every time!
This mental mapping makes sense of a lot of issues I've struggled with. I was uncomfortable when Dave McClure recently proposed that you should start off with an AdWords campaign before doing any coding, to figure out what people want. That seemed like a good corrective to founders' tendency to geek out and build without understanding their customer's needs, but taken literally would have ruled out a lot of innovative companies. What would Twitter's landing page and search terms have been?
Thinking about it as profiling cleared up my confusion. Your company has a mission, a reason for existence, an itch you have to scratch. You can run AdWords campaigns to test the best ways of reaching those goals, without letting go of your reason for existence. It's the same as using profiling to guide changes to your program while making sure it still produces the right output.
I think that was always implicit in Dave and Eric's advice (IMVU didn't turn itself into a warez site just because a lot of people were searching for pirated software on Google), but thinking it through helped me realize that measurement doesn't have to kill the passion.