As JP Points out in his comment I neglected to mention the importance of also having a more personal 1:1 connection with your customers as well.  To me this should have fallen into the 2nd hand bucket described in my previous entries. 


Start Quote

[The following thoughts are my own, and don't necessarily reflect those of my employer]

Our team had a "Joint Development Program" where we invited 14 or so companies to experience the development process with us and run early release versions on their side. Meanwhile while we would buid though, we could talk to our customers directly and ask them what they needed, what they wanted, and my favorite, what they thought that they were getting. This of course always helped in really getting the frame of mind of the customer. Of course this system is not perfect (really what system is?), since there were many companies that expected preferential treatment when it came to their (very) specific feature requests, and there were also companies that did not understand the concept or quality for that matter in a beta version, and did not find acceptable when there were bugs.....and then refused to upgrade later since they said they had finished their rollout.

Even better was that through this program, I got the opportunity to even fly to visit a customer site, and talk with an administrator as he tried installing our software. It was enormously helpful to understand the frame of mind that he had (which was much different than I would have imagined) during this process. It was also helpful as a part of this trip to see all of the battles that have to be fought inside a company, even after they get our software.

Anyways, I suppose my who comment is that, the source I find most usefull, is our customer directly. Then again, I suppose it might work differently when our customer base is large enterprises vs. any and every developer with the money to shell out for an IDE....


End Quote