Anyone who’s ever developed an application from scratch knows that it’s difficult to fully understand the objective of the user or subject matter expert, when they describe the problem that the code is supposed to solve. It’s not a mystery that the requirements gathering process is a challenge. However, why it’s so difficult to get good requirements and what you can do about it are a mystery.
We review the objective of gathering requirements (or elicitation, if you prefer an agile moniker), what makes it difficult, and what you can do about it. To do that we need to examine: what tacit knowledge is, what explicit knowledge is, how to convert one to the other, and why you should care.