13 ms·
Ask HN: Why do such strong opinions exist in our industry?
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.
Is this because it's so easy to get started with new tech? I'd be interested to know what people's experiences are like.
- coppolaemilio 7y agoThe 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 7y agoI 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.
- quaquaqua1 7y agoI 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".
- artemisyna 7y agoStrong 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 7y agoIf 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.
- buboard 7y agoI 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 7y agoAlthough 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.
- pizza 7y agohttps://en.wikipedia.org/wiki/Narcissism_of_small_differences https://en.wikipedia.org/wiki/Narcissism_of_small_difference...
- tcbasche 7y agoThis is interesting and may explain the core of many arguments in the developer community (i.e. a lot of hair-splitting!)
- deleted 7y ago[deleted]
- crimsonalucard 7y agoBecause there is no evidence either way.
- username3 7y agoThere’s no single source of truth. Experiences are posted on social media and forgotten.
- crimsonalucard 7y agoWhat 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 7y agoWhat 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 7y agoIs 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.
- crimsonalucard 7y agoYou can't really say one piece of evidence is better than another piece of evidence unless you can quantify it in a meaningful way. Agile points are an example of something quantified in a way that isn't meaningful, while performance timing on an algorithm can be meaningful. Many things in programming languages like a for loop vs. recursion cannot be quantified meaningfully.
- dragonwriter 7y ago> 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.
- espeed 7y agoWisdom takes time. Effort and time. A certain striving few are willing to maintain.
- skybrian 7y agoPerhaps 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.
- vonholstein 7y agoWe 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 7y agoI like to refer to POA as Resume Driven Development, pairs nicely with TDD IMO.
- AnimalMuppet 7y agoThere'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 7y agoHmm, 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 7y ago> 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.
- anon9001 7y agoIt's not incompetence, and you don't know what's going on either. None of us do. Most developers I've worked with know less than me, and I don't know a fraction of all the things to be learned out there. Most people only have deep experience with their special niche, because it's a lot better to hire a "PHP developer" than a computer scientist if you actually need PHP maintained. That creates incentive on both sides for specialization of labor, and it decreases the number of people that have deep and current experience in many things. And more common tech means easier to hire workers, which gets the job done faster. It doesn't make sense for me to add Rust to a project, because now I have to both do the project and learn Rust. Plus I'm going to have trouble finding Rust programmers to maintain it. You can't teach this stuff in schools, because it changes too fast. The best we've come up with so far are those hacker bootcamps that try to ramp you up on what's hot right now so you can at least start to get in the game with the highest chance of success.
- marktangotango 7y agoBecause 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.
- foobar_ 7y agoI would say it's more closer to fandoms than pop culture.
- deleted 7y ago[deleted]
- jamesb93 7y agoIn 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 7y agoYeah 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 7y agoSoftware 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."
- odyssey7 7y agoSimilarly, you have a better sense of the cost of different materials in a car, but pricing React vs Vue vs jQuery is a lot fuzzier. Especially since software may or may not get extended whereas a car doesn't get updated a lot after being purchased.
- solomatov 7y agoIt'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 7y agoI think many programmers work on projects where computer hardware limitations have little impact on the code design.
- ageek123 7y agoBecause it's art moreso than science or engineering, thus much less subject to constraints like physical limitations.
- BoiledCabbage 7y agoCompared 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.
- gitgud 7y agoProgramming 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."
- muzani 7y agoDunning-Kruger effect.
- deleted 7y ago[deleted]
- devxpy 7y agoI 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 7y agoThis 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.
- collyw 7y agoTo be fair Stack Overflow's voting system generally appears to work well for selecting the best answer. Reddit on the other hand seems to dish out fairly crap advice on a regular basis for the subs I subscribe to (not that all Reddit advice is bad, just that bad answers don't get the same down voting that SO answers do).
- ako 7y agoNetwork 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.
- kazinator 7y agoThere 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.