Sometimes I find myself in situations where someone appears to know exactly what my problem is. Not only do they appear to grasp the entire situation from a mere few words, they have also wasted no time in determining (from the possibly infinite pool of potential choices) the best solution. I often wonder if their costume is under their clothes or if they just change into it really quickly when required.
While there could be a few exceptions to the fact that it’s severely unlikely someone has really nailed your entire problem domain and a solution in a mere 10-word conversation – such as perhaps Linus if you were talking about kernel programming – I’m calling bullshit every time.
There are too many programmers (and not just programmers, in fact) who are just big soft balls of ego. It’s cute, in pitiful kind of way. They are also really easy to spot. Just ask them a question you know they won’t know, and yet against all odds, they’ll know it. Well, they’ll make you think they know it by giving you an answer and then they’ll go and save a child from a burning building.
You can’t make good decisions without understanding, and to build an understanding of the problem you must ask questions. If you’re not asking questions, you’re substituting them with assumptions which simply isn’t going to help anybody.
The smartest people I know would never tell you ‘use X’, ‘you’re doing it wrong’ or throw phrases around like ‘best practice’ unless they had asked enough questions to fully understand the context. Neither would they answer a question for ego’s sake.
If someone is giving you lots of advice while asking few questions, do yourself a favour and stop wasting your time. It’s surprising and worth remembering how the loudest and most confident ones are often the ones who can help you least.