Comment by jerf
8 hours ago
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.
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.
"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
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.
this is a silly oversimplification
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