A programmer who has not mentally resigned already, is constantly learning. This includes taking lessons, listening to talks, reading books and of course blogs and other resources on the web. However, don’t take everything you read or hear at face value.
I am not saying we should not listen to what others have to say and repeat their errors, because we could not learn from them. I am saying that whatever piece of information we come across, we should not just accept it but also think about what we just learned, and be open to the possibility that it is not the whole truth.
In general this may sound like common sense, hardly worth writing about. However, in a sector where constant learning and relearning is crucial for staying one step ahead of the herd, we tend to save some brain power by just accepting information without questioning it much.
They might be plain wrong
The need to question information is rather obvious for tips of people we have never heard about. We don’t know them, so we don’t know their background and if they thoroughly grasped the topic they write or talk about.
People write or say wrong things for different reasons. They may have misunderstood something or have not yet learned all there is to a topic. They may be mislead by information they got from a source they think is authoritative. Sometimes, people deliberately write about something they have no idea about, just to be writing.
The information may be outdated
I don’t know how often I have read questions on Stackoverflow or forum posts telling “our professor told us to do it this way”. All to often, that professor told a story that was true fifteen or twenty years ago when they taught the topic for the first time.
C++ has been alive a long time now, but it also has evolved. What was true 10, 15 or even 20 years ago is not necessarily true now, and people who make their living by selling knowledge sometimes care more about the selling than about if that knowledge is still accurate.
Therefore it is not only knowledge that has been written down years ago that we should be wary of, but also knowledge of people who have stopped staying up to date years ago. There are lots of blog posts and even books being released that do more harm than good, because they teach outdated knowledge that sounds good, is not entirely wrong, but has to be unlearned and overridden with more up to date stuff.
What about VIPs and Gurus?
One may think that the Big Names in the industry are unconditionally trustworthy. They usually are, but while their contributions may be of much higher value in average than the quick write up of your average blogger, they too are only human, and humans are not always right.
Another point is that many of those great speakers and authors usually do not bother to dwell in the established truths most of us are still learning. Instead, they talk and write about new language features and cutting edge libraries and current development in the industry and how those are likely to be used best.
The nature of those topics is such that even the brightest minds will not always think about all possibilities and every development, so what seems sound today can have better alternatives tomorrow.
It may not apply to your context
Whenever you read something on the web about C++ or other technologies, keep in mind that the author has specific experience, a specific perspective and therefore might view things differently than you.
For example, I write from the perspective of enterprise software development. Therefore, while I am pretty sure that much of the clean code principles I value are valuable elsewhere as well, my view on performance may be very different to that of developers doing embedded or high performance computing.
So always keep in mind, that if you work on very constrained micro chips and someone tells you that resources like stack memory are cheap, they may be perfectly right in their context but aren’t necessarily in yours. The other way round that means if you read something that for you seems like complete nonsense, it may be viable advice in other contexts.
Our profession is one of thinking, and learning is not just stuffing knowledge into our brain.
Reflect on what you read and hear, if possible get information about the same topic from more than one source, and re-evaluate your knowledge from time to time.
Including this blog 😉