Dear new developer,
Asking questions well is one of the best ways to learn quickly. You can ask questions of the code, of other people or of search engines like Google. Here are excerpts of my two favorite posts about asking questions.
If you are trying to find out how to do something (as opposed to reporting a bug), begin by describing the goal. Only then describe the particular step towards it that you are blocked on.
Often, people who need technical help have a high-level goal in mind and get stuck on what they think is one particular path towards the goal. They come for help with the step, but don’t realize that the path is wrong. It can take substantial effort to get past this.
This is a very long doc oriented towards helping people ask questions about technical issues in a way that will get them answered by busy developers. But there’s a lot of useful, if blunt, information, including how to look through Stack Overflow, how to ask on a mailing list, what to include and what to exclude, and what to do if you don’t get an answer.
Second, Ask the Duck:
One of Bob’s superintendants was in his office. He was grinning like a bastard around his toothpick. “Andy,” Bob said, “I don’t want you to pray to the duck. I want you to ASK THE DUCK YOUR QUESTION.”
I licked my lips. “Out loud?” I said.
“Out loud,” Bob said firmly.
Preparing to ask a duck, or really just writing up your question in enough detail so you’d feel comfortable posting it on a mailing list or Stack Overflow, often leads to you answering your own question. Sometimes the answer doesn’t come, but additional veins of inquiry pop up (“Ah, so I didn’t investigate upgrading that library, I should try that”), which sometimes lead to the answer. Or to a more intelligent question.
There’s a tradeoff of course. Doing the research to ask a good question is time consuming and can be frustrating. I always recommend asking people you are working with how much time to spend making this kind of effort. If the project is on a short timeline, it may make sense to ask a less prepared question more quickly, especially if it is to an internal team.
So, in a meta way, be prepared to ask questions to determine how much time to spend preparing to ask questions.