12 ms·
Nobody knows how the whole system works
- _kuno 8mo ago"Civilization advances by extending the number of important operations which we can perform without thinking about them." - Alfred North Whitehead
- youarentrightjr 8mo ago> Nobody knows how the whole system works True. But in all systems up to now, for each part of the system, somebody knew how it worked. That paradigm is slowly eroding. Maybe that's ok, maybe not, hard to say.
- redrove 8mo ago> But in all systems up to now, for each part of the system, somebody knew how it worked. If the project is legacy or the people just left the company that’s just not true.
- youarentrightjr 8mo ago> If the project is legacy or the people just left the company that’s just not true. Yeah, that's why I said "knew" instead of "knows".
- 1718627440 8mo agoWhich is why such code is routinely thrown away and rewritten from scratch or just not really touched at all.
- mamp 8mo agoStrange article. The problem isn’t that everyone doesn’t know how everything works, it’s that AI coding could mean there is no one who knows how a system works.
- Animats 8mo agoIncluding the AI, which generated it once and forgot. This is going to be a big problem. How do people using Claude-like code generation systems do this? What artifacts other than the generated code are left behind for reuse when modifications are needed? Comments in the code? The entire history of the inputs and outputs to the LLM? Is there any record of the design?
- skeptic_ai 8mo agoI for one I save all conversations in the codebase. Includes both human prompts and outputs. But I’m using a modified codex to do so. Not sure why it’s not default as it’s useful to have this info.
- joquarky 8mo agoIt is probably not a default because it will use more tokens.
- skeptic_ai 8mo agoWhy would it use more? I just have a hook that changes path of codex. So I can just write their files in my repo instead of in user folder
- maxbond 8mo agoI have experimented with telling Claude Code to keep a historical record of the work it is performing. It did work (though I didn't assess the accuracy of the record) but I decided it was a waste of tokens and now direct it to analyze the history in ~/.claude when necessary. The real problem I was solving was making sure it didn't leave work unfinished between autocompacts (eg crucial parts of the work weren't performed and instead there are only TODO comments). But I ended up solving that with better instructions about how to break down the plan into bite-sized units that are more friendly to the todo list tool. I have prompting in AGENTS.md that instructs the agent to update the relevant parts of the project documentation for a given change. The project has a spec, and as features get added or reworked the spec gets updated. If you commit after each session then the git history of the spec captures how the design evolves. I do read the spec, and the errors I've seen so far are pretty minor.
- virgilp 8mo agoThat's not how things work in practice. I think the concern is not that "people don't know how everything works" - people never needed to know how to "make their own food" by understanding all the cellular mechanisms and all the intricacies of the chemistry & physics involved in cooking. BUT, when you stop understanding the basics - when you no longer know how to fry an egg because you just get it already prepared from the shop/ from delivery - that's a whole different level of ignorance, that's much more dangerous. Yes, it may be fine & completely non-concerning if agricultural corporations produce your wheat and your meat; but if the corporation starts producing standardized cooked food for everyone, is it really the same - is it a good evolution, or not? That's the debate here.
- ahnick 8mo agoMost people have no idea how to hunt, make a fire, or grow food. If all grocery stores and restaurants run out of food for a long enough time people will starve. This isn't a problem in practice though, because there are so many grocery stores and restaurants and supply chains source from multiple areas that the redundant and decentralized nature makes it not a problem. Thus it is the same with making your own food. Eventually if you have enough robots or food replicators around knowing how to make food becomes irrelevant, because you always will be able to find one even if yours is broken. (Note: we are not there yet)
- sciencejerk 8mo ago>If all grocery stores and restaurants run out of food for a long enough time people will starve. This isn't a problem in practice though... I fail to see how this isn't a problem? Grid failures happen? So do wars and natural disasters which can cause grids and supply chains to fail.
- ahnick 8mo agoThat is short hand. The problem exists of course, but it is improbable that it will actually occur in our lifetimes. An asteroid could slam into the earth or a gamma ray burst could sanitize the planet of all life. We could also experience nuclear war. These are problems that exist, yet we all just blissfully go on about our lives, b/c there is basically nothing that can be done to stop these things if they do happen and they likely won't. Basically we should only worry about these problems in so much as we as a species are able to actually do something about them.
- whytaka 8mo agoBut people are expected to understand the part of the system they are responsible for at the level of abstraction they are being paid to operate. This new arrangement would be perfectly fine if they aren't responsible when/if it breaks.
- jstummbillig 8mo agoI don't think there is anything new here and the metaphor holds up perfectly. There have always been bugs we don't understand in compilers or libraries or implementations beyond that, that make the path we chose unavailable to us at a certain level. The responsibility is to create a working solution, sure, but there is nothing that would prevent us from getting there by typing "Hey LLM, this is not working, let's try a different approach", even though it might not feel great.
- bjt 8mo agoThe claimed connections here fall apart for me pretty quickly. CPU instructions, caches, memory access, etc. are debated, tested, hardened, and documented to a degree that's orders of magnitude greater than the LLM-generated code we're deploying these days. Those fundamental computing abstractions aren't nearly as leaky or nearly as in need of refactoring tomorrow.
- PandaStyle 8mo agoPerhaps a dose of pragmatism is needed here? I am no CS major, nor do I fully understand the inner workings of a computer beyond "we tricked a rock into thinking by shocking it." I'd love to better understand it, and I hope that through my journey of working with computers, i'll better learn about these underlying concepts registers, bus's, memory, assembly etc Practically however, I write scripts that solve real world problems, be that from automating the coffee machine, to managing infrastructure at scale. I'm not waiting to pick up a book on x86 assembly first before I write some python however. (I wish it were that easy.) To the greybeards that do have a grasp of these concepts though? It's your responsibility to share that wealth of knowledge. It's a bitter ask, I know. I'll hold up my end of the bargain by doing the same when I get to your position and everywhere in between.
- s5300 8mo ago[dead]
- supriyo-biswas 8mo agoThere are so many resources, for example, https://cpu.land https://cpu.land.
- finnthehuman 8mo agoGraybeards love to yap. Just talk to them or consume the wide amount of material already out there. It takes curiosity on your part though. Handwaving about practical concerns taking priority is a path to never getting around to it. "Pragmatism" towards skills is how managers wind up with an overspecialized team and then tell themselves it was inevitable. The same can happen to you.
- sgarland 8mo agoNearly every time I attempt to tell people how much understanding fundamentals matters, it’s dismissed as being unnecessary knowledge. I can’t make anyone want to know how things work, and it’s getting tiring being continuously told “no” when I ask.
- 8mo ago
- tjchear 8mo agoI take a fairly optimistic view to the adoption of AI assistants in our line of work. We begin to work and reason at a higher level and let the agents worry about the lower level details. Know where else this happens? Any human organization that existed, exists, and will exist. Hierarchies form because no one person can do everything and hold all the details in their mind, especially as the complexity of what they intend to accomplish goes up. One can continue to perfect and exercise their craft the old school way, and that’s totally fine, but don’t count on that to put food on the table. Some genius probably can, but I certainly am not one.
- mhog_hn 8mo agoBut what if the AI agent has a 5% chance of adding a bug to that feature? Surely before any feature was completely bug free
- tjchear 8mo agoYeah it’s all trade offs. If it means I get to where I want to be faster, even if it’s imperfect, so be it. Humans aren’t without flaws; prior to coding assistants, I’ve lost count of the times my PM telling me to rush things at the expense of engineering rigor. We validate or falsify the need for a feature sooner and move on to other things. Sometimes it works sometimes a bug blows up in our faces, but things still chug along. This point will become increasingly moot as AI gets better at generating good code, and faster, too.
- bethekidyouwant 8mo agoWhat is the chance that you add a bug?
- mrkeen 8mo agoAdam Jacob It’s not slop. It’s not forgetting first principles. It’s a shift in how the craft work, and it’s already happened. This post just doubled down without presenting any kind of argument. Bruce Perens Do not underestimate the degree to which mostly-competent programmers are unaware of what goes on inside the compiler and the hardware. Now take the median dev, compress his lack of knowledge into a lossy model, and rent that out as everyone's new source of truth.
- conorcleary 8mo ago"I don't need to know about hardware, I'm writing software." "I don't need to know about software engineering, I'm writing code." "I don't need to know how to design tests, ____ vibe-coded it for me."
- psychoslave 8mo agoTo be fair, I don't know how a living human individual work, let alone how they actually work in society. I suspect I'm not alone in this case. So nothing new under the sun, often the practices come first, then only can some theory emerge, from which point it can be leverage on to go further than present practice and so on. Sometime practice and theory are more entengled in how they are created on the go, obviously.
- mhog_hn 8mo agoIt is the same with the global financial system
- conorcleary 8mo agoMerger Monday in five, four, three...
- bsder 8mo agoSure, we have complex systems that we don't know how everything works (car, computer, cellphone, etc.) . However, we do expect that those systems behave deterministically in their interface to us. And when they don't, we consider them broken. For example, why is the HP-12C still the dominant business calculator? Because using other calculators for certain financial calculations were non-deterministically wrong. The HP-12C may not have even been strictly "correct", but it was deterministic in the ways in wasn't. Financial people didn't know or care about guard digits or numerical instability. They very much did care that their financial calculations were consistent and predictable. The question is: Who will build the HP-12C of AI?
- tosti 8mo agoNot just tech. Does anyone on the planet actually know all of the subtleties and idiosyncrasies of the entire tax code? Perhaps the one inhabitant of Sealand and the Sentinelese but no-one in any western society.
- anon291 8mo agoI don't like this thing where we dislike 'magic' The issue with frameworks is not the magic. We feel like it's magic because the interfaces are not stable. If the interfaces were stable we'd consider them just a real component of building whatever You don't need to know anything about hardware to properly use a CPU isa. The difference is the cpu isa is documented, well tested and stable. We can build systems that offer stability and are formally verified as an industry. We just choose not to.
- shevy-java 8mo agoAdam Jacob's quote is this: "It's not slop. It's not forgetting first principles. It's a shift in how the craft work, and it's already happened." It actually really is slop. He may wish to ignore it but that does not change anything. AI comes with slop - that is undeniable. You only need to look at the content generated via AI. He may wish to focus merely on "AI for use in software engineering", but even there he is wrong, since AI makes mistakes too and not everything it creates is great. People often have no clue how that AI reaches any decision, so they also lose being able to reason about the code or code changes. I think people have a hard time trying to sell AI as "only good things, the craft will become better". It seems everyone is on the AI hype train - eventually it'll either crash or slow down massively.
- dizhn 8mo agoLet me make it worse. Much worse. :) https://youtu.be/36myc8wQhLo https://youtu.be/36myc8wQhLo (USENIX ATC '21/OSDI '21 Joint Keynote Address-It's Time for Operating Systems to Rediscover Hardware)
- fedeb95 8mo agowhy does the author imply not knowing everything is a bad thing? If you have clear protocol and interfaces, not knowing everything enables you to make bigger innovations. If everything is a complex mess, then no.
- bsza 8mo agoNot knowing everything never "enables" you to do anything. Knowing how something works is always better than not knowing, assuming you want to use it or make changes to it.
- fedeb95 8mo agoknowing how it works, meaning what it does, doesn't always imply knowing its inner details. Its the basis of abstraction.
- bsza 8mo agoAbstraction isn't ignorance, it's the very conscious choice not to depend on implementation details. Being ignorant to those details doesn't give you any superpowers, abstraction itself does. It doesn't work because you don't know everything, it works despite that. Not knowing everything is still a bad thing, we just find ways to make it less bad.
- sciencejerk 8mo agoWe keep delegating knowledge of the natural, physical world for temporary, rapidly-changing knowledge of abstractions and software tools, which we do not control (now LLM cloud tools). The lack of comprehensive, practical, multi-disciplinary knowledge creates a DEEP DEPENDENCY on the few multinational companies and countries that UNDERSTAND things and can BUILD things. If you don't understand it, if you can't build it, they OWN you.
- amelius 8mo agoWikipedia knows how it all works, and that's good enough in case we need to reboot civilization.
- mojuba 8mo ago> AI will make this situation worse. Being an AI skeptic more than not, I don't think the article's conclusion is true. What LLM's can potentially do for us is exactly the opposite: because they are trained on pretty much everything there is, if you ask the AI how the telephone works, or what happens when you enter a URL in the browser, they can actually answer and break it down for you nicely (and that would be a dissertation-sized text). Accuracy and hallucinations aside, it's already better than a human who has no clue about how the telephone works or where to even begin if the said human wanted to understand it. Human brains have a pretty serious gap in the "I don't know what I don't know" area, whereas language models have such a vast scope of knowledge that makes them somewhat superior, albeit at a price of, well, being literally quite expensive and power hungry. But that's technical details. LLMs are knowledge machines that are good at precisely that: knowing everything about everything on all levels as long as it is described in human language somewhere on the Internet. LLMs consolidate our knowledge in ways that were impossible before. They are pretty bad at reasoning or e.g. generating code, but where they excel so far is answering arbitrary questions about pretty much anything.
- wrs 8mo agoVery important distinction here you’re missing: they don’t know things, they generate plausible things. The better the training, the more those are similar, but they never converge to identity. It’s like if you asked me to explain the S3 API, and I’m not allowed to say “I don’t know”, I’m going to get pretty close, but you won’t know what I got wrong until you read the docs. The ability for LLMs to search out the real docs on something and digest them is the fix for this, but don’t start thinking you (and the LLM) don’t need the real docs anymore. That said, it’s always been a human engineer superpower to know just enough about everything to know what you need to look up, and LLMs are already pretty darn good at that, which I think is your real point.
- usgroup 8mo ago[dead]
- kartoshechka 8mo agoengineers pay for abstractions with more powerful hardware, but can optimize at their will (hopefully). will ai be able to afford more human hours to churn through piles of unfamiliar code?
- cess11 8mo agoYeah, it's not a problem that a particular person does not know it all, but if no one knows any of it except as a black box kind of thing, that is a rather large risk unless the system is a toy. Edit: In a sense "AI" software development is postmodern, it is a move away from reasoned software development in which known axioms and rules are applied, to software being arbitrary and 'given'. The future 'code ninja' might be a deconstructionist, a spectre of Derrida.
- zhisme 8mo agowhat a well written article. That's actually a problem. Time will come and hit the same way it has done to aqueduct, like lost technology that no one knows how they have worked in details. Maybe it is just how engineering evolution works?
- camgunz 8mo agoGet enough people in the room and they can describe "the system". Everything OP lists (QAM, QPSK, WPA whatever) can be read about and learned. Literally no one understands generative models, and there isn't a way for us to learn about their workings. These things are entirely new beasts.
- gmuslera 8mo agoIt is not about having infinite width and depth of knowledge. Is about abstracting at the right level for the components are relevant enough and can assume correctness outside the focus of what you are solving. Systems include people, that make their own decisions that affect how they work and we don’t go down to biology and chemistry to understand how they make choices. But that doesn’t mean that people decisions should be fully ignored in our analysis, just that there is a right abstraction level for that. And sometimes a side or abstracted component deserves to be seen or understood with more detail because some of the sub components or its fine behavior makes a difference for what we are solving. Can we do that?
- esafak 8mo agoIt's called specialization. Not knowing everything is how we got this far.
- bluGill 8mo agoI can't know everything. I have to trust someone else knows some parts and got it right so I can rely on them. sometimes that trust is proven wrong. I have had to understand my compiler output to prove there was a bug in the optimizer (once I understood the bug I was able to find it was already fixed in a release I hadn't updated to yet). Despite that compilers have earned my trust: It is months of debugging before I think maybe the compiler is wrong. I am not convinced that AI writes code I can trust - too often I have caught it doing things that are wrong (recently I told it to write some code using TDD - and it put the business logic it was testing in the mock - the tests passed, but manual testing showed the production code didn't have that logic and so didn't work). Until AI code proves it is worth trusting I'm not going to trust it and so I will spend the time needed to understand the code it writes - at great cost to my ability to quickly write code.
- cbdevidal 8mo agoThis also applies to other things. No one person knows how to make a pencil. Three minute video by Milton Friedman: https://youtu.be/67tHtpac5ws?si=nFOLok7o87b8UXxY https://youtu.be/67tHtpac5ws?si=nFOLok7o87b8UXxY
- j_m_b 8mo agoAlso, no one knows how to make a Pizza! (great book for kids)
- pixl97 8mo ago"To make an apple pie you must first create the universe "
- AnimalMuppet 8mo ago"How to Make an Apple Pie and See The World" (https://www.amazon.com/Make-Apple-World-Dragonfly-Books/dp/0679880836 https://www.amazon.com/Make-Apple-World-Dragonfly-Books/dp/0...). Great kids book.
- Bender 8mo agoObligatory Sagan [1] [1] - https://www.youtube.com/watch?v=BkHCO8f2TWs https://www.youtube.com/watch?v=BkHCO8f2TWs
- germinalphrase 8mo agoSomewhat off topic for the thread, but I would love more kids book recommendations for expanding their mental model of the world if we can keep them coming…
- alphazard 8mo agoThe series this is from (Free to Choose) is a great introduction to economics for people of any age. I highly recommend it. This particular example can be misinterpreted though. It's true that no single person knows how to make that exact pencil that he is holding. But it's not true that no single individual exists who can make a pencil by themselves. If the criteria is just that it works as a pencil, then many people could make or find something that fills that criteria. This is an important distinction because there are things like microprocessors, which no single person knows how to make. But also: no single person could alone build something that has anywhere near the same capability. It's conceivable that a civilization could forget how to do something like that because it requires so many people with non-overlapping knowledge to create anything close. We aren't going to forget how to make pencils because it is such a simple problem, that many individuals are capable of figuring out workable solutions alone.
- foxes 8mo agoIsn't ceding all power to AIs run by tech companies kinda the opposite - if we have to have AI everywhere? Now no one knows how anything works (instead of everyone knowing a tiny bit and all working together), and also everyone is just dependent on the people with all the compute.
- rorylaitila 8mo agoThere are many layers to this. But there is one style of programming that concerns me. Where you neither understand the layer above you (why the product exists and what the goal of the system is) nor the layer below (how to actually implement the behavior). In the past, many developers barely understood the business case, but at least they understood how to translate into code, and could put backpressure on the business. Now however, it's apparently not even necessary to know how the code works! The argument seems to be, we should float on a thin lubricant of "that's someone else's concern" (either the AI or the PMs) gliding blissfully from one ticket to another. Neither grasping our goal nor our outcome. If the tests are green and the buttons submit, mission accomplished! Using Claude I can feel my situational awareness slipping from my grasp. It's increasingly clear that this style of development pushes you to stop looking at any of the code at all. My English instructions do not leave any residual growth. I learn nothing to send back up the chain, and I know nothing of what's below. Why should I exist?
- raw_anon_1111 8mo agoThe average tenure of a developer for the longest was 2.5 years not to mention the developer changing teams, even before AI many developers didn’t know how the code they were brought in to maintain works. > My English instructions do not leave any residual growth. I learn nothing to send back up the chain, and I know nothing of what's below. Why should I exist? When you use Claude code, tell it to keep a markdown file updated with the what and the why. Instead of just “Do $y”, “Because of $x I need to do $y”. If it is updated in the markdown file, it will be recorded and sometime the agent will come up with code and mske changes that are correct. But use cases you didn’t think about. You can then even ask it “why did it do $x” that you weren’t expecting but oh yeah, it was right. > Why should I exist? That’s the wrong question, the correct question is “why is my employer paying me?”. Your employer is paying you to turn well defined requirements into working code to either make them money or to save them money if (the royal) you are a mid level ticket taker. If someone is working at that level, that’s what they are regardless of title. No one cares if either you or the LLM decided to use a for loop or a while loop. At higher levels you are responsible for taking your $n number of years of experience to turn more ambiguous, more impactful, larger scoped projects into working implementations that are done on time, on budget and meets requirements. Before LLMs, that meant a combination of my own coding, putting a team together and delegating and telling my director/CTO that this isn’t something we should be doing in house (ie a Salesforce or Workday integration) at all. Now add to the mix between all those resources - a coding agent. In either case, I as anything above ticket taker, probably haven’t looked at a line of code first. I test for does it meet the functional and non functional requirements and then mostly look at the hot spots - concurrency issues, security issue, and are there any scalability issues that are obvious before I hammer it with real world like traffic - web request or transactions for an ETL job. And before the pearl clutching starts, I started programming as a hobby in the 80s in assembly and spent the first decade and a half of my career doing C bit twiddling on multiple mainframes, PCs, and later Windows CE devices.
- anthk 8mo ago9front's manuals will teach you the basics, the actual basics of CS (plan9 intro if you know to adapt yourself, too). These are at /sys/doc. Begin with rc(1), keep upping the levels. You can try 9front in a virtual machine safely. There are instructions to get, download and set it up at https://9front.org https://9front.org . Write servers/clients with rc(1) and the tools at /bin/aux, such as aux/listen. They already are irc clients and some other tools. Then, do 9front's C book from Nemo. On floats, try them at 'low level', with Forth. Get Muxleq https://github.com/howerj/mux https://github.com/howerj/mux. Compile it: cc -O2 -ffast-math -o muxleq muxleq.c Edit muxleq.fth, set the constants in the file like this: 1 constant opt.multi ( Add in large "pause" primitive ) 1 constant opt.editor ( Add in Text Editor ) 1 constant opt.info ( Add info printing function ) 0 constant opt.generate-c ( Generate C code ) 1 constant opt.better-see ( Replace 'see' with better version ) 1 constant opt.control ( Add in more control structures ) 0 constant opt.allocate ( Add in "allocate"/"free" ) 1 constant opt.float ( Add in floating point code ) 0 constant opt.glossary ( Add in "glossary" word ) 1 constant opt.optimize ( Enable extra optimization ) 1 constant opt.divmod ( Use "opDivMod" primitive ) 0 constant opt.self ( self-interpreter [NOT WORKING] ) Recompile your image: ./muxleq muxleq.dec < muxleq.fth > new.dec New.dec will be your main Forth. Run it: ./muxleq new.dec Get the book from the author, look at the code on how the Floating code it's implemented in software. Learn Forth with the Starting Forth book but for ANS forth, and Thinking Forth after doing Starting Forth. Finally, bacl to 9front, there's the 'cpsbook.pdf' too from Hoare on concurrent programming and threads. That will be incredibily useful in a near future. If you are a Go programmer, well, you are at home with CSP. Also, compare CSP to the concurrent Forth switching tasks. It's great to compare/debug code in a tiny Forth on Subleq/Muxleq because if your code gets relatively fast, it will fly under GForth and due to constraints you will force yourself to be a much better programmer. CPU's? Cache's? RAM latency? Muxleq/Subleq behaves nearly the same everywhere depending on your simulation speed. In order to learn, it's there. On real world systems, glibc, the Go runtime, etc, will take care of that making a similar outcome everyhere. If not, most of the people out there will be aware of stuff from SSE2 and up to NEON under ARM. Hint: they already are code transpilers from Intel dedicated instructions to ARM ones and viceversa. >How garbage collection works inside of the JVM? No, but I can figure it a little given the Zenlisp one as a slight approximation. Or... you know, Forth, by hand. And Go which seems easiers and it doesn't need a dog slow VM trying to replicate what Inferno did in the 90's which far less resources.
- landpt 8mo agoThe pre-2023 abstractions that power the Internet and have made many people rich are the sweet spot. You have to understand some of the system, and saying that if no one understands the whole system anyway we can give up all understanding is a fallacy. Even for a programming language that is criticized for a permissive spec like C you can write a formally verified compiler, CompCert. Good luck doing that for your agentic workflow with natural language input. Citing a few manic posts from influencers does not change that.
- analog31 8mo agoGranted I'm not a software developer, so the things I work on tend to be simpler. But the people I know who are recognized for "knowing how the whole thing works" are likely to have earned that distinction, not necessarily by actually knowing how it works but: 1. The ability and interest to investigate things and find out how they work, when needed or desired. They are interested in how things work. They are probably competent in things that are "glue" in their disciplines, such as math and physics in my case. 2. The ability to improvise an answer when needed, by interpolating across gaps in knowledge, well enough to get past whatever problem is being solved. And to decide when something doesn't need to be understood.
- 9rx 8mo ago> Granted I'm not a software developer, so the things I work on tend to be simpler. Intriguing statement. I've worked in a number of disciplines over the years and software, by far, presents the simplest things of all.
- wtetzner 8mo agoI think a lot of people have a fear of AI coding because they're worried that we will move from a world where nobody understands how the whole system works, to a world where nobody knows how any of it works.
- rglover 8mo agoA valid concern.
- cgh 8mo agoThis comment on the article sums it up for me, at least in part: “Nobody knows how the whole system works, but at least everybody should know the part of the system they are contributing to. Being an engineer I am used to be expert of the very layer of the stack I work on, knowing something of the adjacent layers, mostly ignoring how the rest work. Now that LLMs write my very code, what is the part that I’m supposed to master? I think the table is still shifting and everybody is failing to grasp where it will stabilize. Analogies with past shifts aren’t helping either.‘
- joquarky 8mo agoRe-enchantment
- matheus-rr 8mo agoThe dependency tree is where this bites hardest in practice. A typical Node.js project pulls in 800+ transitive dependencies, each with their own release cadence and breaking change policies. Nobody on your team understands how most of them work internally, and that's fine - until one of them ships a breaking change, deprecates an API, or hits end-of-life. The anon291 comment about interface stability is exactly right. The reason you don't need to understand CPU microarchitecture is that x86 instructions from 1990 still work. Your React component library from 2023 might not survive the next major version. The "nobody knows how the whole system works" problem is manageable when the interfaces are stable and well-documented. It becomes genuinely dangerous when the interfaces themselves are churning. What I've noticed is that teams don't even track which of their dependencies are approaching EOL or have known vulnerabilities at the version they're pinned to. The knowledge gap isn't just "how does this work" - it's "is this thing I depend on still actively maintained, and what changed in the last 3 releases that I skipped?" That's the operational version of this problem that bites people every week.
- pixl97 8mo ago>What I've noticed is that teams don't even track which of their dependencies are approaching EOL or have known vulnerabilities at the version they're pinned to I mean hopefully they are outsourcing it to some kind of SBOM/SCA type tool that monitors this. With this said, I've seen a lot of projects before AI started touching anything stuck in this old dependency hell were they couldn't really get new versions integrated without causing hundreds of other problems leading to a cascade of failures.
- latexr 8mo ago> This is the fundamental nature of complex technologies: our knowledge of these systems will always be partial, at best. Yes, AI will make this situation worse. But it’s a situation that we’ve been in for a long time. That doesn’t make it OK. This is like being stuck in a room whose pillars are starting to deteriorate, then someone comes along with a sledgehammer and starts hitting them and your reaction is to shrug and say “ah, well, the situation is bad and will only get worse, but the roof hasn’t fallen on our heads yet so let’s do nothing”. If the situation is untenable, the right course of action is to try to correct it, not shrug it off.
- planb 8mo agoThis article is about people using abstractions without knowing how they work. This is fine. This is how progress is made. But someone designed the abstraction (e.g. the Wifi driver, the processor, the transistor), and they made sure it works and provides an interface to the layers above. Now you could say a piece of software completely written by a coding agent is just another abstraction, but the article does not really make that point, so I don't see what message it tries to convey. "I don't understand my wifi driver, so I don't need to understand my code" does not sound like a valid argument.
- mamcx 8mo ago> This article is about people using abstractions without knowing how they work. This is fine. This is how progress is made. The big problem is that now exist an actual risk most will never be able to MAKE abstractions. Sure, lets be on the shoulders of the giants but before IA most do some extra work and flex their brains. Everyone make abstractions, and hide the "accidental complexity" for my current task is good, but I should deal with the "necessary complexity" to say I have, actually, done a job. If is only being a dumb pipe...
- ragall 8mo ago> Now you could say a piece of software completely written by a coding agent is just another abstraction You're almost there. The current code-generating LLMs will be a dead end because it takes more time to thoroughly review a piece of code than to generate it, especially because LLM code is needlessly verbose. The solution is to abandon general-purpose languages and start encapsulating the abstraction behind a DSL, which is orders of magnitude more restricted and thus simpler than a general-purpose language, making it much more amenable to be controlled through an LLM. SaaS companies should go from API-first to DSL-first, in many cases more than one DSL: e.g. a blog-hosting company would have one DSL for the page layouts, one for controlling edits and publishing, one for asset manipulation pipelines, one for controlling the CDN, etc... Sort of IaC, you define a desired outcome, and the engine behind takes care of actuating it.
- ebhn 8mo agoI like this direction, but I worry about developers involvement in the design of the DSL becoming the new bottleneck with the same problems. The code which becomes the guardrails cannot just be generated slop, it should be thoroughly designed and understood imo
- CrzyLngPwd 8mo agoOh so many times over the decades, having to explain to a dev why iterating over many things and performing a heavy task like a DB query, will result in bad things happening...all because they don't really comprehend how things work.
- snyp 8mo agoScript kiddies have always existed and always will.
- Atlas667 8mo agoThis is a non-discussion. You have to know enough about underlying and higher level systems to do YOUR job well. And AI cannot fully replace human review.
- vineethy 8mo agoThere’s plenty of people that know the fundamentals of the system. It’s a mistake to think that understanding specific technical details about an implementation is necessary to understand the system. It would make more sense to ask questions about whether someone could conceivably build the system from scratch if they have to. There’s plenty of people that have worked in academic fabs that have also written verilog and operating systems and messed with radios.
- ForHackernews 8mo agoI think there's a difference between "No one understands all levels of the system all the way down, at some point we all draw a line and treat it as a black-box abstraction" vs. "At the level of abstraction I'm working with, I choose not to engage with this AI-generated complexity." Consider the distinction between I don't know how the automatic transmission in my car works, vs. I never bothered to learn the meanings of the street signs in my jurisdiction.
- spenrose 8mo ago“Finally, Bucciarelli is right that systems like telephony are so inherently complex, have been built on top of so many different layers in so many different places, that no one person can ever actually understand how the whole thing works. This is the fundamental nature of complex technologies: our knowledge of these systems will always be partial, at best. Yes, AI will make this situation worse. But it’s a situation that we’ve been in for a long time.”
- testing22321 8mo agoAs an anecdote, I worked at a telco that is the only connectivity for around 50k people spread over a vast area. We had a massive power outage at the CO, and the backup generator failed. Everything, Even 911 was down (a VERY big deal) for basically everyone for most of a day. They stationed police and ambulances in the bigger cities and towns so people could directly ask for help. With all hands on deck scrambling HARD, a week later we still didn’t have everything back up, because we didn’t know how. A ton of it had never been down since the 60s. A mess indeed.
- paulddraper 8mo agoUnderstand one layer above (“why”) and one layer below (“how”). Then you know “what” to build.
- mychael 8mo agoIt's strange to believe that Twitter/X has fallen. Virtually every major character in software, AI and tech is active on X. The people who are actually building the tools that we discuss everyday post on X. LinkedIn is weeks/months behind topics that originate from X. It suggests you might be living in a bubble if you believe X has fallen.
- sgarland 8mo ago> “What happens when you type a URL into your browser’s address bar and hit enter?” You can talk about what happens at all sorts of different levels (e.g., HTTP, DNS, TCP, IP, …). But does anybody really understand all of the levels? [Paraphrasing]: interrupts, 802.11ax modulation scheme, QAM, memory models, garbage collection, field effect transistors... To a reasonable degree, yes, I can. I am also probably an outlier, and the product of various careers, with a small dose of autism sprinkled in. My first career was as a Submarine Nuclear Electronics Technician / Reactor Operator in the U.S. Navy. As part of that training curriculum, I was taught electronics theory, troubleshooting, and repair, which begins with "these are electrons" and ends with "you can now troubleshoot a VMEbus [0] Motorola 68000-based system down to the component level." I also later went back to teach at that school, and rewrote the 68000 training curriculum to use the Intel 386 (progress, eh?). Additionally, all submariners are required to undergo an oral board before being qualified, and analogous questions like that are extremely common, e.g. "I am a drop of seawater. How do I turn the light on in your rack?" To answer that question, you end up drawing (from memory) an enormous amount of systems and connecting them together, replete with the correct valve numbers and electrical buses, as well as explaining how all of them work, and going down various rabbit holes as the board members see fit, like the throttling characteristics of a gate valve (sub-optimal). If it's written down somewhere, or can be derived, it's fair game. And like TFA's discussion about Brendan Gregg's practice of finding someone's knowledge limit, the board members will not stop until they find something you don't know - at which point you are required to find it out, and get back to them. When I got into tech, I applied this same mindset. If I don't know something, I find out. I read docs, I read man pages, I test assumptions, I tinker, I experiment. This has served me well over the years, with seemingly random knowledge surfacing during an incident, or when troubleshooting. I usually don't remember all of it, but I remember enough to find the source docs again and refresh my memory. 0: https://en.wikipedia.org/wiki/VMEbus https://en.wikipedia.org/wiki/VMEbus
- agumonkey 8mo agoThere's various degrees of understanding, for instance as a web dev, you know the browser, the osi network stack.. (in theory, there are a lot of tweaks) then maybe the electronics.. but the radio / wireless part is another world in itself with a totally different mindset (analog waves) which make the rabbithole way too long (and wide.. radio is a big world on its own)
- knorker 8mo agoI would say that I understand all the levels down to (but not including) what it means for electron to repel another particle of negative charge. But what is not possible is to understand all these levels at the same time. And that has many implications. Humans we have limits on working memory, and if I need to swap in L1 cache logic, then I can't think of TCP congestion windows, CWDM, multiple inheritance, and QoS at the same time. But I wonder what superpowers AI can bring, not because it's necessarily smarter, but because we can increase the working memory across abstraction layers.
- css_apologist 8mo agoYes, but the person who understands a lot of the system is invaluable
- markbao 8mo agoThere’s a difference between abstracting away the network layer and not understanding the business logic. What we are talking about with AI slop is not understanding the business logic. That gets really close to just throwing stuff at the wall and seeing what works instead of a systematic, reliable way to develop things that have predictable results. It’s like if you are building a production line. You need to use a certain type of steel because it has certain heat properties. You don’t need to know exactly how they make that type of steel. But you need to know to use that steel. AI slop is basically just using whatever steel. At every layer of abstraction in complexity, the experts at that layer need to have a deep understanding of their layer of complexity. The whole point is that you can rely on certain contracts made by lower layers to build yours. So no, just slopping your way through the application layer isn’t just on theme with “we have never known how the whole system works”. It’s ignoring that you still have a responsibility to understand the current layer where you’re at, which is the business logic layer. If you don’t understand that, you can’t build reliable software because you aren’t using the system we have in place to predictably and deterministically specify outputs. Which is code.
- erelong 8mo agoReminds me of a short writing "I, Pencil" The problem is education, and maybe ironically AI can assist in improving that I've read a lot about programming and it all feels pretty disorganized; the post about programmers being ignorant about how compilers work doesn't sound surprising (go to a bunch of educational programming resources and see if they cover any of that) It sounds like we need more comprehensive and detailed lists For example, with objections to "vibe coding", couldn't we just make a list of people's concerns and then work at improving AI's outputs which would reflect the concerns people raise? (Things like security, designs to minimize tech debt, outputting for rradability if someone does need to manually review the code in the future, etc.?) Incidentally this also reminds me of political or religious stances against technology, like the Amish take for example, as the kind of ignorance of and dependence on processes out of our control discussed seem to be inherent qualities of technological systems as they grow and become more complex.
- MobiusHorizons 8mo agoThere will always be many gaps in peoples knowledge. You start with what you need to understand, and typically dive deeper only when it is necessary. Where it starts to be a problem in my mind is when people have no curiosity about what’s going on underneath, or even worse, start to get superstitious about avoiding holes in the abstraction without the willingness to dig a little and find out why.
- ltbarcly3 8mo agoI mean the quotes in this article aren't even disagreeing except on vague value judgements with no practical consequences. Yes you can make better and more perfect solutions with a deep understanding of every consequence of every design decision. Also you can make some real world situation thousands of times better without a deep understanding of things. These two statements don't disagree at all. The MIPS image rendering example is perfect here. Notice he didn't say "there was some obscure attempt to load images on MIPS and nobody used it because it was so slow so they used the readily available fast one instead". There was some apparently widely used routine to load images that was popular enough it got the attention of one of the few people who deeply understands how the system worked, and they fixed it up. PHP is an awful trash language and like half the internet was built on it and lots of people had a lot of fun and got a lot more work done because people wrote a lot of websites in PHP. Sure, PHP is still trash, but it's better to have trash than wait around for someone to 'do it right', and maybe nobody ever gets around to it. Worse is better. https://en.wikipedia.org/wiki/Worse_is_better https://en.wikipedia.org/wiki/Worse_is_better
- cadamsdotcom 8mo agoHuh? The whole point of society is that you don’t need to know how the whole thing works. You just use it. How does the water system maintain pressure so water actually comes out when you turn on the tap? That’s entirely the wrong question. You should be asking why you never needed to think about that until now, because that answer is way more mind-expanding and fascinating. Humans invented entire economic systems just so you don’t need to know everything, so you can wash your hands and go back to your work doing your thing in the giant machine. Maybe your job is to make software that tap-water engineers use everyday. Is it a crisis if they don’t understand everything about what you do? Not bloody likely - their heads are full of water engineering knowledge already. It is not the end of the world to not know everything - it’s actually a miracle of modern society!
- nish__ 8mo agoI do.
- theywillnvrknw 8mo agoLet me figure out how exactly the human body works before using it.
- dandanua 8mo agoSomebody knows how a part of a complex system works. We can't say this for complex systems created with AI. This is a road into the abyss. The article is making it worse by downplaying the issue.
- wduquette 8mo agoIt's certainly the case that I don't always know how the layer below works, i.e., how the compiled code executes in detail. But I have a mental model that's good enough that I can use the compiler, and I trust that the compiler authors know what they are doing and that the result is well-tested. Over forty years and a slew of different languages I've found that to be an excellent bet. But I understand how my code works. There's a huge difference between not understanding the layer below and not understanding the layer that I am responsible for.
- B56b 8mo agoThat's the critical difference. You could always find some person who understood a particular piece of a complex puzzle. It's a very new, worrying thing to have pieces that no one understands.
- kgwxd 8mo agoWho cares? Nobody is concerned about that. They're concerned no one will be able to fix stuff when it goes wrong, or there will be no one to blame for really bad problems. Especially when the problem is repeating at 50 petaflops per second.
- youknownothing 8mo agoI see many people comparing the production of code through AI with compilers: just another layer of abstraction. They argue that, in the same way that creating high-level languages that were compiled to assembler meant that most people didn't need to know assembler any more, then specifying specs and letting AI produce the high-level language will mean that most people won't need to know the high-level language any more. However, there is a fundamental flaw in this analogy: compilers are deterministic, AI is not. You get high-level code and compile it twice, you get exactly the same output. You get specs and generate high-level code through AI twice, you get two different outputs (hopefully with equivalent behaviour). If you don't understand that deterministic vs. non-deterministic is a fundamental and potentially dangerous change in the way we produce work, then you definitely fail at first principles.
- jpadkins 8mo agoEven if you know how the compiler and OS constructs work, you might not know how the hardware circuits work. Even if you know circuits work, you might not know how the power generation or cooling work. Even if you know how the power generation works, you don't know how extracting natural gas works or solar panels are created. etc,etc My takeaway is that modern system complexity can only be achieved via advanced specialization and trade. No one human brain can master all of the complexity needed for the wonders of modern tech. So we need to figure out how to cooperate if we want to continue to advance technology. My views on the topic were influenced by Klings book (it's a light read) https://www.libertarianism.org/books/specialization-trade https://www.libertarianism.org/books/specialization-trade
- faresfa 8mo ago[dead]
- chasd00 8mo agoyou're perfectly free to read, understand, even edit code created by these coding agents. I must have made that point in a dozen threads just like this one. Do people think because an agent was used then the code is unaccessible to them? When I use these tools i'm constantly reviewing and updating what they output and I feel like I completely understand every line they create. Just like I understand any other code i read.
- overgard 8mo agoLeaky abstractions have always been a problem. Sometimes people like to use them as an example of "see, you didn't understand the assembly, so why do you care about... X". The logic seems to be "see, almost all your abstractions are leaky, why do you care that you don't understand what's happening?" A few comments on that. First off, the best programmers I've worked with recognized when their abstractions were leaky, and made efforts to understand the thing that was being abstracted. That's a huge part of what made them good! I have worked with programmers that looked at the disassembly, and cared about it. Not everyone needs to do that, but acting like it's a completely pointless exercise does not track with reality. The other thing I've noticed personally for myself is my biggest growth as a programmer has almost aways come from moving down the stack and understanding things at a lower level, not moving up the stack. Even though I rarely use it, learning assembler was VERY important for my development as a programmer, it helped me understand decisions made in the design of C for instance. I also learned VHDL to program FPGAs and took an embedded systems course that talked about building logic out of NAND gates. I had to write a game for an FPGA in C that had to use a wonky VGA driver that had to treat an 800x600 screen as a series of tiles because there wasn't nearly enough RAM to store that framebuffer. None of this is something I use daily, some of it I may never use again, but it shaped how I think and work with computers. In my experience, the guys that only focus on the highest levels of abstractions because the rest of the stuff "doesn't matter" easily get themselves stuck in corners they can't get out of.
- themafia 8mo ago> But does anybody really understand all of the levels? Of the top of my head? Most of them. Did you need me to understand some level in particular? I can dedicate time to that if you like. My experience and education will make that a very simple task. The better question is.. is there any _advantage_ to understanding "all the levels?" If not, then what outcome did you actually expect? A lot of this work is done in exchange for money and not out personal pride or desirous craftsmanship. You can try to be the "Wizard of Oz" if you want. The problem is anyone can do that job. It's not particularly interesting is it?
- AceJohnny2 8mo agoAnecdotally, the reason my career is in embedded software is that I kept wanting to know how the (software) system works, and embedded is as deep as you can get without changing disciplines altogether. The cost is you lose those layers of abstractions you get at the higher software levels, and there's only so much complexity I can handle. (the funny part is that even HW registers and stuff are just an API that the hardware chooses to expose. As Alan Kay said: "Hardware is really just software crystallized early")
- alexander2002 8mo agoPrompt enginnering is underrated in terms of the enginnering part and we should not be ashamed to enginner out prompts the way a developers work with code
- Finnucane 8mo agoLong ago I was working for a programmer writing an accounting system for a client (I wrote the user docs). The machine we were replacing was an old NCR plug-board system. Programmed by wires plugged into holes on a board. One person left at the client knew how the machine worked. No one knew how the programming worked. If the wires fell out of the holes it could not be put back together again. At one time someone knew that, but the knowledge was lost. This is the system we are building again today.
- econ 8mo agoNot knowing is still better than being wrong. I'd prefer neither.
- spprashant 8mo ago"You don't understand everything, ergo you should build more things you don't understand and be okay with it." This is a bad take.
- WalterBright 8mo agoUp until the IBM PC, I knew how everything worked, down to the transistors. That's long gone!
- directevolve 8mo agoGood design allows systems to work without anyone knowing how the whole thing works. AI and humans are labor that can be put to work designing and vetting such systems. The problem with AI isn’t that it builds things we don’t understand. It’s that we do not have much experience with its failure modes, limitations and risks. There are many unknown unknowns. It’s directly analogous to the problem of hiring, management, outsourcing and contacting. Sure, we know that labor can produce massive, highly reliable systems nobody fully understands. But how do we coordinate labor, AI and human, to successfully produce the systems we actually need? What failure modes and advantages does AI introduce into the mix for specific projects? That’s where the uncertainty comes from, not the lack of comprehensive knowledge of the systems themselves.
- toddmorrow 8mo agothis is just marketing press from big AI
- cainxinth 8mo agoI just reread E. M. Forster‘s 1909 short story “The Machine Stops.” I feel it should be assigned reading on an annual basis for everyone working in tech today. https://www.cs.ucdavis.edu/~koehl/Teaching/ECS188/PDF_files/Machine_stops.pdf https://www.cs.ucdavis.edu/~koehl/Teaching/ECS188/PDF_files/...
- deterministic 8mo agoYou don't need to understand how the whole system works. What you need to understand is the API's in-between the sub-systems. Another way to put it is that the architecture is the API's. You can in principle throw away and re-implement the sub-system for a specific API without understanding the rest of the system. I am saying in principle because in practice API's are typically under-specified leaving out important side effects.
- deterministic 8mo agoNobody knows how to manufacture a pencil. Thousands (millions?) of people and companies are involved world wide and nobody knows how to do every step of the process, from mining and foresting to transport, logistics, accounting etc. That's the beauty of specialization. The same goes for software.