The more you learn the more you realise you were wrong.
Having an opinion has often come to mean one is a fan boy of something and will have it no other way.
I have heard team leads say "this python code is bad because it uses no classes" or "we need to use EMR so we can process all customer data together"
Bad opinions formed can be dangerous and counter productive.
Though I do agree that an opinion based on having a well thought out plan and experience is a sign of maturity.
PHP and node come to mind immediately.
Ruby is down right retarded with promoting Concerns for modeling cross cutting concerns and fat controller/model is a pattern for creating technical debt.
Dealing with python environments and packages makes me want to avoid python if at all possible.
Using C# and Java means I'm probably going to have 3 projects for a hello world.
I'm not positively opinionated about my tools - it's more about deciding which one sucks least for a particular task.
I see this a lot, and I don't blame folks for having this stance. It's taken me over a decade to dial in my workflow.
Quick rundown:
- don't use python2. Ever.
- don't use the system python, or brew python for anything other than bootstrapping
- only use `pip install --user` for exactly one thing: `pip install --user pipx` when you don't have brew
- never, ever, ever `sudo pip` anything. No exceptions.
- use pyenv to manage your python versions.
- use `pipx` to install stand-alone CLI tools, like virtualenvmanager, poetry, black, mypy.
- always develop in virtualenvs. No exceptions
- prefer installable python packages over scripty standalone .py files
- using PYTHONPATH is a smell
- poetry is likely the future of tooling, but it's not mature enough to be considered best practice for python beginners just yet. Stick with pip if you are uncertain.
- use lockfiles for writing applications but not writing libraries
- editable installs are a double-edged sword
As for calling it retarded - it's the emotion it evokes, I don't find it particularly offensive - but thankfully I'm not from the pronoun declaring part of the world.
I subscribe to the 'strong opinions, weakly held' model. It's necessary to have opinions about things you're involved with. However, the real art is to be able to not be too attached to one's opinions, be open to change them, and be able to be a productive team member, even if there is a decision to do things in a way that doesn't conform to one's opinions even when the opinions haven't changed.
And they'll say it's "best practice".
"best practice" has basically come to mean "whatever that particular developer knows/likes"
If someone is making a claim about anything outside PEP-8 (like whether to use classes) or worse, AGAINST PEP-8...that's when you know there's a problem.
I don't have a hate/love opinion on most things. I may have an opinion on wether or not one particular technical choice is contextually a good or bad idea. I may not be able to form an opinion.
Somewhat related: Rich Hickey (of Clojure fame) makes the point that one of the disappointing aspects of the software development community is that there's so much talk about 'better', and so little about trade-offs.