I'm the one that people come to when they want advice with anything complicated. When they need things fixed or when they haven't got a clue where to begin, I'm usually the first person they come to, not always because I have a background in whatever problem they have, but because I have a problem-solver mentality. I have always been this way ever since I was a child. I have loved puzzles and riddles, they let my mind run wild and most importantly they let me indulge in curiosity. For anyone that knows me well it would be fair to say that I am an incredibly curious person, and when I put my mind to it, if I am determined to find something out, I will usually find a way.
One thing that annoys me however, is when people approach me with problems they want to solve, but they are not forthcoming with the truth. This isn't always a case of someone being dishonest, lying to me about details that they claimed were true, no, the biggest problem is when people withhold information, they tell you the truth but not the whole truth, important details are omitted which can completely change the dynamic of the problem you are trying to grapple with. This frustrates me because they often act on the advice I give, then come back and tell me it didn't work, only then to reveal what they withheld in the first place.
To that end, over the years I have taken to asking much more probing questions, those that pin the person to a corner where answering with anything other than the complete truth would necessitate dishonesty. As a programmer, abstraction is an important concept, it's an important part of life, it is the concept that you do not need to know every detail in order to proceed, you need only know what is relevant, the trouble in these situations is that the decision as to what is relevant is ultimately being made by the person who is asking you for help, rather than you as the person who is trying to help. That's a difficulty, and more importantly, an implication that needs to be addressed. Before you give any advice you need to know everything that is relevant to the problem at hand, that requires you as the problem-solver to look beyond the problem and look at the information you have been given to help you solve it and ask, what have you not been told, and what could completely change the outcome without changing the problem?
There is a very basic equation that is often cited in the world of computing that demonstrates the importance of this meta information:
What is 1 + 1 equal to?
This is a fairly simple question, and there is a presumptive answer "2" before you answer this question however, there are a few things you need to know, as a programmer you need to know if this is a mathematical question as all, if it is not, then 1 + 1 may result in 11 if '+' is being used as a concatenation operator, second, you need to know, if, assuming it is a mathematical question, what base are the two numerals expressed in, is it base 10, in which case the answer is 2, or is it base 2, in which case the answer is 10.
Assumptions only make sense and lead to reliable outcomes when both people are so attuned that they will always make the same assumptions, any deviation in this attunement will result in errors, the extremity of the consequence of those deviations will depend on how critical the original problem was, and often leads to the creation of others.
I realise this whole post may not make a lot of sense right now, I can't add greater clarity without going into the specifics of the situation that inspired it. Suffice to say I am feeling irritated right now; what I chose to do in this scenario was to tell the other person the potential solutions and their outcomes and add the caveat that a number of factors could change the outcome drastically and left it at that for them to decide what to do themselves. If you're not willing to tell me everything I need to know in order to make an informed decision, then don't expect the advice given to be reliable, that's not a complicated concept to understand.
No comments:
Post a Comment
All comments are moderated before they are published. If you want your comment to remain private please state that clearly.