Skip to content

Latest commit

 

History

History
71 lines (49 loc) · 5.33 KB

asking-good-questions.md

File metadata and controls

71 lines (49 loc) · 5.33 KB

Asking Good Questions

Motivation

The ability to ask questions that lead to useful answers is a must-have skill for software engineers because they are constantly solving problems. Asking the right questions helps engineers arrive at solutions more quickly and progress more.

It enables you to be better at your job. Particularly in today’s fast-moving and rapidly changing workplace, it’s critical to keep inquiring about the evolving nature of the work you do. We must all continuously ask some version of the questions, "How is my job changing?" and "How might I do it better?" One way to demonstrate that you are open to change and willing to learn and adapt is by asking questions -- about how your industry or your specific job may be evolving over time, about what is expected of you, and how those expectations may also be changing. Most bosses who are trying to manage change are apt to appreciate and even reward that kind of questioning, not punish it. (amorebeautifulquestion.com)

Objectives

Participants will understand:

  • How software engineers learn on the job
  • What resources are available to software engineers for getting "unstuck"
  • How software engineers ask questions when they need help

Specific Things to Learn

  • How to read error messages
  • How to write a useful Google query
  • How to use Stack Overflow
  • How to read documentation
  • Practicing the "20 minutes of struggle" rule
  • Sample script for asking for help from a colleague
  • How to ask good questions

Lesson

Video walkthrough of slides Asking Good Questions (27 min)

Read through topic slides Asking Good Questions

Here's a template for asking questions: "I could use some help. I’m using this tech stack: __. I want to __ to accomplish __. I searched for __ and I read __ and tried __. I’m getting this error/result: __. I think the problem could be __. Here’s a link to my code: __. Do you have any suggestions for me?"

Common Mistakes / Misconceptions

  • "I can't ask for help because I should know how to do everything on my own." As a Jr. Software Engineer, your colleagues and manager will know you're still learning and that you'll need help. To most other software engineers and engineering managers, it's more important that you can figure things out than it is for you to already know everything.
  • "No one has ever been stuck on this thing I'm stuck on, and therefore no one will be able to help me." There are millions of software engineers all over the world, they all were novices just like you are, and they all have access to the Internet. Therefore, it's likely that at least a few of them have already asked your question online — you just need to find it!
  • "I tried searching for this on Google but nothing came up. There's no other way for me to make progress on this." Knowing what to search for can be challenging as a novice, when you may lack the specific vocabulary required for getting relevant results. If you're still stuck after trying several search variations, ask a classmate or an instructor what you can try instead.
  • Calling someone over to your screen and asking, "What's wrong with my code?" Hopefully this lesson has taught you a much more effective way to ask for help!

Independent Practice

  1. Pick a programming concept that you have difficulty with or are trying to learn. Use StackOverflow to see if you can get some good information about it.

  2. Role-play the sample script with a partner.

  3. Create a note on your computer or bookmarks folder that contains a prioritized list of all the problem-solving resources you have at your disposal.

Check for Understanding

  • What are at least 3 resources a software engineer can use to get unstuck? In what cases would you use each of these resources?
  • What kinds of useful information can you expect to find in an error message?
  • What information is important to include in a search query to return relevant results?
  • What are some of the common mistakes new developers make when asking questions, and what should be done instead?
  • Recall the "20 minutes of struggle" rule. What should you do if you make progress after giving yourself 20 minutes? What should you do if you don't make progress?

Supplemental Materials