My opinion:
If you don't specify things in a separate document in the form of text and pictures, then you end up doing it anyway but ad-hoc.
Your "non-spec" now leaks into multiple tools and channels that likely don't talk to one another: emails, instant messages, file storage, notes, phone calls & discussions (AKA in your head/memory), Trello/Asana/Jira etc. and in peoples imaginations and expectations.
A specification is just the things you do anyway but instead written down in a single maintained place. You can source control it and iteratively change it. All the parties can pull it and look at it before/during/after iterations and discussions.
A spec doesn't need to be set in stone at all. It can grow/shrink/change iteratively with the thing you build. It can also define things that you specifically shouldn't do or worry about.
A "design doc" seems to be something like that with a different name?
Also a specification can help to communicate much more clearly, since you end up defining a vocabulary for processes, UI elements, technical components and so on.
Tools I find useful to do this:
- markdown + css + some tool to convert it to html/pdf
- graphviz, especially for state-machines and decision trees, I prefer output as SVG rather than PNG.
- UML diagrams or similar if applicable