TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

The Law of Conservation of Complexity

102 pointsby angrygoatover 5 years ago

12 comments

cestithover 5 years ago
Having non-modal interfaces seems simpler for the user in a simple application, sure. But when I consider all the power in the classic example of vi&#x2F;vim command mode I&#x27;m unconvinced.<p>If you want that flexibility and power, the options must live somewhere. Dividing that into two mutually exclusive modes breaks up the complexity of the main interface. I need to know a handful of key combinations like ESC, i, r, h, j, k, l (or arrow keys on modern systems), :, w, q, s, d, g, G, v, V, &#x2F;, ?, !, % to get a vast majority of daily tasks done. How many nested drop-down menus would I need to navigate or multi-modifier hotkeys must I remember to do the same thing just so I don&#x27;t have to remember one bit (which mode I&#x27;m in) before hitting a key?<p>The human mind is actually very comfortable with modes. Work, home, visiting family, visiting friends. Cooking at home vs dining out vs ordering in vs baking vs grilling vs cooking a holiday feast vs catering in vs party snacks and drinks vs road trip snacks. Driving vs taxi vs riding a bike vs walking. Retail vs garage sales vs in-person auctions vs online auctions vs online fixed-price shopping. Lending libraries vs bookstores vs reading rooms vs newsstands vs books we own vs ebooks. Math vs prose vs poetry vs visual communication vs music. We pay attention to different things and follow different sets of rules in different circumstances all the time. Is it easier to remember all the rules for all scenarios at once or to switch contexts?
评论 #22378374 未加载
评论 #22376735 未加载
评论 #22377264 未加载
zmmmmmover 5 years ago
Seems to overlook the concept of essential vs incidental complexity. Most processes I have seen in practice have huge amounts of incidental complexity.<p>I prefer to think about it from a different point of view: processes always grow in complexity until reasonably intelligent people can&#x27;t understand them any more. It takes incredible discipline for anything to be maintained in a &quot;simple&quot; state below that threshold because reasonable people will all agree that adding some more complexity at that point has a low cost compared to the value generated. For this reason, most things in the world sit at that threshold of complexity where they are just comprehensible but still annoying complex when you first encounter them.
评论 #22382364 未加载
jerfover 5 years ago
Complexity is not conserved. It is a bound. A solution can not be <i>simpler</i> than the problem, when both are viewed holistically and complexity is properly understood. (Yeah, I&#x27;m handwaving, but at least I acknowledge it. I don&#x27;t want to write twelve paragraphs defining &quot;complexity&quot; right now, because my <i>real</i> point is....)<p>But the solution sure can be <i>more complicated</i> than the problem.
评论 #22377429 未加载
评论 #22376949 未加载
评论 #22377640 未加载
评论 #22377639 未加载
评论 #22381099 未加载
评论 #22377978 未加载
thinkingkongover 5 years ago
I think there is another kind of conservation that occurs in our desire for complexity. Something about human natures forces lots of people to feel uncomfortable with giving up control, so we strive to exercise it in other places. Successful platforms, whether they be convenience systems like Netflix or Amazon, or software paradigms have always traded some new interface for unstated (and probably unknown) complexity elsewhere. I think the most apt example these days is probably Docker &amp; K8s and the deluge of systems and tools required to make that all work well in a team setting.<p>There are other good adages that are worth reading about such as &quot;Ashby&#x27;s Law of Requisite Variety&quot;[1], and the &quot;Complexity Paradox&quot;[2] which I think can apply generally here, if you synthesize the themes out.<p>[1] <a href="https:&#x2F;&#x2F;www.edge.org&#x2F;response-detail&#x2F;27150" rel="nofollow">https:&#x2F;&#x2F;www.edge.org&#x2F;response-detail&#x2F;27150</a><p>[2] <a href="https:&#x2F;&#x2F;www.asktog.com&#x2F;columns&#x2F;011complexity.html" rel="nofollow">https:&#x2F;&#x2F;www.asktog.com&#x2F;columns&#x2F;011complexity.html</a>
评论 #22377368 未加载
mslaover 5 years ago
A good tonic for everyone who wants to simplify the solution by cutting bits off the problem, making a solution which is simple, easy-to-understand, and incomplete. If your program stops doing something, some other program has to do it, and that complexity must be considered as well.
gitgudover 5 years ago
<i>“Every application has an inherent amount of irreducible complexity. The only question is: Who will have to deal with it—the user, the application developer, or the platform developer?”</i><p>The JavaScript ecosystem is a good&#x2F;bad example of this. Seemingly simple applications are pushing complexity to thousands of simple npm libraries.<p>The applications become simpler but the linking and composition of 3rd party libraries gets out of control.<p>At the core of it; abstractions reduce complexity, but only to a point...
jxyover 5 years ago
For people who don&#x27;t know it, please look up &quot;Kolmogorov complexity&quot;.
carapaceover 5 years ago
It seems to me that the <i>irreducible</i> complexity of a task is just what the user <i>has</i> to deal with to do it. If the application or platform <i>could</i> deal with that complexity for the user then it was reducible by definition.
sergiusover 5 years ago
No mentioning of the classic from the 70&#x27;s: Systemantics :-)<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Systemantics" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Systemantics</a>
crimsonalucardover 5 years ago
First define complexity formally before attaching the word &quot;Law&quot; to a fuzzy concept.<p>A more accurate way to frame this is, complexity tends to be conserved. There is no proof or scientific evidence that states that this is a law.
gumbyover 5 years ago
Understanding this is the essence of abstraction.
lincpaover 5 years ago
Simplicity is the ultimate sophistication.-- leonardo da vinci<p>The idea of simplicity and unity is an important guiding ideology of scientific research. It can be found from the knowledge of various disciplines: the more universally applicable a unified theory, the simpler it is, and the more basic it is, the greater it is.<p>[The Pure Function Pipeline Data Flow v3.0 with Warehouse &#x2F; Workshop Model ](<a href="https:&#x2F;&#x2F;github.com&#x2F;linpengcheng&#x2F;PurefunctionPipelineDataflow" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;linpengcheng&#x2F;PurefunctionPipelineDataflow</a>), based on the philosophy of Taoism and the Great Unification Theory, In the computer field, for the first time, it was realized that the unification of hardware engineering and software engineering on the logical model. It has been extended from Lisp language-level code and data unification to system engineering-level software and hardware unification. Whether it is the appearance of the code or the runtime mechanism, it is highly consistent with the integrated circuit system. It has also been widely unified with other disciplines (such as management, large industrial assembly lines, water conservancy projects, power engineering, etc.). It&#x27;s also very simple and clear, and the support for concurrency, parallelism, and distribution is simple and natural.<p>There are only five basic components:<p>1. Pipeline (pure function)<p>2. Branch<p>3. Reflow (feedback, whirlpool, recursion)<p>4. Shunt (concurrent, parallel)<p>5. Confluence.<p>The whole system consists of five basic components. It perfectly achieves unity and simplicity. It must be the ultimate programming methodology.<p>In addition, the IT industry is still a very young and immature discipline. The current software engineering is still at the level of manual workshops. Pure function pipeline data flow brings large industrial production theory and methods to software engineering. It incorporates IT industry into modern large industrial production systems, This is an epoch-making innovative theory and method.<p>The modern society is an information society, IT controls everything, penetrates everything. In my opinion, the development of IT is exactly the same as the development of modern large-scale industrial production systems. With the development of the IT industry, With the development of the IT industry, data standard systems will be widely established, improved and interconnected at the international, national, industrial and enterprise levels, It will be precisely standardized to every smallest part. pure function pipeline data flow will become the basic theory and Methods have become increasingly important, and have become the ultimate standard method for entering textbooks and industry.<p>The key to the industrialization of the IT industry is to establish a complete standard system like the traditional industry. software is the pipeline for producing products (data), which is no different from traditional industrial production lines. Therefore, the software production method will adopt enterprise management ideas, develop software into something similar to a traditional industrial assembly line, input standardized raw materials (data), output standardized products (data), and store them in a warehouse (database).<p>From the perspective of large industrial production theory, standardizing the input raw materials (data) and output products (data) has the following advantages:<p>- Fairness<p>- Neutrality<p>- Fungibility<p>- Standard, Data standards (data interfaces, data specifications) are better than code interfaces.<p>- Interconnectedness<p>- Combination, Data combination is better than code (function) combination.<p>- Simplicity<p>- Predictability, because the system architecture and set-up methods are simple and uniform, very clear, so its evolution and direction of development are predictable.<p>- Reliability<p>- Unity<p>- Easy to expand<p>- Easy to parallel, Can linearly scale up production (performance).<p>- Observable, easy to debug, and verifiable.<p>- Clarity, non-IT practitioners can understand.<p>It can refer to the theory of integrated circuits, business management and other disciplines. The role of the standard system can be seen from the great progress of social productivity after the traditional industry has entered the era of large industrial production from the era of manual workshops.<p>This method has been applied to 100,000 lines of code-level pure clojure project, which can prove the practicability of this method.
评论 #22381367 未加载