When it comes to making ChatGPT solve technical problems, my observation is that you need to be good at writing (technical) requirements to be good at writing prompts.
When I assign a task to a (human) developer, the results depend on two things: First, how good the developer is, second, and more importantly, how well and clearly I am expressing the requirements. And this is also true for ChatGPT. With very precise requirements I get very good results.
So prompt engineering is like writing good requirements, and that also requires understanding the problem domain.