You have to do it in the right way. You want to catch as many gaps as possible before you build the thing and just as you start building it.
If you just fill in the gaps yourself, your software doesn't work. Software that doesn't meet the requirements is legitimately useless. The problem is, most of the requirements are in the customer's head, and you have to squeeze them out. Most of them are unconscious, they might not even know them.