A Guide to Effective Prompt Engineering