5 ms·
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 mo
by jerf 2mo 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.
- voidhorse 2mo agoYes, 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.
- ksclk 2mo agoSay someone wanted to transition from coding to engineering. What path would you have them take? What should they learn?
- voidhorse 2mo agoI 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.
- dzonga 2mo agothere'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.
- munchbunny 2mo agoAgreed 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).
- jerf 2mo agoYes, 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.
- adrianN 2mo agoI’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.
- efavdb 2mo agoI 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.
- miki123211 2mo agoOn 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.
- _davide_ 2mo agothis is a silly oversimplification
- whateveracct 2mo ago"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
- circusss 2mo agodeveloper pain inversely proportional to the amount of tech debt that exists!
- genshro 2mo ago[dead]