Be Wrong And Ask A Lot of Questions

        Back when I was first starting out my career, on my first day, as I was walking into the office for the first time, my manager told me this: "If you're ever stuck on something for more than 10 minutes, ask me for help." I asked him for help approximately 30 times that day. It was a learning experience for me, someone who was used to bashing his head against problems for hours and would never reach out for help prior to starting my career. I believe that this open process helped me ramp up significantly faster and kept me from drowning during the early days. While I ask for help slightly less than that these days, I keep that lesson in my heart to this day and am always ready to ask for help. You should never feel bad for asking for help. All great engineers, regardless of experience level, ask for help frequently.

When to ask for Help

  1. For access to information, do a basic search and then ask for help immediately. It's very common that someone will know something you don't and they will usually have context that documents do not.
  2. For solving generic or straightforward problems, first try and understand everything you can about the problem in context. Next, try a naive solution and see if it works. Then, ask for help.
  3. For solving large scale technical problems, come up with multiple technical solutions to the problem and ask for advice on which one might be better. If you don't have this level of information, you likely have several simpler questions that you should ask first. This is not a bad thing as more generic questions usually have clearer answers.

How to ask for Help

  1. Gather as much information as you readily can on the issue and put links and info in a document together.
  2. Write a long, cohesive question where someone could solve your problem without addition information. Include relevant links. I've had many stack overflow questions answered because I included failed build runs, code links, etc.
  3. Give evidence that you tried to solve the problem yourself, preferably in a way that makes it easier for the person to answer your question. Try to take care of as much of the issue as you are able to. People are always happier to help if they know you tried to solve every part you could. It's okay to be wrong and to ask someone for the right answer. Being wrong often gives quite a bit more detail about what you're trying to do than the question itself will. According to Cunningham's Law, "the best way to get the right answer on the internet is not to ask a question; it's to post the wrong answer." This is generally true.
  4. Don't include extraneous details in your question. Go through your question in the end and try and see what you can cut while maintaining intent and answerability.
  5. Be respectful of people's time and effort. Don't just say "Hey" and hope they respond. Let them read through the question and what information you have at their own time and their own pace.
  6. Express the appropriate amount of urgency with which this question needs to be answered. If it's more urgent, you can say so explicitly, or you may need to set up a meeting to discuss details.
  7. If the person you approached doesn't know the answer, they may know someone who does. If they don't, ask your team chat. If your team chat doesn't know, post the question on stackoverflow and link it to the org or company chat.

Conclusion

When you need help, you should never be afraid to ask for it. With that, question asking is a skill, and a useful one. The more you develop it, the better information you'll get when you ask, and the less you'll have to back and forth when you do get answers. Framing the question and asking it may be sufficient for you to answer the question yourself in some cases. Technical questions often aren't merely questions, but are instead a part of a process for solving a larger problem. Having a more detailed, better written question will help you with that process, regardless of whether someone answers it.

Comments

Popular posts from this blog

Low Level Design Part 3: Estimates

Low Level Design Part 1: Reading and Gathering Information

Using Kanban Boards to Stay Organized and to Stay Motivated