I see people treating LLMs like programming languages and trying to give very precise and detailed instructions. Essentially pseudo-coding or writing english instead of C++. I find that being vague and iterating is more powerful. If you want to give a detailed spec that fully describes the program then you might as well write that program?
Basically treat the LLM as a human. Not as a computer. Like a junior developer or an intern (for the most part).
That said you need to know what to ask for and how to drive the LLM in the correct direction. If you don't know anything you're likely not going to get there.