Developer Skills - Asking Good Questions

Adapted from Tectonica workshop - https://github.com/Techtonica/curriculum/blob/main/onboarding/asking-good-questions.md

Asking Good Questions

Projected Time

About 45- 50 mins

  • 27 minutes for walkthrough of slides

  • 20 minutes for Group Practice

Prerequisites

Learning to Learn lesson

Learning styles represented

  • See (videos and slides)

  • Hear (videos)

  • Write (Independent Practice)

  • Do (Group Practice, Check for Understanding)

Motivation

The ability to ask questions that lead to useful answers is a must-have skill for developers because they are constantly solving problems. Asking the right questions helps developers arrive at solutions more quickly and make faster progress. It enables you to be better at your job. Particularly in today’s fast-moving and rapidly-changing workplace, it’s critical to keep asking questions about the evolving nature of the work you do. In effect, today 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 about how 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 likely to appreciate and even reward that kind of questioning, not punish it. (See more info about questioning in the blog: 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 StackOverflow

  • 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

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!

Demonstration

Instructor will demonstrate:

  • How to read and research an error message

  • How to use StackOverflow

  • How to skim and use blog post tutorials

Group 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 template for asking questions sample script with a partner.

  3. Create a note on your computer which contains a prioritized list of all the problem solving resources you have at your disposal.