Dealing with entrenched toxic opinions - A beginner's perspective
Tags: beginners, programming
Published: 2022-08-15 04:02:00

First of all, I want to make it clear, I am a relative beginner in the world of development, having come from an 8 year career in IT Support and only just started coding in earnest this past year. I have not worked on repos with 45 billion lines of code, or even something realistic. I have not worked in a true agile team environment yet and I have engaged with and worked with only a few programming paradigms and languages. Take what I say with this in mind. 

## The Problem

After spending some time on DEV, I have come across a range of posts by people who purport to be experienced developers who have worked on "major projects used by many thousands of people over long periods of time". These articles (which I will not link as I am sure that you have heard these opinions before in this or other places) discuss topics such as **programming paradigms** (such as Object-Oriented Programming vs Functional Programming) as well as **development methodologies** (such as Agile) with an emphasis on how bad they are for x reason. I have had similar conversations with people in my own life where I was told for example: *"OOP is the Devil because it makes programs too complex in comparison to their purpose"*

## The discussion

My major issue I have with this kind of conversation is its toxicity to beginners such as myself who are only tangentially aware of the concepts. These kind of opinions are developed over years of working with these concepts and having negative experiences with them such as rampant code over-complexity with OOP or excessive procedural overhead with Agile. 

An example of this from my own career in IT Support is that I personally do not think that [ITIL](https://en.wikipedia.org/wiki/ITIL) is a particularly good framework out of the box for small to medium service teams. In my experience, I believe that it can prevent tasks from flowing to the correct people on the service team at the time that it is needed and cause significant delays in properly designing and scaling smaller support teams. I have come to this conclusion over years of working in small to medium teams where this structure often hindered rather than helped.

While this is my opinion based on my experience, it is wrong of me to say that this is **the truth**. Importantly, I may have also arrived at this opinion because the organisation I was working with were not properly implementing the ITIL guidelines or the tools that I was working with were not setup correctly to properly adhere to the ITIL framework. My opinion could conceivably be formed based on bad experiences I have had in **my** professional life.

Opinions like this are strongly influenced by the professional experience of the person sharing it as well as how they think. Programming paradigms, development philosophies and other meta topics such as these serve first and foremost, as mental models for compartmentalising and abstracting highly complex and deep topics both within code and the real world. What works for one person might not (and in some cases, will not) work for everyone.

In the example I provided above, it is **not up to me to decide of someone else should like ITIL or not. The beginner should under all circumstances, be allowed to form their own opinion without the opinion of the teacher**. It is highly disingenuous and in some cases harmful to teach someone that "x is bad" when they do not have the tools or experience to properly assess the opinion let alone form an informed opinion of their own. I am also self-aware enough to know that my opinion about ITIL is generally not shared by the majority of organisations in the industry and some people could view it as just wrong.

## Conclusion

To be clear, I am not suggesting that the experience of the teacher should not be communicated, just contextualised. Highlighting the pitfalls of a specific methodology and explaining why you believe it is the wrong choice for a *specific situation* can be significantly more valuable than stating that something is bad outright because it "always produces an undesirable outcome". 

As a relative beginner at all of this, after reading or hearing: "OOP is bad and you should never use it because it always turns into unmaintainable spaghetti code at scale," it kills my motivation to learn as I feel as if my efforts, short as they may be have been, are going to waste. This is just not helpful, **even in the instance that it is true**.

**Fellow beginners:** do not listen to these people! Do not let them push their negative professional experiences onto you. Form your own opinions from your own experience.

I would also speculate that if I dedicated a decade to learning and implementing OOP for example, having some 25+ year veteran come and tell me that my decade of experience is pretty much worthless because OOP is bad would certainly rub me the wrong way. 

**Veterans:** it is okay for you to have these blanket opinions but please, wait until we ask you to express them to us. Often, your opinion does more harm than good especially if we don't fully understand the context or have the experience required to properly understand why you are saying these things.

Thank you all for reading! I would love to hear your take on these kinds of entrenched toxic opinions. Do you agree or disagree?