Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This is a really important concept for developers.

One aspect for developers that I see quite often is the assertion that "We can't have X without giving up more Y", most commonly "we can't have more security without giving up on user experience". With the Pareto idea in mind, we can see that that statement is true, if and only if you are in fact on the Pareto frontier of security and user experience already.

However, many times these confident pronouncements are being made when the system under question is quite evidently not on the Pareto frontier in the first place and indeed you can get more of one without giving up the other.

Making it more tricky is that in business, you can never discard "money" as a dimension, so unless you're taking "money" as one of the dimensions in the original comparison you want to do, it sneaks its way in. Or, a composite time/money, or "cost to business", or some other similar concept, time & money aren't orthogonal and don't need to be treated as two separate dimensions in general, though you can if you want. Which puts you into the 3D case, and as the page says, that grows the frontier quite a lot, which is good in some ways and bad in others. Nevertheless, in my opinion it is still often the case that even in that space we are often making "tradeoffs" without checking that we're on the Pareto frontier in the first place.



Agreed with what you said, when you're only considering security and usability you're often not at a Pareto optimal state, but once you add cost into the picture you see a lot more cases of being on the Pareto optimal boundary, or at least in case where the next improvement only comes with significant effort (by re-platforming, for example).


I guess that makes sense. as you get to higher dimensions, most points sit very close to the surface. So if we're trading off N things and N >> 1, expect to basically always be at the pareto boundary.


On the other hand, we should recognize that, to put it plainly, not all dimensions on the frontier have the same level of importance.

Any technological and societal progress is going to have negative consequences. To give just one example, completely curing cancer will put many doctors (and other healthcare professionals who aren't paid as well as doctors are) out of a job. It will definitely cause at least a few children to go hungry. It will probably cause a few suicides when some oncologists start to "feel useless." This does not mean we shouldn't cure cancer if the opportunity arises.

Our society, driven by clickbait, rage and social media hot takes, tends to overweight the dimensions at which new technology makes things worse. There are many news stories about social-media-fueled teen suicides or AI datacenter water use, very few about how talking to family abroad no longer requires astronomical long-distance bills.


The article does talk about putting weights on the dimensions to account for different dimensions having different importance.


For one we need to start talking about taking off the weights from security dimension, because it's becoming ridiculously overemphasized for things where it frankly doesn't matter much for. All at the cost of "usability", which is a fancy word for saying people's time and effort, which is literally the only truly non-renewable, priceless resource we have.


My experience has been that security is mostly treated as some contractual obligation that has little benefit and just costs money so the minimum amount of effort that prevents charges of gross negligence is put in. But I’m glad to hear that apparently there are places that take it more seriously.


Passkeys, 2FA being deployed the more intensely the more trivial and non-critical for users a site is, mobile platforms getting absurdly locked down, naive takes on "lethal trifecta" sucking out whatever little air in AI discussions that was left by IP apologists". In the real world, everyone in this industry seems to be showing off pointing out potential vulnerabilities and security considerations in any new idea or concept that appears - as if that were something to be proud of, instead of a solemn duty that more than likely will just prevent a nice thing from existing in the first place.

From where I stand, the industry is obsessed with security, way past the point of rational thought.


Yes, I don't mean to imply that this is some sort of clear majority situation or anything. I just mean that I've definitely both seen on HN and participated in real life in some conversations in which it was taken as given that we must give up one thing to get another when nobody had in fact established that we were on the Pareto frontier. Or, considered from a local point of view, whether the tradeoff really was inevitable. I have had cases where we could have had both, with no difficulty.


I’m very high dimensional spaces as they occur in real life projects with difficult to measure dimensions (eg how much does implementing something cost and how much does not implementing something cost) it seems very difficult to determine where you are in your space. Most companies run their product mostly on feels because anything else would quickly lead to analysis paralysis.


Yes, the difference between coding (writing software) and engineering (making informed trade offs about system design) is effectively bound up in analyses like those supported by concepts like pareto efficiency.

One should keep in mind though that not all problems have a neat solution. Many spaces have multiple efficient points that still need to be chosen from, and many pareto optimization problems actually become NP hard computationally when the problem is large enough.


Say someone wanted to transition from coding to engineering. What path would you have them take? What should they learn?


I would say start with software architecture books for large or highly distributed systems. This will get you thinking beyond code level to system component level with subject matter that's familiar.

From there I would round things out with general systems theory books and even dabble in some non-software engineering texts just to get a sense of how people reason about designing systems and evaluating trade-offs. That's just my two cents on it.


"making tradeoffs" is an excuse for management to cut corners to get their feature faster at the cost of future developer pain and suffering

you know how japanese oni would roll human souls into soba noodles? [1]

that's what modern corporate software company management does :)

[1] i learned about this from the very funny gintama funeral episode


developer pain inversely proportional to the amount of tech debt that exists!


there's something equivalent in the business world - mostly used by businesses not run by psychopaths - where you optimize inside 2 triangles with the points on the triangle being cost, profit, & user utility/happiness.


Are they conjoined triangles?


hope u see this :)

https://imgur.com/a/wy2fLEw


this is a silly oversimplification




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: