Who knows “the requirements”?

One of the senior software developers that I know used to ask me on a regular basis about “the requirements”. He would insist on having a “document” that would tell him what he needs to implement. I would always tell him to talk to users/customers to find out — and he would move to the next manager and ask for “the requirements”… He was happy when we have decided in the team that an “architect” will decide what features he needs to develop.

More recently, I have seen strong beliefs that the “product manager” or the “market manager” knows (or “owns”…) the requirements for a new piece of software.

So who knows “the requirements”?

In my opinion, the requirements “document” needs to be a collaborative effort (think wiki) where all the team members — developers, architects, managers, technical writers, testers, product managers, marketing, sales, support — create one common, shared descriptions of what the software is intended to do. If there is one member of the team that would have an extra vote, that would go to what is called a “lead user” — someone who would be both an early adopter and someone who knows why he needs this new product/feature.