
Ask HN: Why do such strong opinions exist in our industry? - tcbasche
Namely, why do opinions tend to completely trump evidence for technical decisions? E.g. choosing new trending frameworks, a language that _wasnt_ used on a previous project that failed, choosing a cloud provider based on gut-feeling etc. etc.<p>Is this because it&#x27;s so easy to get started with new tech? I&#x27;d be interested to know what people&#x27;s experiences are like.
======
marktangotango
Because this isn't an engineering discipline, there's no science, it's all pop
culture. Alan Kay:

 _Computing spread out much, much faster than educating unsophisticated people
can happen. In the last 25 years or so, we actually got something like a pop
culture, similar to what happened when television came on the scene and some
of its inventors thought it would be a way of getting Shakespeare to the
masses. But they forgot that you have to be more sophisticated and have more
perspective to understand Shakespeare. What television was able to do was to
capture people as they were. So I think the lack of a real computer science
today, and the lack of real software engineering today, is partly due to this
pop culture._

Basically everyone roots for their favorite team.

~~~
jamesb93
In my experience a lot of people who post on hn have a shallow view of how
technology relates to a diversity of people who use it. Most are coders for a
company who make web apps, or business applications or have been in coding
long enough to develop esoteric affectations for LISP. Every time I see an
incredibly strong worded opinion I get the impression they've never stepped
outside working with a computer company driven by a 'demand' for a 'product'.

Just look at the comments of this thread right now.
[https://news.ycombinator.com/item?id=20672051](https://news.ycombinator.com/item?id=20672051)

~~~
tcbasche
Yeah I was just reading that and thinking the exact same thing. Lately I've
been thinking 'man, Elixir has been getting some traction' until I realised
I'd only really read that on HN in the comments sections.

------
blt
Software developement is an unconstrained field. Computers can do almost
anything you dream up. You don't need expensive tools, space, raw materials,
or lots of people to make it. Contrast with building a car, where strength of
materials, wear and tear, safety requirements, etc. make the design space kind
of small.

In other words, there are fewer decisions that can be resolved by "option A is
the _only_ way to meet constraints x, y, and z simultaneously."

~~~
solomatov
It's not true, we have a plenty of constraints: memory, cpu, battery
consumption, latency, etc. We also have complexity constraints, i.e. how
qualified our teams, which technologies, they know, etc.

IMO, many combinations are just impossible, just like in mechanical
engineering, and even worse, complexity is often much higher.

~~~
blt
I think many programmers work on projects where computer hardware limitations
have little impact on the code design.

------
pizza
[https://en.wikipedia.org/wiki/Narcissism_of_small_difference...](https://en.wikipedia.org/wiki/Narcissism_of_small_differences)

~~~
tcbasche
This is interesting and may explain the core of many arguments in the
developer community (i.e. a lot of hair-splitting!)

------
AnimalMuppet
There's too much going on in this industry. _Nobody_ knows everything. When a
question comes up (Angular vs React? Lisp vs Haskell? C++ vs Rust?), there are
very few people who know both sides really thoroughly, even for a question
that only has two sides. So we wind up with opinions, because nobody knows
enough to do otherwise.

And if you don't know both sides, you're judging a side that you know less
well against a side that you know better. That is, you're judging your
_experience_ of X against your _opinion_ of Y. When you're talking to someone
who knows Y better than X, you can get fireworks.

~~~
devxpy
Hmm, so are you blaming the incompetence of the majority of people in the
field?

Also, I can't help but draw parallels to this other discussion [1] where
people claim that veterans in the programming community have to "live" with
python because beginners adore the syntax.

[1]
[https://news.ycombinator.com/item?id=20672051](https://news.ycombinator.com/item?id=20672051)

~~~
thethirdone
> Hmm, so are you blaming the incompetence of the majority of people in the
> field?

I interpreted it as being an issue that there are so many options that being
an expert in the relevant two so you can can make an educated decision is
uncommon.

This is probably somewhat unique to programming. There are easily more than 25
programming languages that would be important to know trade-offs between in
any given programmer's career. And in each, there are competing libraries and
frameworks. Woodworking is the only other profession that comes to mind for
having so many competing tools.

------
BoiledCabbage
Compared to the constraints of the physical world, the universe of
computability is essentially limitless.

On top of that, there are almost zero objective facts in the field. Faster and
smaller are about the only factual statements that can be made about
computability. Everything else is an opinion. With no physical truth to
disprove wrong opinions, people get accustomed to putting forward passionate
arguments without every worrying about being proven wrong.

Finally, it usually takes significant effort to even have a few sample cases
to compare opinions when it comes to coding. And usually it's not under
scientific controlled environment.

There are no two decades long arguments about "does a ball roll down a hill".
Noone is taking a strong opinion against. Before it would get that far,
someone would just put a ball on a hill and see the end result. You can't do
that with software, the problem space is too large and there is no little
bearing to an objective way to measure to results, or they often aren't
generally applicable.

------
crimsonalucard
What evidence exists that definitively says JavaScript is better than perl? Or
golang is definitively better than python.

There is no definitive evidence.

You can't even prove that rust is definitively better than assembly language.

Hence where no evidence exists, decisions without evidence are made
constantly.

You also need to realize that this not baffling. Collecting hard scientific
evidence for every freaking detail is incredibally hard and time consuming.
It's part of why the medical industry moves so slowly to get medicine out.

In fact any problem with the word design means that you are working on a
problem with no definitive evidence pointing to a definitive solution. You are
literally designing a possible solution out of thin air. There's a whole
segment of people who do this, they are called ux and ui designers and a large
portion of the the content they spit out is not evidence based at all.

~~~
buboard
What evidence exists that definitively says JavaScript is better than perl? Or
golang is definitively better than python.

do people bother to gather the evidence though? like perhaps performance,
number of bugs per coding day, quantity and quality of output etc.

~~~
muzani
Is evidence helpful?

At our workplace, it's clear that Cordova hybrid is worse than maintaining
both iOS/Swift and Android/Kotlin, in terms of bugs, development time,
hiring/retention cost, user experience. But we still do it.

Sometimes it's just that there's less unknowns involved. A bug in Cordova
might take a week to fix. A bug in Android or iOS might take 1-2 days.
Statistically it would be a no brainer. But bugs are dreadful things and
there's the possibility that it could take much longer than usual or go
unnoticed.

------
devxpy
I think its also worth looking at how people usually learn computer science.

In my limited experience, most programmers learn real world software
development using the internet.

Some might learn CS theory in formal education, but most real world tools and
frameworks are just taught by random people on the internet, or worse, giant
corporates that have business interest in promoting the use of X. (Flutter,
React, etc.)

Internet cannot possibly provide the scientific temperament and rigour that
formal education in say, Physics, is able to provide.

The general consensus among the public seems to be that internet has made CS
education highly accessible to the masses. This is of course, very convenient
for countries like India, where higher education is often unaffordable and
unpractical.

What's not so clear however, is whether this is enough for a real engineering
discipline to exist.

~~~
spdebbarma
This makes sense to me, as a dev from India who's currently learning a variety
of technologies.

I could never afford college, so I took it upon myself to learn whatever I
wanted from the Internet. It is astounding how rich the resources for CS are,
if you know where to look on the web.

Going back to the topic at hand, I often find myself being defensive and
supportive of stacks I use and learnt about. When I dig deeper, I find myself
at a lack of words, regarding why I like React or Python. It mostly boils down
to "I like x because I know x". I often don't have reasons backed by technical
knowledge.

Many times I've not given a certain language/stack a chance just because I
heard/read one guy write something negative about it online.

I see my error and will try not to be blindly biased.

------
dragonwriter
> Namely, why do opinions tend to completely trump evidence for technical
> decisions?

Because evidence that isolates the effect of the technical choices under
discussion from all outside effects and is directly and unambiguously
applicable to the context in which it needs to be applied basically doesn't
exist for most technical decisions in our industry.

The evidence which is clear tends to be on questions which are distant from
business value, the questions the get directly at business value tend to have
unclear/ambiguous evidence.

------
skybrian
Perhaps confidence, warranted or not, gets more attention (including upvotes
and reshares) than being justifiably cautious about drawing a conclusion? In
theory this will both reward confidence and make it appear like most people
are doing it.

It seems tough to avoid. You need a system, and we don't really have one yet.

------
coppolaemilio
The trending frameworks might be because we usually get tired of working with
the same technology over and over again. The moment of learning something new
is always exciting and once it wears out I guess that starting with "the new
thing" recreates that feeling momentarily so we start rationalizing about it.
There is also in my opinion the big problem of being able to do the same thing
with many different tools, it always generates this kind of conflicts of which
one is better, but at the end of the day, any tool can be "the best one"
depending on the team.

~~~
collyw
I find the opposite. I would far rather develop in a language / framework that
I am familiar with, knowing that I will be making the correct decisions.

I doubt it is only me, but every first attempt with a new language is a fairly
crappy effort, as its a learning experience. I prefer to be solving the
problem at hand rather than having to google something about the framework
every half hour.

------
ageek123
Because it's art moreso than science or engineering, thus much less subject to
constraints like physical limitations.

------
vonholstein
We had a term where I used to work - Promotion Oriented Architecture. In most
places progress in the engineering org chart is heavily influenced by
delivering software for complex usecases. Unfortunately IME most developers
correlate complexity in the problem domain to complexity in the solution
domain. This becomes a very strong driver for adopting novel solutions, even
when a simpler one would have sufficed.

A second factor is the difficulty in measuring success. Once a solution is
adopted it is very hard to demonstrate the opportunity cost incurred by not
selecting a simpler solution. And the costs themselves may not be evident
until long after delivery. And since measurement is hard, the lack of data
also makes it difficult to articulate effective counter arguments to
gratuitous complexity

~~~
throwawaytoday5
I like to refer to POA as Resume Driven Development, pairs nicely with TDD
IMO.

------
buboard
I don't know if it has to do with the CS background of people, but i find it
baffling too (physics background). A TON of decisions are given very little
thought or justification even though it should not be hard to measure stuff.
It borders or being similar to management.

~~~
skybrian
Although it's sometimes not hard to measure things, often the measurements
don't generalize. Today's measurements may be invalidated by future software
upgrades, or just variety in the platforms where the software runs.

------
quaquaqua1
I think you have to follow the money. When people have invested a lot of money
into something, and loan payments are due every month, people tend to "make
decisions" like "we are going with xyz framework" or "we've always used java
so why migrate".

Once this decision is made at the top, the middle managers and aspirational
employees believe in the upper echelon's dogma because their jobs depend on
it, and going against the organization might = getting fired.

Conversely, when you look at self organized teams that are just making a hobby
project, they tend to go with "we will do whatever we want to do given the
reality of the tech landscape".

------
espeed
Wisdom takes time. Effort and time. A certain striving few are willing to
maintain.

------
gitgud
Programming is (in a lot of cases) a "personal endeavour", as generally 1
computer has 1 keyboard for 1 person to use. This typically means it's a
_personal_ experience to program software, which can have a stronger impact on
you. Some experiences in programming are really good others are really bad...

 _" Strong opinions come from strong experiences."_

------
kazinator
There are multiple reasons why strong opinions exist.

But at least one of them is quite valid. We have a lot of garbage in our
industry. People perceive that correctly and call it out. Simple as that.

------
artemisyna
Strong opinions exist in any industry. However, few industries have as many
things going on (and actively vyying for your attention, whether for $$ or
mindshare or otherwise) as software.

------
rmason
If you go deep in a niche you're going to learn things. Those things may be
contrary to the standard thinking. But in turn if you're right they become the
standard thinking.

------
crimsonalucard
Because there is no evidence either way.

------
username3
There’s no single source of truth. Experiences are posted on social media and
forgotten.

------
ako
Network effects and platform thinking create a high sense of urgency: time to
market is considered crucial.

This in combination with a high level of innovation means there is a big risk
perceived in taking the time to truely evaluate and test new technologies.

And in the end, because most of this is venture capitalist driven, long term
effects are not really important: a road to a rewarding exit (ipo or company
purchase) is what really drives most investment decisions.

------
muzani
Dunning-Kruger effect.

