When to Ask a Question
Nobody is born with wisdom – especially when it comes to computers. It takes experience to build core understanding. Sometimes people try to cheat this process and simply ask for the solution to a problem they encounter. This is okay in some contexts, but for the most part, more can be gained by grinding through the problem yourself.
Now, I’m not trying to say that you should never ask a question. A quick question and answer can help save you from wasting your time, but be careful what usage of your time is classified as “waste”. For this, I’ll pose an example:
You’ve never worked with regular expressions, but want to check an input string for a complex pattern. Your buddy is a regex guru and could whip up an expression in two shakes of a lamb’s tail. Would you…
a) Have your buddy quickly write the expression for you.
b) Ask your buddy to write the expression and explain it to you.
c) Take the time to learn enough about regular expressions to do it yourself.
There’s not a right answer. If you’re running short on time and need the expression to move on with the project, maybe a is the right answer. If you want to get the gist of what this thing you’re adding to your code is, but don’t really want to go in depth, maybe b is the right answer. Finally, if you have the time and want to actually understand what the regular expression is and exactly what it’s doing in your code, maybe c is the right answer.
I think that programmers should strive to learn every aspect of what their program is doing. While it will certainly take more time to grind through an issue on your own, that time will often be made up several times over. That time “wasted” instead of just asking a question makes you a more valuable asset. This happens in a few ways:
- You didn’t bother another programmer (see below).
- When something goes wrong in the program, you, yourself, can decide whether or not the issues lies within the code you introduced.
- Further down the line, you may recognize an issue as being most efficiently solved with what you learned. In the example above, even if you’re not an expert with regex after learning about it, you’ll hopefully realize when an problem is a good candidate for a regex.
This concept of avoiding asking questions applies to most things! Parents often wonder why their kids are so good with new technology (my mom sure does). The answer is pretty simple: we just messed around with it. Growing up and to this day, whenever I encounter a new program, I click/type around and figure out exactly what it’s capable of. There are a finite number of common design elements in most programs, so once you learn a few interfaces, most of the others should follow suit. Don’t be intimidated by a new program – go forth and figure it out!
Additionally, recall how you formed your base of mathematical knowledge. Whenever you’d work through a new set of problems yourself, the one moment you check your work, and it ends up being correct is the most valuable and rewarding type of moment in your education. In short, try to experience that moment every chance you get in every aspect of your life!
What do you think about the balance of asking questions and spending more time figuring things out yourself? Let me know in the comments section below!