One aspect of being a successful engineer is asking great questions! We shouldn't be afraid to ask questions (they are critical to how we learn and grow) but, if you follow these steps, you'll ensure the questions you ask are high quality and you can learn the most from the answers you get.
Ask when you've gotten stuck for a while (e.g. 20 minutes) and you're not making progress or if you've been spinning your wheels for a while.
Make sure you've searched for the answer in the documentation, Stack Overflow, in channels (on Slack or Discord), etc.
Get straight to the point (skip the hello) and ask in the right place (where are the experts for this).
Share
- A smart, precise title that describes the key aspects
- What outcome you're trying to achieve not just the problem you're seeing
- What you've tried, what you know
- Exact context - full error logs, PRs, platform information, etc , don't skimp and have to go back-and-forth
- Make it easy to reply - create thread
Ask yourself how you could have solved this yourself and how you'll change the way you approach problems next time. Leave the answer for the next person - make it clear where the answer is (update your original message), refactor code, add documentation, improve error messages, etc.
This is a super compressed version of this great read: http://www.catb.org/~esr/faqs/smart-questions.html