I want to be able to hire freelancers and to give them documents that make our communication effortless and clear. Make them jobs as developers easier, any advice or good resource to suggest?
Hiring good contractors is always going to get you farther than good specifications. A good contractor will fill in the gaps in the spec and make something better. On the other hand, even the best spec won't preclude a contractor from delivering a package that meets the spec without meeting your needs.<p>Specs are only as good as the shared sense of mission between the spec author and implementor. The specification for C specifies that certain behaviors are undefined. A compiler writer is free to reformat the user's hard disk when an undefined behavior is found in the source code. That's the compiler writer you don't want to hire because restoring the disk from backup will be a change order.<p>Good luck.
First, you should have had to implement a number of specifications yourself, so that you have experience about what kinds of things are unclear.<p>Second, you should have someone else read the specs you produce, to help find the places where what you wrote was clear <i>to you</i>, but not clear to someone who didn't already know what you meant.<p>And third, you need to make it very clear: If you don't understand, ask. Email me. Better yet, call me.
The best guide in my opinion: <a href="https://www.joelonsoftware.com/2000/10/02/painless-functional-specifications-part-1-why-bother/" rel="nofollow">https://www.joelonsoftware.com/2000/10/02/painless-functiona...</a>