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.
[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....