In Re: Re: Re: Re: Re: Slowness when inserting into pre-extended array, tilly raises an interesting point.
How does anyone know how much they know?
How do I know (or perhaps find out) how much of what I think I know is accurate? How much of what I think I know was once accurate but is no longer? How much of what I think I know as a result of some specific experience or test or reference that I have read, is actual knowledge and how much is just conclusions or suppositions that fit the facts as I saw them at the time?.
I originally had that last paragraph worded with "you" instead of "I", but changed to avoid being seen as pointing the finger at anyone in particular., but the questions remain the same regardless of whether its "you" or "I" or "anyone".
I gained a fairly extensive formal education in Comp.Sci. & Math, but that was 20+ years ago. I also have a fairly extensive background in real-world, practical IT, though I been away from that for some months, not by choice and for longer than I would like, and given the pace at which this industry evolves, I can no longer claim to be current even in those fields I was once considered something of an expert. I'm a relative newbie to the world of perl, and even though I've probably racked up an average of over 60 hrs a week for the last year doing pretty much nothing else than perl, there is very limited depth behind whatever level of knowledge I have acquired.
That said, I've probably tackled a wider range of problems, experimented with more algorithms, and explored the minutiae of perl to a much greater degree in that year than I did in all the projects I was involved in, and in all the languages that I used over the past 20 years. Even so, there is no guarantees that what I think I know still holds a few weeks or months after I acquired the knowledge. As an example of this, in a recent thread, I thought that I was saying the "right thing" when I attempted to correct Zaxo in this Re: Re: suffix arrays in the light of information I had 'discovered' in this thread about 4 months earlier. However, as Zaxo pointed out here, my knowledge was about a week out of date. Initially I was chagrined by this, but when I thought about it further, unless the OP was using the very latest release, development build of perl, my information was still current as far as they were concerned, so they were likely to benefit anyway.
This is a constant problem, even for the acknowledged experts in our field. Even Donald Knuth continues to re-release and update and correct his 'definitive' work, meaning that at some point, some of what he previously said with great authority has been superceded.
So the question becomes: How does anyone know how much of what they 'know' is accurate?
The only way that I am aware of is to interact with a community of persons who are active in your field of interest, expound your wisdom as the occasion arises and accept correction when that happens. In many scientific fields this is done through writing papers and submitting them to peer review through industry journals (Nature, Scientific American etc.). In this industry, there are such vehicles as the Communications of ACM amongst others. However, the entry-level for acceptance of ones efforts in journals of this type are extremely high, restricting them in most cases to those who derive an income from the efforts they expend in deriving their knowledge and writing it up. There is also a problem that the baseline for knowledge of highly dynamic and rapidly evolving subject areas like perl are a constantly moving target, and the processes involved in the peer review and publishing of articles through journals is time consuming one.
I believe that the future of such processes is limited and will quite rapidly be replaced by mechanisms more akin to that exemplified by the one we see here at PM. I don't think that PM is perfect yet, but it is a pretty good base to work from. There are probably various ways that the mechanisms that drive PM could be modified and evolved to allow the veracity or otherwise of individual posts and posters to better reflect their true worth, but what we have seems to be working reasonably well. Perhaps the greatest improvement that could be made to the site is for the participants (myself included) to more readily accept correction. The current tendency for this to lead to loggerhead debates and polarisation of feelings is probably more detrimental than anything else.
Just as I believe that no one should be afraid to ask any question, no matter how simple, I also believe that no one should be afraid to offer their 'knowledge', regardless of whether that 'knowledge' is ultimately accurate.
Very few people will knowingly express their knowledge if they 'know' it is wrong, so it is a fair assumption that when you see someone say something, accurate or not, they believe it to be so. The alternative is for people to hold back on saying what they think they know in fear that they might be wrong. And for others to refrain from challenging the knowledge expounded by the few that have enough confidence in what they know to say it out loud, for fear of treading on toes, or being embarrassed or embarrassing others.
Perhaps the greatest trick to cordial relations in this place, is for people to have a sensitivity to the feelings of others. Often it is the manner (or tone) of a correction that most excites the person being corrected. Whilst it is notoriously difficult to determine the intended tone from a textual reply, we are all aware that some ways of writing things are more likely to offend than others. Most people are also quite aware when what they write is likely to be perceived as offensive, belittling or derogatory to the person with whom they are corresponding.
Just as the freedom of speech carries with it the flip side that others must be accorded that same freedom. So the freedom to express opinion, and impart ones knowledge carries a similar flip side. If one expounds knowledge, accept (and relish) that it may be challenged and corrected. If one expresses an opinion, accept that a counter-opinion maybe expressed. You cannot correct someone else's opinion, only counter it on the basis of logic or example. You can 'correct' your own opinions, but only in the light of new knowledge or clarification of existing knowledge, but only if you engage in discourse. There are very few that can arrive at new knowledge, conclusions or opinions on the basis of study or thought in isolation. Isolation engenders dogma and extremism.
Just as a squash or chess player or a racing driver needs to interact with people better than themselves to improve their own game/ skill, so a programmer needs to interact with programmers with wider, different or more in depth knowledge in order to grow. PM is the best example of this I have ever encountered. With less egos and more debate, I think it could be even better.
The only way I am ever going to know if what I think I know is correct is if people who know better correct me when I am wrong.
So please, correct me. I welcome your input. I may not directly accept it at face value, but if I don't, I'm not saying that you are wrong, I'm only saying that I am not sure that you are right and I would like further input to allow me to reach that state of grace.
"When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller