What I do is this: model the part of the project you want with uml and write the function names. You solve the bulk of the design issues and all the coder has to do is fill in the functions. The skill lies in writing function names and descriptions that pretty much guarantee that he can hardly do wrong.