As a software developer who has been in or around the industry in one way or another for over twenty years now, I find the content on the wider internet landscape more and more difficult to digest. This is not a comment on the quality of the writing, the intrusive nature of modern day advertising, or even the click-bait articles that are overt in their inaccuracies and increasingly pervasive. Nor is this about the vitriolic endless back-and-forth between supporters for opposing ideologies, be they political or otherwise.
This is about opinions.
Opinions are not in and of themselves a bad thing, quite the opposite. They are the basis of conversation, a kicking off point, the hypothesis, the precursor to the real work to come. If we didn’t have opinions to push at our established boundaries we would be forever mired in our past assumptions and certainties.
Opinions, backed by extensive experience are even more valuable.
Our civilisation survived on little else for thousands of years. Cautionary tales of the past, molded into tradition, and passed between generations; often times the sole forms of education. Wisdom and past experiences have always been held in high regard, and it is perhaps why we so often see the archetypical wise old king in so many of these stories. Neither dictator nor tyrant, but an individual of experience who is prepared to make difficult decisions or provide direction for the betterment of both themselves and others.
Without the experience of the past, we are inextricably compelled to repeat the same mistakes, sometimes with disastrous consequences. Having someone who has seeped themselves in a subject for decades, and who can hand down their insight and knowledge, can be an unmatched source of information. There is almost no substitute.
Humans are not infallible though.
They are shrouded in their upbringing, swayed by their education and indoctrinated by the authority figures in their lives. This is further exacerbated by how much of themselves they have invested into the path they have taken. It is a hard thing to hear, that the effort you have expended and the truths you have uncovered are not as they seem. Whether by intention or not we are tainted by our biases and it is a constant battle to escape them and find the truth that lies at the heart of the matter.
The scientific method has been our best answer to this problem. It has worked so well precisely because it cares not for personal bias, preference and opinion. The truth will rise to the surface, whether the outcome is desirable or not.
And yet, we as software developers behave rather curiously. Whether by intent or happenstance it appears we are largely abandoning the past, forsaking both the lessons we have learned and those who labored to learn them.
Past experience seems more likely to be maligned than admired. This is due in part to the use of perceived inferior tools such as languages, libraries or frameworks, but also for the structure of the code, or even the methodologies used (or lack there of). Anything that doesn’t meld with modern ideals is either ridiculed or completely ignored.
A single flaw in an argument or solution, whether actual or perceived, is seen as evidence enough to dismiss an entire body of work outright. This is a cowardly form of debate. One where the victor is the one that can shout the loudest, or who can garner the most attention on their social media platform of choice. Carefully considered rebuttals or justifications are drowned in a sea of funny terse responses. The modern internet is setup to reward this behaviour, and it has become rife within our industry.
And yet, instead of fact and rigorous study, our outcomes are more often dictated by opinion and anecdotal evidence. Solutions offered by high profile corporations are given precedence regardless of their merit. Often times this simply results in some form of vendor or technology lock-in, but invariably also higher monetary costs, unnecessary complexity and increased developer time. Sold as panaceas for all troubles and situations, they are more likely to result in incomprehensible systems that need extensive time and effort to resolve even the simplest of issues.
“There’s a big difference between knowing the name of something and knowing something.” - Richard Feynman
As someone who is still actively trying to learn and improve, this is especially frustrating. The skill seems to not be in being able to parse potentially complex information, but in knowing what information to ignore instead. Considering the near constant deluge, this is becoming increasingly impossible.
I have genuine concern for people who are new to the field and may not be able to navigate this situation. Potentially leading them down paths that are clearly of no benefit to themselves, their careers or more importantly, the industry as a whole. In fact I think a large number of people have already been led astray in a significant manner, but I won’t go into that here.
Software development is a comparatively young field and we’re still trying to find our way in it all. But we need to be better in how information is shared and in what promises are made if we’re to avoid drowning ourselves in our own hubris.
When you have an opinion, state as much. Do not word it in a manner that could be misconstrued by people unfamiliar with the fields’ idiosyncrasies as fact. Do not repeat unfounded opinions you read in some random blog, reddit comment or twitter post. If you want to be taken seriously, either back your assertions with statistically significant proof or at least publish your findings so that they can be evaluated by someone else in a better position to confirm or deny your hypothesis.
Maybe it is true that everyone needs to be able to make their own mistakes to be able to fully grasp why the choice was bad. But I am concerned that we are at a point where we aren’t even aware that we are making bad choices anymore.
Last updated: August 2022