I was afraid that I would spill the beans on being a fraud who had no idea what he was doing, so I'd pretend that of course we'll use library X to write algorithm Y, but then bring up unnecessary complexity about implementation details.
One significant transition I made as I started to feel valuable and deserving of my position was to stop asking stupid questions and start asking simple questions.
To me, doing research is the lowest hanging fruit with the highest return on investment. From a journalism context, I push students to hit LexisNexis and Google hard before they do interviews. Whenever a student complains that they don't have any interesting questions to ask, or the subject had nothing interesting to say, almost always the problem could have been mitigated with pre-interview research.
The benefits of doing research for interviewing:
- You can learn the boilerplate of the subject, which serves the dual purpose of making you more nimble in interpreting the context of responses and saves you from wasting valuable question time of basic info ("So when did you start directing, Mr. Tarantino?)
- You can learn the current or ongoing controversies of a subject, from which almost all interesting questions arise.
- You find other interesting people to interview.
When your questions are derived from research, you save time by cutting through the boilerplate and any bullshit that might be offered as a response. Furthermore, there's an unquantifiable benefit in increasing respect -- that is, your subject will give you more serious, thoughtful answers because they see that you've put serious, thoughtful effort into understanding them.
You can gain this rapport if you're in a position of authority, or have the chance of multiple interviews. But in cases where you're just another possibly-threatening interrogator, doing your research is an easy and accessible way of increasing your authority, and thus, the quality of answers you receive. It can more than make up for in-person skills, depending on the situation and subject.
Edit: the OP suggests not being so strict on Gogling-before-asking, because she likes to ask basic questions during casual conversation, like over lunch/coffee. I think you can have your cake and eat it too. Sometimes I'll ask questions that I already know the answer to, as an icebreaker. But again, this requires research for the domain knowledge. Ideally, you want your icebreaker questions to be one that you anticipate the person is enthusiastic to answer. While they're saying what you think they'll say, you can spend that time gauging the person's mood and think of segues into other lines of questioning. Of course, once in awhile, they'll respond to your softball basic question with something that you didn't expect...and that in itself leads to potential insights.
If you don't have the time to answer a question properly it is always possible to at least explain why and point the person in the right direction. More importantly, deliberately becoming "super unhelpful" in response to a question you don't feel is warranted will come back to hurt you far more than taking some time to answer it.
Edited to add the  bracketed part.
Here is a typical basic question anyone could Google: "Could you explain the difference between C-style and C++-style arrays."
I guarantee you that the answer is better than the Google search.
Now let me search: https://www.google.com/search?q=difference+between+C-style+a...
Yep. NOT ONE of the search hresults (I opened about 10) explains what they are, easily.
As a quick test, go ahead and ask your coworkers "Could you explain the difference between C-style and C++-style arrays." They are a hundred times more likely to give you better answers.
I thought I would be downvoted for this comment so I went ahead and got on IRC. This is the answer I received:
hi - could you explain the difference between C-style and C++-style arrays?
<[respondent]> C-array is just a pointer to a bunch of values you hopefully know the count of
<[respondent]> C++ std::array thing iirc has more type safety
That summarizes EVERYTHING. That's literally it. The key, key, key thing "you hopefully know the count of" comes FIRST. It's just a pointer. You hopefully know the count.
And then it mentions that this is information which std::array can track.
That's it. Try to find anything like those two lines out of all of the links. As far as UNDERSTANDING - as in, if there's a conceptual hurdle, you will never EVER get as easy and quick an understanding as if you ASK someone. NEVER EVER EVER.
Then when you ask the question you can preface it with "I googled and found X, does that sound right or is there more I should know?"
Oddly enough, I've found this is something that is surprisingly hard to get through to some junior people on. They see me as a more convenient search interface so ask me first. I still haven't found a super nice way of explaining that "my time is better spent on other things so please Google before asking me."
That might sound harsh and I don't want to discourage asking me questions, particularly dumb ones (because those can be very important and I want to create an environment where they feel comfortable asking things), but I want to make sure they do their own due diligence first. As someone largely self taught in their domain, it can be frustrating dealing with people who don't resort to that as a first step.
Two questions are about enough to kill a morning productivity.
Have a coworker that does that amount of non work related question chit chat every chance he gets, and it's a mistery to me how he gets employed with those googleable-in-five-minutes knowledge gaps.
Meanwhile it makes the working environment a nightmare for me, becose having the brain constantly picked and drained is extremely atressful, if you also have to, you know, produce results.
Unfortunately, that's wrong too. A C array is not a pointer. If you then Google "C array is not a pointer", you will find plenty of results telling you why.
"Could you explain the difference between C-style and C++-style arrays"
to solve it with googling you need instead two searches (c array definition and implementation / c++ array definition and implementation) plus considerable brainpower to derive the difference.
what you're asking is thus not a piece of arcane knowledge, but involves a lot of thinking for the answerer.
a good question to ask would be 'where do I find a complete specification of c++ arrays?' - I'd be perfectly happy to sharing resources and even help searching, because it shows you're willing to put in the work to understand yourself instead of relying on someone else to do the differential analysis for you and spoon feed you the results
"Because std::array doesn’t decay to a pointer when passed to a function, the size() function will work even if you call it from within a function:"
That's golden. It doesn't fully explain the C pointer/array differences, but it points out their fundamental problem.
Anyway it's not a good example of question requiring a lot of thinking. It is standard knowledge for people involved with C++, so could be a very effective thing to ask someone more experienced, except it's so basic that googling it I currently get a good SO answer on first place:
I strongly disagree only people who read the fine "complete specification" have done their homework.
Yes, interrupting coworkers is problematic and doesn't scale, but stackoverflow does (and IRC etc are not bad).
I adopting Julia's post as my new non-hostile link to how to ask questions.
That's vague, so let me give an example. Let's say you want to ask, say, why data being sent over a network is chunked at a certain size. Before asking that question, first ask, "why _would_ it be chunked?" You then might start down the road of considering that maybe there a maximum size of data that can be sent over the wire, and dig in from there and answer your own question.
Most of the time, things are the way they are because someone made them that way - you're not discovering new land that nobody has seen before - and that someone probably had a reason. If you try to think about what that reason might be - if you ask "why would this be made to be this way?" - you will often find a way to the answer to your original question on your own without having to ask anyone else.
Often, when learning a new library or abstraction, I ask myself, "how would I have designed this?" Most of the time, either the way I would have designed it is the way it is designed and it's then easy to understand, or it isn't and the difference between how I would have designed it and how it was designed points directly at something I hadn't considered or been aware of, giving me a place to start understanding.
Critical thinking and careful investigation are incredibly valuable skills that can push you ahead by leaps and bounds without needing anyone else to help you. Those skills do take time to develop, though.
This is so important when reading others code or re-designing a system. It is easy to be mentally lazy and just think that the prior system was designed poorly when in fact it is covering many cases you simply have not come across yet.
To ask a good question you have to know your audience! This includes asking a teacher, coworker, boss, a spouse and even a computer or cloud of computers such as Google.
You wouldn't want to ask or phrase the same questions that you ask Google that you ask your teacher (believe me I have googled things that are proper english and seem benign yet return horrible and embarrassing results... on the other hand I have googled pretty embarrassing things that I would never ask a human... usually medical).
Now the above probably seems pretty obvious to HNers but believe me it is surprising how globally it is not.
Also as the article does mention you do need to know who to talk to first but you also need to figure out who to ask followup questions.
I went to GaTech late 90s to early 2000s and there was a teacher there named Jim Greenlee (who for all extensive purposes was a bastard albeit effective bastard). Jim Greenlee was very much of the opinion that "human intervention should be almost always the last resort" and that it is better to learn and fail by doing.
Now I don't entirely agree with Jim but I have to say given the way things are improving with computers you really should learn how to ask them questions and probably first since they are increasingly becoming more effective at answering them.
We live in a time where you need to be effective with interfacing with both computers and humans.... Know your audience... and probably ask the computer first since they don't seem to have feelings... yet.
My biggest weakness/opportunity for growth is my unwillingness to ask for help/ask questions. This strategy is key to me trying to save face and it's a good way to learn more about my team's expertise.
> Why does rkt store container images differently from Docker? ... The answer I got was super super helpful
IMO you'd have gotten a satisfactory answer just by virtue of the fact that you're posing a question about a difference from a competitive software product. And in this case it's the market leader by far. Whenever someone poses a difference in behavior or performance/specifications between two similar/compatible software packages it very often inspires a lot of interest.
Aside: I think that Julia's blog posts or at least this one in particular is a great highlight of female participation in software development. Not that men don't post stuff like this on occasion. But it seems like the focus is often more content regarding technical matters than social ones.
Stop trying to be perceived as important and focus on actually doing important things... the rest will sort itself out.
> The more I do this, the more comfortable I feel asking someone to clarify. in fact, if someone doesn’t ask me for clarifications when I’m explaining something, I worry that they’re not really listening!
I think this is really powerful. I believe high skilled professionals tend to have a clear idea of they know and what they don't know.
It is regularly so hostile and rules lawyerly that I have to collect everything I know about the problem into the post, and pre-empt every objection with an existing fact.
And, once I do that, I'm almost always close enough to the solution that I don't need to press "post." Just typing what I know into the Stack Overflow window, and imagining all the objections to the question, structures my question to the point of finding the answer!
I had the temerity to try writing a more neutral and very brief summary of the ESR page some time ago.
[New Year is well past in my timezone, and I'm cooking the dinner right now]
This question does:
- Identify terms you don’t understand
- Ask questions where the answer is a fact
- Do some research // profile flag user accessed faq
- Decide who to ask // ^
When your in IT, everyone has questions. They think it's all the same. I don't have any time anymore to fix a or B's computer. Then I have to worry if they are offended.
At my job, there's a junior who constantly annoys me. He starts telling his problem with absolutely useless info and then says what he thinks the solution would be ( he's always way off). I go to him, ask it to show it to me with fiddler or Google console tools and almost always you can see the problem there. It's absolutely B's.
Or he asks a stupid question where the only possible answer is yes, I think he's doing it to show off as smart ( ps. He's obviously not and after 2 years, he still doesn't do much)
God, I hate it