The only complete and precise specification of software is the code itself. If some other form of specification was complete, we would be able to auto-generate the code.
You need some level of specification so you know what you’re building, but you have to keep in mind that the final code defines what the behavior truly is. Sometimes, that behavior unintentionally becomes part of the specification because users begin to rely on it.
I do like the fact that you both used hyperbole to succinctly illustrate the dangers of veering too far in either direction though :)
It's asymptotic. By the time you reach a human who is as dumb as an actual computer, the specification _is_ the code.