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.

We have used too many levels of abstractions

834 pointsby riidomover 1 year ago

121 comments

steeleduncanover 1 year ago
There was a point in the history of aviation where anyone who could fly a plane was also capable of constructing and designing one. I wonder if there were similar concerns at that time about a future where someone could be in a cockpit of a plane without truly understanding how the machine works from first principles?<p>Today that type of concern would seem absurd, and we&#x27;ve gotten used to the idea that flying a plane and building it are separate skillsets and jobs. After all, we are comfortable with aviation engineers designing the aircraft without knowing how to mine the bauxite, smelt it to aluminium, and machine it into aircraft parts.<p>As comforting as it is to have an overview of how to trace a complete path from logic gate to web request, it isn&#x27;t necessary. The decrease in the number of engineers with that overview isn&#x27;t a cause for alarm, or a problem to be solved. It is just a sign that &quot;tech&quot; has matured, and it is stratifying into a set of interlocking disciplines. The same happened with every other subject in human history, and we&#x27;ve been just fine...
评论 #37966363 未加载
评论 #37972480 未加载
评论 #37968578 未加载
评论 #37970105 未加载
评论 #37966205 未加载
评论 #37966991 未加载
评论 #37966209 未加载
评论 #37971735 未加载
评论 #38032565 未加载
评论 #37967951 未加载
评论 #37968543 未加载
评论 #37971962 未加载
评论 #37981212 未加载
graypeggover 1 year ago
Kids today don&#x27;t get enough credit. A friend&#x27;s son was so excited to show off the Roblox game him and his friends were making a couple of weeks ago. Was there for (Canadian) thanksgiving so there was some family friends and tons of people from his family there. He had already picked out something he thought each of us would be interested about it, and I was the &quot;show him the Lua!&quot; guy!<p>People assume that because their phone&#x2F;laptop is locked down and unable to spark curiosity that it must be the same for kids today, but I think they just become a little more un-curious themselves.<p>Yeah it&#x27;s built on some abstractions, but I do think there&#x27;s some valleys among the tall abstraction mountains that the curious few venture into, just as it&#x27;s always been.<p>Yes, c64 BASIC lets you POKE at any memory address you want, but I was getting a pitch about a complex 3D collect-a-thon with FPS elements, from a 10 year old. That&#x27;s also kind of cool.
评论 #37969225 未加载
评论 #37969892 未加载
demondemidiover 1 year ago
Old man yelling at cloud vibes.<p>Yes some people are experts and some are just adequate. Nothing new here. Not everyone can be a messiah like the author, who spends half of this short essay telling us how great he is.<p>This article has almost nothing to do with abstraction. The author loses interest in his own thesis after the first two paragraphs.
评论 #37968500 未加载
评论 #37967546 未加载
评论 #37966704 未加载
jongjongover 1 year ago
The other thing is that we&#x27;ve adopted the wrong abstractions on many occasions. Today, in the software industry, we have an arrogant mono-culture which believes that we&#x27;re at the end of history and have figured it all out... But in fact, I believe we&#x27;ve gone down the wrong path with many more recent tech. I feel like everything was moving on the right direction until around 2014... Then it&#x27;s like progress started going backwards and we started using all the same hyped up frameworks. Companies started forcing everyone to use these frameworks and now software development has become both inefficient and demoralizing.<p>I know the current mainstream state of the art is inefficient for sure because I&#x27;ve built an SDK which I use for my own projects and I&#x27;m at least 10x more productive with it than with mainstream frameworks I used during my day job and the code is way easier to read and maintain. I could show the code to a junior dev who doesn&#x27;t know any frameworks and they will be productive with it. I wrote a no-code BaaS (Back end as a Service) platform in 2 months part time using my SDK. I highly doubt I or anyone else could have done this in 12 months full time using mainstream tools and frameworks.
评论 #37966490 未加载
评论 #37965898 未加载
评论 #37965902 未加载
phendrenad2over 1 year ago
&gt; A big percentage of so-called experts today only know how to configure some kind of hype-tool, but they understand nothing about how things work at the deeper level.<p>This resonates with me strongly. Everyone seems to know how to do things by rote memorization (&quot;to do X, add this line to your config file&quot;) but nobody knows how to go off-script if you need to do something slightly different (not-quite-X or a variation on X). Worse, people will waste your time trying to steer the conversation away from not-quite-X back to X. (Insert the parable of the man searching for his lost wallet under a streetlight because that&#x27;s where the lighting is best.)
victorNicolletover 1 year ago
I think it&#x27;s wonderful that we have created a tech ecosystem (a techosystem?) that allows people to contribute with only a very narrow knowledge of things—or, in less positive terms, that allows companies to hire cheaper labor because fewer skills are required. I believe there are many cases where a mediocre solution is better than no solution at all.<p>The internet of 1995-2005 was built on mediocre solutions. It was a blast.<p>Deep-dive experts are not a dying breed, they&#x27;re not a limited resource with secret knowledge from a time before abstractions. We have more of them now than ever before. They&#x27;re not defined by having worked all the way up and down the stack, but by having the curiosity to look into layers that are not their own, because not only are we adding more abstraction layers on top, we&#x27;re also changing some of the layers down the stack: NVMe, WebGPU, WebAssembly, QUIC, AVX512 !<p>But deep-dive experts are a luxury that most teams don&#x27;t need, and one of the most important skills of a technical manager is, I would argue, to know when they absolutely must hire one.
huijzerover 1 year ago
Increases in the levels of abstractions are necessary. The human brain doesn’t become much more capable over the years, but the number of available tools does so you need abstractions to allow for focus. I don’t see why this makes the future bleak per se. A programmer working on a business problem can be extremely productive in a high-level language even without understanding EUV, compilers, assembly, instruction sets, kernels, USB protocol, HTTP, dies, substrates, and much more. The same holds for pilots. They don’t need to know everything about aerodynamics, tensile strengths, aluminium, rubber, GPS, and much more.<p>However, a discussion over the misalignment of incentives in modern society can definitely be had. I would trust the pilot generally much more than a business software developer, researcher, or banker because the pilot will be the first to arrive in a crash.
SanderNLover 1 year ago
One thing to keep in mind is that software for a dialysis machine requires a different approach from some overly generic CRUD app exposing how many mansions you have or something.<p>There is a lot of asinine software in the world and that’s fine. Lots of “real problems” are pretty asinine and don’t require heroic engineering feats.<p>Just slapping some bullshit together is good enough in a frightening number of cases.<p>Hate it too myself, but I have come to accept I can either prove them wrong by building my own business and outcompeting them through my supposed superior engineering or just swallow that I’m yelling at the clouds.
评论 #37965546 未加载
ben_wover 1 year ago
I guess it&#x27;s somewhat apt for a rant against abstraction to hyperlink…<p>&gt; Some students today apparently don&#x27;t even know what files and folders are<p>…to a slashdot thread that links to a PC Gamer article that rephrases and links to a Verge article that links to Stack Exchange questions.
hliyanover 1 year ago
In other words, cargo cult programming. I wrote about this two years ago [1] and received only polarised responses that either agreed with the point wholeheartedly, or attacked me viciously for gatekeeping. I wish there was a better way to cure this disease without triggering the professional immune systems of engineers who are highly vested in their favourite technologies.<p>[1] <a href="https:&#x2F;&#x2F;medium.com&#x2F;the-engineering-manager-guide&#x2F;cargo-cult-programming-is-killing-the-sri-lankan-software-industry-e5e9fc9a3ff9?sk=02370473978b3641b887ff74006c529c" rel="nofollow noreferrer">https:&#x2F;&#x2F;medium.com&#x2F;the-engineering-manager-guide&#x2F;cargo-cult-...</a>
评论 #37971813 未加载
评论 #37967225 未加载
评论 #37978811 未加载
评论 #37969559 未加载
subomiover 1 year ago
Reading this, I had an epiphany about why open-source software is essential. How do you peak under opaque abstractions? It&#x27;s just not possible.<p>Imagine if Kubernetes was closed source &amp; binary distribution only. Understanding abstractions is, I think, why being open source has become table stakes for infrastructure software.
评论 #37966192 未加载
评论 #37965849 未加载
anonzzziesover 1 year ago
The future looks especially bleak because LLMs, for many who I work with, are doing with logic what Google did with memory. &#x27;Just ask chatgpt&#x27; will be a thing ; maybe not chatgpt, probably indeed just google but with a their chatbot which can do &#x27;logic&#x27; and abstractions built in.<p>Google -&gt; you don&#x27;t need a longterm memory, just Google it.<p>So with good LLMs (and the latest iteration of chatgpt is really good at a lot of things you don&#x27;t want bore yourself with), you don&#x27;t need to process logic and abstraction as it will do it for you.<p>This is not yet there for everyone but I think it will work the same. Lazy the mind and have less and less rigor where the abstractions get more abstract and also more shallow.
评论 #37998989 未加载
评论 #37968194 未加载
kosolamover 1 year ago
I support the notion of this post. In the last 6 years I’ve mostly been busy removing layers of abstraction in order to uncover the set of tools which is a good balance for me. In example, replaced clojurescript with Javascript and then eventually Typescript. Replaced Clojure with Java. Replaced docker with VMs. Avoided ansible in favor of simple bash scripts. Avoid all kinds of firewalls in favor of understanding and using iptables directly. Etc.. When it makes sense, additional layers of abstraction can always be added on top, if the foundation is solid.
评论 #37966286 未加载
评论 #37965474 未加载
评论 #37971178 未加载
评论 #37965383 未加载
spacebanana7over 1 year ago
At a certain point software engineering may come to resemble medicine more than mathematics, where the lower layers of operation are known to be poorly understood and innovations emerge from tinkering rather than derivations from first principle.
评论 #37968131 未加载
bogotaover 1 year ago
This is a constant source of pain for me since I started working 12 years ago after finishing college. I noticed when most people came to me with issues it was because they were afraid or just too lazy or didn’t know they could just read the source code or docs and go one level under the abstraction to figure something out.<p>My entire career so far i spent trying to get onto teams where others were doing the same as me but had more experience. In the years i spent on those teams i learned a lot. But as time has gone on a lot if those people have left into management which just isn’t the same as directly working with them on problems. I actually have also done the same recently.<p>When i look at almost anyone today they have no desire to understand what is going on with the tools they are using. Further more most of upper management pushes me to enable this by building more abstraction on top of abstraction they do not understand so when it breaks I or my team can fix the actual issue. Ensuring the developers have an easy out for anything that is outside knowing their framework and some basic syntax.<p>I always wonder if people felt the same way about me if they came from a background where they had to know assembly or other lower layers of the stack. At any rate even in the current environment I haven’t been worried about finding new work if needed. Their seems to be a very short supply of people anymore who know how things work under the hood or even have a desire to figure it out when it breaks.
评论 #37967589 未加载
signaruover 1 year ago
Software&#x27;s re-usability is both a blessing and a curse. Hardware also has modularity, but it is still common to build hardware from scratch. On the other hand, once a library or framework exists, many people no longer feel the need to understand the underlying algorithms. One side effect is that many of the frameworks or libraries still in use and that are important for the dependent software to work are written with languages that less and less people want to program in such as C&#x2F;C++ or even Fortran.
评论 #37965716 未加载
Leiresover 1 year ago
If ignorance is rewarded, then people will willingly choose to be ignorant. The advice in this article sounds nice, but the reality is the rats only want the reward. If learning Kubernetes gets a six figure job tomorrow, people will chase it while ignoring networking and OS fundamentals.
kyahwillover 1 year ago
I somehow agree with this. As a web developer who started on a framework first approach (Vue + Django), I was having one hell of a time trying to figure things out because of my lack of fundamental knowledge. I think abstraction is okay but you have to understand that just because you can make abstractions doesnt mean you should.
评论 #37965431 未加载
评论 #37965432 未加载
donatjover 1 year ago
&gt; Power steering is yet another level of abstraction that further improves the driving experience.<p>I am a pretty firm believer that antilock brakes are a bad abstraction that might cause fewer accidents, but often more dangerous accidents than they prevent.<p>They avoid a class of accident caused by the brake’s locking limiting your ability to steer. They cause a whole class of accidents where you hit things at a higher speed than you otherwise would have because your ability to actually slow down is greatly diminished. It’s a trade of braking distance for control. Basically we’re prioritizing rapidly swerving around an obstacle over less controlled but far more rapid deceleration.<p>I really don’t think this trade off makes any sort of sense in anything but the most sparse rural environment. In urban and suburban areas, swerving blindly around an obstacle will just mean hitting something else. Yes, you missed the car that pulled out in front of you but now you’re either throwing your vehicle into pedestrians on the sidewalk or into oncoming traffic. Both cases likely a far worse outcome than the accident you are taking evasive actions to prevent. The sanest option becomes just to hit the obstacle you would have been able to stop for were it not for antilock brakes.<p>In my eyes, the most fundamentally frustrating part, and what makes them a bad abstraction, is that the problems antilock brakes solve are entirely preventable by human intervention. Namely, pumping the brakes. The class of accidents antilock brakes cause are largely unavoidable. You can stop lessen their affect by not fully depressing the brake but it is still a much longer deceleration than no antilock brakes at all.
评论 #37966184 未加载
评论 #37969669 未加载
评论 #37966088 未加载
评论 #37966107 未加载
pmlnrover 1 year ago
&gt; So what is going to happen when the level of understanding in the tech industry reaches such a low point in which the majority of people don&#x27;t even know how to fix the tools they are using?<p>Priesthood. See: Foundation by Asimov.
评论 #37971384 未加载
warkanlockover 1 year ago
This is an insightful article, although I don&#x27;t necessarily agree with the view that &quot;everyone&quot; needs to know everything from first principles to be good at their job.<p>Talking about abstractions, during my past month, I was reading nand2tetris, and it&#x27;s a compelling experience if you understand the exercise you are doing, which is not about building a computer from first principles; it&#x27;s much more than that.<p>It makes you really understand what&#x27;s going on behind the layers of abstracting that have been raised. Sometimes, understanding every layer of complexity is impossible, but depending on the area you are in, we need at least to try to understand the roots of it.<p>However, this is not for everyone; ask a musician if they are really in the weeds of why the instrument is producing music (the physics behind it!). They are probably aware that it&#x27;s vibrating air, but, in general, they won&#x27;t know the theory behind it.<p>Everything is built on abstractions, and that&#x27;s OK, with time we will add even more on top of what we have; now, the issue is when those abstractions lock you in with a mindset that prevents you from creating something new without relying on those same abstractions that help you build stuff.<p>Many discoveries and inventions were made because they knew the layer of abstractions on top of it, and they just started again from scratch. Even Figma, the software, is built on a new core of concepts based on how the web was working back in the time [1]<p>[1] <a href="https:&#x2F;&#x2F;madebyevan.com&#x2F;figma&#x2F;introducing-vector-networks&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;madebyevan.com&#x2F;figma&#x2F;introducing-vector-networks&#x2F;</a>
评论 #37965550 未加载
评论 #37965960 未加载
评论 #37974347 未加载
评论 #37966425 未加载
评论 #37968377 未加载
Zetobalover 1 year ago
It&#x27;s not only developers we had a regress in skill in the art&#x2F;vfx world as well. If there are no tutorials with step by step instructions on youtube most people can&#x27;t resolve visual&#x2F;art&#x2F;vfx problems anymore. It&#x27;s about the most basic things if you get people with &quot;art&quot; degrees today maybe 3 out of 10 can draw or sketch. If they are not in front of a computer they can&#x27;t communicate visually. They are also not able to adept or solve problems on the fly which is really important if you supervise on set.
评论 #37965545 未加载
brutusbornover 1 year ago
Great article. Reminds me of a boss I had early in my career, who would get a bit nervous if you asked any questions about the details of what we were actually doing. I later found out it was because he just copied the procedures used at his previous employer. “We do it this way because we have always done it this way” kind of deal. I wondered why any suggestions of doing things differently fell of deaf ears. Thankfully my next boss was excellent technically and was happy to change our procedures if it would make life easier.
__MatrixMan__over 1 year ago
It&#x27;s not so bad once you just face it head on: we have toolchain cancer. Yeah, cancer sucks, but are we really so happy with our current set of companies that having them die of cancer is such a bad thing? They&#x27;re not people. It&#x27;s ok to want them dead so we can do things differently in the future.<p>Not all technology feeds into the cycle of tool bloat, we just need to get better at choosing our tools wisely instead of letting somebody&#x27;s marketing department influence our decisions.
eitallyover 1 year ago
Back when I was an IT leader running all our internal appdev, I had a &quot;pet&quot; business system that my team used exclusively to write, optimize and rewrite as a testbed and learning environment for new frameworks. It was probably not the most efficient way for me to run the org, but I honestly believe it saved lots of longer term headaches by containing a few potentially terrible decisions to the scope of a single, not-mission-critical app.
zubairqover 1 year ago
Having worked for many years in IT in Denmark I would say that the author is right, but many of these are luxury beliefs, since in Denmark people are given alot more time to do their job right than in many places. In many parts of the world developers are not given the time to understand anything, and end up working 8 hours after the job to understand the tools in their own time
评论 #37966505 未加载
0x445442over 1 year ago
But was the author’s work groomed? Was time scheduled for it in the backlog? What feature specifically was his Columboesque investigation supporting?<p>This is what happens when you turn Engineers into Devs. Software Engineering used to be viewed more as a profession but orgs have been chasing the holy grail of commoditizing software development. It’s not assembly line work and never will be.
rapjr9over 1 year ago
I&#x27;ve been writing software since the early 1980&#x27;s and I remember being pushed to get it working and thinking &quot;they&#x27;ll rewrite this and fix it in the future, this is just to get it working now&quot;. It&#x27;s been terrifying to realize over the years since then that no one ever revisited the code and it still has not been fixed in many cases. Some of that code was used to control trains, nuclear power plants, chemical factories, medical systems, and satellites. I suspect some of it has been replaced, and ultimately it was the responsibility of the people building those systems to make sure they worked correctly, but poorer countries often stole software and a lot of it was still seeing use long after the product was no longer even sold. The world is in some cases hanging on a thread of old software that no one understands any more and no one is supporting. Source code may not even exist.<p>I&#x27;ve worked in software QA also and abstraction is the bane of debugging, especially when you can&#x27;t even see the code in the libraries you&#x27;re using. Proprietary binary blobs in embedded systems are the worst.
x86cherryover 1 year ago
The article raises good points, but I feel it misses the bigger picture.<p>Every generation has some people more interested in the depth of their field than others. So why do we see fewer of the actual experts?<p>Well, we don&#x27;t, we just see more of the surface level developers being able to contribute real economic value to society. They were just kept out by the more demanding requirements before.<p>If anything, it&#x27;s a good sign we&#x27;ve come to have this luxury problem.
MagicMoonlightover 1 year ago
We’re going to be so fucked when the people who develop things like the linux kernel die. There are no upcoming people with that level of knowledge.
评论 #37967205 未加载
评论 #37971448 未加载
walleeeeover 1 year ago
Good article. This same critique applies equally well to technology in macrocosm. We need to ask:<p>- how does it really work?<p>- what are its dependencies?<p>- what are its failure modes?<p>- what are its side effects?<p>- why are we doing it this way?<p>- how long will it keep working?<p>- are there any alternatives?<p>- if so, why aren&#x27;t they in use?<p>- and what can we do about it?<p>This is particularly crucial with regard to materials and energy, as well as social norms, societal institutions, and cultural expectations.
cl3mischover 1 year ago
Abstraction is a feature of technological progress.<p>Not to say that OP is incorrect. But intelligent people were opposed to abstraction already in ancient times. Socrates said about the invention of writing [1]<p>&gt; For this invention will produce forgetfulness in the minds of those who learn to use it, because they will not practice their memory. Their trust in writing, produced by external characters which are no part of themselves, will discourage the use of their own memory within them.<p>From today&#x27;s perspective it seems absurd to oppose written information. The net benefit on society is clearly positive.<p>I am not saying that every abstraction is a net positive. But the example demonstrates that it is easy to oppose abstractions, even if they turn out to be positive in hindsight.<p>[1] <a href="https:&#x2F;&#x2F;www.historyofinformation.com&#x2F;detail.php?id=3439" rel="nofollow noreferrer">https:&#x2F;&#x2F;www.historyofinformation.com&#x2F;detail.php?id=3439</a>
RetroTechieover 1 year ago
<i>&quot;Don&#x27;t just learn tools, try to understand how the underlying technology works.&quot;</i><p>Sound advice imho:<p>&quot;If you understand the nature of the beast, you know what it&#x27;s capable of.&quot;<p>Rarely -if ever- necessary to know all the gritty details. But it sure helps to understand the structure of what&#x27;s underneath, or how it uses whatever is underneath <i>that</i>.<p>For example: I&#x27;m no mechanic who knows the outboard ICE on my boat like the inside of his pockets. But I <i>do</i> know it&#x27;s a 2-cylinder, 4 stroke engine, how those cylinders sit in the engine block, how to unscrew the sparkplugs &amp; check those, what the various other parts &amp; hoses are for, and (roughly) how much fuel it should consume for trip x, y or z.<p>Imho that&#x27;s about the level of understanding programmers should have about the tools of their trade.
SunghoYahngover 1 year ago
Don&#x27;t worry, old guys. The reason coders don&#x27;t know all the low-level skills you&#x27;ve devoted your life to now is because they don&#x27;t need them. If the future really becomes bleak, they&#x27;ll start learning the skills they need.
评论 #37970506 未加载
preommrover 1 year ago
These abstractions also exist to fill the void of an ever creasong job-sector.<p>I sometimes feel like there are multiple specialties (for which different roles, and often different people are required) where someone only has to work for way less than full-time (maybe even as low as 5% of the time). When we hire specialized people, they do the needed 5% and then have to find additional work to do to fill in the time. So we get more complex tools that incremental improvements, we get more abstractions, we get more overall complexity.
AngryDataover 1 year ago
I feel like if I was alive and working 60 years ago I would have been saying the same thing about mechanics, construction, and analog electronics. But really it doesn&#x27;t matter for most jobs. Knowing how things work underneath is needed if you are forming your own business and products from the ground up, it is only slightly useful if you are working for somebody else, and as time goes on what monetary value there is left in that knowledge will evaporate to nothing for 98% of workers.
评论 #37965560 未加载
评论 #37965376 未加载
评论 #37965712 未加载
评论 #37965387 未加载
largbaeover 1 year ago
This could be applied to society as a whole. Currencies are an abstraction on bartering which is an abstraction on doing every task required to support your life and family yourself. Each layer of abstraction creates a specialization and efficiency. Those who consume the abstractions may lack the details, but they have levers long enough to move mountains! Those who provide them have a valuable role. Don&#x27;t be afraid, we must keep making more.
Towaway69over 1 year ago
Abstractions are also related to complexity. As the interdependence between various systems increases, so does abstractions.<p>Then those external dependencies and services are updated independently and the corresponding abstractions need updating.<p>Then external services are replaced and new abstractions are introduced.<p>Most technologies are never &quot;finished&quot; and instead they are updated cause a domino effect of downstream updates.
biomattrover 1 year ago
Ive been doing academic biomedical research for the last 15 years. Finding competent reviewers for computational papers is like NP complete. Yet there is a factorial increase of sophisticated code in the literature. So we got the inverse problem to tech. Not enough of the old school, goto reviewer scientists have learned the foundational stuff.
xnxover 1 year ago
I would love there to be a hands-on &quot;History of Computing&quot; class that runs through the history of computing (maybe starting in the 1970s?) through hands-on activities (through emulators probably) to give some perspective about how awesomely fast and powerful computers have become. This could also serve to expose where things have regressed (e.g. text editor and other UI responsiveness, complexity of the web stack). A version of this lesson could also be taught with video games to show though older games were visually simple, and just a tiny fraction of the file size, they were frequently just as fun.<p>Semi-related: I&#x27;d love to see a single video game that modernized the game experience as you played: Text mode only -&gt; text mode + static VGA graphics -&gt; 2D sidescroller -&gt; Wolfenstein-quality -&gt; DOOM-quality -&gt; Quake-quality -&gt; Half Life 2 quality -&gt; modern-AAA.
rr808over 1 year ago
I&#x27;m working on a team with very naive, young, non-technically trained programmers. I love it so much. Start a program, open a file, process the file one step at a time. No DI, not much unit testing, no fancy frameworks or language features. Its so refreshing to just work on adding business functionality and just testing it with users.
neilvover 1 year ago
The author&#x27;s &quot;Advice to people studying technology&quot; goes against the dominant practices for individuals making money in software right now.<p>This is sometimes a misalignment with organizations, though other times a company is playing games (e.g., priority is to appear externally as having growth or progress).
cratermoonover 1 year ago
Speaking of failures traceable to levels of abstraction.<p>&quot;The hacking was rather discrete and would most likely never had be discovered where it not ...&quot; should be &quot;The hacking was rather discreet and would most likely never been discovered were it not ...&quot;.<p>The abstraction at fault here? Spell checkers. It&#x27;s not enough to know how to look for the squiggly red lines under words, it&#x27;s necessary to know what words mean. As Jerrold H Zar put it:<p><pre><code> Eye halve a spelling check her, It came with my pea sea. It plane lee marks four my revue Miss steaks aye kin knot sea. </code></pre> <a href="https:&#x2F;&#x2F;arnold.hosted.uark.edu&#x2F;Other&#x2F;ZarOde.pdf" rel="nofollow noreferrer">https:&#x2F;&#x2F;arnold.hosted.uark.edu&#x2F;Other&#x2F;ZarOde.pdf</a>
nunezover 1 year ago
see also: most Kubernetes tooling.<p>Kubernetes is great, but working with a tool that installs an in-cluster REST API that calls another in-cluster REST API that renders objects to be consumed by another in-cluster REST API that will also render objects to be consumed by multiple in-cluster REST APIs that will, eventually, produce containers that are externally accessible through a glorified NGINX config (with L4 filtering done by iptables, if you&#x27;re lucky) can get extremely tiring.<p>(To be clear, this is still better than scripts that would call scripts that would write values to files&#x2F;databases all over the place that are mutated by other scripts since Kubernetes does a really good job of enforcing interfaces between boundaries)
gemstonesover 1 year ago
In my (admittedly anecdotal) experience, security people are the worst at this. I’m not sure if the problem is that they have so many certs that you can just memorize canned answers and get a job rather than go through an SWE coding test at most places, or something else.
Nikskoover 1 year ago
The author claiming that no single person can master development and ops and security is missing the point. By abstracting over some of the details of all of those fields, someone can be proficient in all of them, and therefore gain the perspective that comes from bridging those three separate but aligned skillsets.<p>We haven&#x27;t used _too many_ abstractions. We&#x27;ve merely leveraged abstractions in a way that makes a different tradeoff. A small number of abstractions trades off deep expertise for narrow perspective. A larger number of abstractions allows us to trade off a wider perspective for a shallower understanding.<p>Neither is wrong. Both are useful. Different situations will call for each.
sholladayover 1 year ago
So is the argument that everyone should be a mechanic? Including the long haul truckers, the race car drivers, stunt people, taxi drivers, etc? Such people use their vehicles professionally, full time. Obviously technical knowledge is useful to them in case of a problem or to fine tune their vehicle. But in general, no, being able to steer without a steering wheel doesn’t really do much for them. It’s okay to specialize at the higher layers of the stack.<p>Programming is more like building with legos than building or using a car. So much of programming is composing units of work, even if you are starting at a low level of abstraction. And those units are very generic, very reusable, with little need for each unit to know about the goals of the end result until you get very high in the stack. In other words, we specifically avoid using specialized parts unless it becomes necessary.<p>I would wager that &gt;90% of the useful, beautiful, functional software that I enjoy using every day was written by people who don’t know how to write assembly. Whether you measure it by lines of code, work hours, whatever. And that’s okay. They had time to add features and work on their business model rather than having another go at correctly loading their data into the CPU registers.
评论 #37969130 未加载
评论 #37968392 未加载
iambatemanover 1 year ago
Suppose someone is a relatively well versed professional but they have a hole in their understanding…They don’t know X - where X is HTTP verbs or linear algebra or Assembly or the difference between Java and JavaScript or how to write vanilla JavaScript in general…<p>it’s very likely that those skills are immaterial to their job. It’s also very likely that they will never need those skills.<p>All of computing is layering abstractions and no one - no one - understands all of them. The author cherry-picks their own favorite layers as being “what kids these days don’t understand” while ignoring their own ignorance of other layers.<p>One does not need to understand alternating current in order to plug in a vacuum.
评论 #37968403 未加载
carapaceover 1 year ago
I want to point out that computers in particular are just not that hard to understand. E.g. &quot;Getting started in electronics&quot; by Forrest M. Mims III ( <a href="https:&#x2F;&#x2F;archive.org&#x2F;details&#x2F;gettingstartedin00mims" rel="nofollow noreferrer">https:&#x2F;&#x2F;archive.org&#x2F;details&#x2F;gettingstartedin00mims</a> ) covers gates and silicon down to the sub-atomic level, and it&#x27;s suitable for a bright child.<p>Let&#x27;s not try to excuse the mess in IT by appeals to the aircraft industry until we have a semblance of their professionalism, dedication to safety, and history of handling faults and errors and learning from the process.
molly0over 1 year ago
Asking yourself: “Is the abstraction I’m using optimal for what I’m currently doing or could another type of abstraction be even better?”<p>Forces you to at least admit to yourself that you probably lack a lot of knowledge. Makes you humble and hopefully qurious.
epalmover 1 year ago
It’s not possible for everyone to know everything. Almost no one knows how to fix their &lt;insert technology here, cars for example&gt;, but at some point in history the opposite was true. Abstractions make technology available to the masses.<p>However, too much abstraction, on a long enough timeline, where does it end? The blob-humans in Wall-E, where no one knows anything and everything is done for us?<p>I’ve definitely felt in the last ~10 years of my career that the tools and libraries I use in development contain “too much magic”.
shartsover 1 year ago
OP doesn&#x27;t seem to realize that time is not infinite. Business demands require abstractions upon abstractions. If we&#x27;re going to go down that path we should also understand the biological aspect of how atoms beget cells beget organs and organism to brains and then thought when then translates into creating the logic gates and machine abstractions on which we utilize code to translate thoughts into programs.
mikewarotover 1 year ago
I think there needs to be a clearly defined difference here between professionals and experts.<p>You can be a professional in the field, but until you understand all the layers of abstraction, you aren&#x27;t an expert. You can&#x27;t diagnose those deep problems and fix them.<p>Professionals are paid to work in an area, and are thought to know enough not to be horribly dangerous.<p>Experts, on the other hand, are supposed to understand and have some competence in all the layers of complexity&#x2F;abstraction present.<p>It can take decades to reach expert status in a given area.<p>A few weeks ago I had occasion to talk with a working computer security professional, and asked him about data diodes[1], and often they are used... he&#x27;d never heard of them. Often here on HN, I make comments about capability based security[2], and everyone mistakes it for the permissions flags on smartphones. This tells me there aren&#x27;t many experts in the field of computer security.<p>The same is true in other fields, you can be a CNC machinist, but until you know about the Whitworth 3 plate method[3], you&#x27;re not an expert.<p>[1] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Unidirectional_network" rel="nofollow noreferrer">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Unidirectional_network</a><p>[2] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Capability-based_security" rel="nofollow noreferrer">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Capability-based_security</a><p>[3] <a href="https:&#x2F;&#x2F;www.wadeodesign.com&#x2F;flatness-3-plate-method.html" rel="nofollow noreferrer">https:&#x2F;&#x2F;www.wadeodesign.com&#x2F;flatness-3-plate-method.html</a>
评论 #37967572 未加载
评论 #37968743 未加载
评论 #37968801 未加载
Joel_Mckayover 1 year ago
There is no process that can prevent unknown failure modes.<p>Legacy software is almost always going to have issues, and some use complex frameworks knowing full well they have heavy maintenance burdens.<p>Saboteurs come from all skill levels and backgrounds. Integrating accountability in the development and deployment process is wise.<p>Most modern &quot;Hackers&quot; are just the sane old cons repurposing common auditing tools to check for known CVEs. Most others simply don&#x27;t care about some obscure website.<p>When you catch unknown people poking hardware in COLO data centers... the real problems start to become apparent.<p>With enough coffee and doughnuts anything is possible. =)
okaleniukover 1 year ago
&quot;Abstraction&quot; is a misnomer. This word has its useful meaning in math and art, but in software engineering, all what we call &quot;abstraction&quot; is automation in disguise. When you write a piece of &quot;abstract&quot; code, you only delegate writing the piece of concrete code to your compiler or run-time type deduction.<p>And as soon as this is clear, the attitude follows. Should you know how every aspect of your code is compiled or interpreted? Not really. Should you realize that every automation takes resources, creates accidental knowledge, and introduces its own probability of failure? Yes.
评论 #37966028 未加载
评论 #37966082 未加载
评论 #37965972 未加载
评论 #37966048 未加载
migguover 1 year ago
There will always be two types of people, people whose interest is in getting things done regardless of the underlying means to solve an issue, and people who get stuck in why it worked , and go down the rabbit hole for hours , to see why something worked (society sometimes call these people nerds).Sometimes I wish I could be the former and not the latter. The most important thing is to be aware that there is a black-box&#x2F;abstraction in front of you. Confucius once said: &quot;To know what you know and what you do not know, that is true knowledge.&quot;
hef19898over 1 year ago
&gt;&gt; A big percentage of so-called experts today only know how to configure some kind of hype-tool, but they understand nothing about how things work at the deeper level. This is a real challenge and a big problem for the future.<p>Oh, I couldn&#x27;t agree more! And it is not just tools ans systems, it is everything from power generation to infrastructure to society and economics.<p>When start to work like that, the DevSecOps example used in the article but the same happens basically everywhere else too, it spills over into everything else. And yes, this is dangerous in deed.
nunezover 1 year ago
Have we?<p>Power steering, for example, simplifies steering thanks to a small mountain of abstractions built up over the years. Doubly so if you have adjustable power steering (i.e. you can select &quot;sport&quot; steering vs &quot;comfort&quot; steering). <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Power_steering" rel="nofollow noreferrer">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Power_steering</a><p>Abstraction layering is annoying, but I think abstracting hard things infinitum ad nauseam is, overall, a good thing!
xnxover 1 year ago
We&#x27;re in the tail end of a Cambrian explosion of new languages and frameworks. That explosion is understandable giving the huge shifts from mainframes to desktops to web&#x2F;mobile&#x2F;cloud. The TIOBE Programming Community index shows today&#x27;s programming language use much less concentrated than it was 20 years ago. I expect a few dominant languages to re-emerge as the overall computing landscape stabilizes and LLMs make it low effort to translate entire systems between languages.
wslhover 1 year ago
The problem is not only the level of abstractions but the cross dependencies and assumptions across abstractions. For example, in higher level frameworks (e.g. React) you should firmly follow the rules in a way that makes assembler a toy language comparing to the stuff you need to know ahead.<p>The security issues expand beyond what is described in the article: you assume the security is solved by a stack of layers where is not. A single issue impacts everything doesn&#x27;t matter where in the stack it is.
xkcd1963over 1 year ago
I see two reasons for these possible pitfalls:<p>- newcomers to programming reinvent wheels because it is a natural way to learn. That is why we often have alternative frameworks&#x2F;CMS&#x2F;languages and so on<p>- there are many crooks in the industry who thank their earnings mainly to marketing and contacts. They are also the most vocal to deceipt clients and developers alike<p>The amount of data has increased over the decades, but programming and software hasn&#x27;t changed over 50 years. We face challenges to manage this workload.
aymar_99over 1 year ago
Yes and no, abstractions dumbed down things for common users. But there are and will always be a set of power users who get into the details. Power users are the ones who abstract in the first place and abstraction is not a one time process. Abstraction keeps evolving too, hence there are going to be power users who know the capabilities and support in the evolution. This is any how stream works let alone software. There is no need for everyone to be a power user.
mgaunardover 1 year ago
I couldn&#x27;t agree more.<p>People increasingly just know about using third-party technology instead of building their own.<p>One approach to fix this is to ban usage of third-party technology entirely.
rini17over 1 year ago
Right. So now, where to look for an organization that rewards and supports people who like to know how things work? Even if they are troublesome and grumpy.
spacecadetover 1 year ago
I think people generally think this stuff is &quot;easy&quot; and willingly ignore the layers of complexity.<p>Someone else pointed out surface level knowledge of power tool users... but thats always been the IT industry.<p>IMHO. You either have &quot;this&quot; ability or you don&#x27;t. There will always be a few people who can think and design complex systems and then everyone else who thinks its easy but only understands it surface level.
collsniover 1 year ago
Very good article, 100% whole heartedly agree on devsecops and most infosec team members only knowing specifics tools. We need users with ranges of background not isolated at layer 7.<p>Personally I think cloud is a pretty big abstraction layer, I prefer to work on non-cloud and hate proprietary terms and disconnected tooling for common problems.<p>To understand a solution admins need to understand how it works via code and config access.
jannesanover 1 year ago
While I agree with the sentiment, I also struggle to find the right approach of peeling back abstractions and understanding the lower levels. Learning how something works under the hood takes time and can be a big commitment. How to do decide when to look below the abstraction? I’m most often interested in how things work under the hood, but I can’t always dig deep, which does bother me.
rldjbpinover 1 year ago
i see many comments disregarding the take. while the arguments put forth may not be the strongest, but there is a point to this.<p>most people only chase the next thing you can build on top of what we have today. they only look back inside the layers when the current tech is not enough to achieve your goals out of the box.<p>a recent example i see is with the quantization and tinyml developments in machine learning. while it is easier than ever to create a model and to run it, the underlying architecture, previously only up to the people designing the frameworks, is now finally being looked at. only because the LLMs cannot fit inside the memory of elusive enterprise GPUs as easily as you&#x27;d like.<p>in no other instance would most people care about how numbers are stored in memory in the past 15-20 years in writing software. i think necessity is mother of invention, and that would probably still apply to dealing with abstractions going forward.
joeman1000over 1 year ago
What else can you do but look at files and code to figure out problems? And why use a monospace font for prose? I agree otherwise though, it can bite you in the arse if you don’t understand the layers of abstraction you’re dealing with. It’s the reason I sort of don’t like browser-based stuff. We already have a full OS stack for doing stuff, why add another on top of it?
评论 #37965600 未加载
rgblambdaover 1 year ago
&gt;Today programmers and system administrators no longer exist, instead we have DevOps and even DevSecOps, in which the industry is trying very hard to stuff every single task into the job description of a single individual.<p>Nice to know I&#x27;m not imagining this. Platform Engineers seem to be going extinct, with the Software Engineer taking over the role, and doing it badly.
jtodeover 1 year ago
Ludicrous abstraction story.<p>I was once managing a few large file servers, with bog standard users as well as devs using a pretty complex directory tree of &quot;assets&quot;.<p>There was a pretty high-up, specific directory level, which was where the ZFS file servers were given their different loads to handle. This was a directory level where new directories were created rarely (99% at the start of the project).<p>For reasons of money as well as speed, I asked that the server admins (ie. me) be the ones to create any further directories needed at that particular level. The head dev refused to entertain the idea of not being able to create directories anywhere he wanted at any time, and therefore, a new system was brought in at five-figure costs in order to make the file servers into a large abstracted blob that users never had to think about the complexities of managing.<p>I was given an opportunity to exit the IT dept and become a Python dev and I took it, shortly before that system came in, because it caused many problems which were much worse than needing to have an admin create a directory for you maybe once or twice, and the evident ignorance of everyone I spoke to at the vendor made it very clear ahead of time that it would.<p>This was not the only such massive expenditure on a toxic boondoggle in the name of &quot;simplicity&quot; that I witnessed.
lebuffonover 1 year ago
This situation was predicted in a sci-fi short-story that I read a very long time ago. Unfortunately I cannot remember the title nor the author.<p>It makes me wonder if we are a hitting a pyramid depth in tech that exceeds a practical limit for the human mind and life-span.<p>One solution is to get a better mind. Interesting coincidence that there are few in the works...
评论 #37967698 未加载
awill88over 1 year ago
As someone who learned computer science from tinkering with abstractions until I needed to go a level deeper with a subsequent education in it—-I think this article is inflammatory at best because they are attempting to assert themselves as a voice of a wise person, or, as an expert of how the future “is bleak”
arendtioover 1 year ago
I don&#x27;t think there is a maximum number of abstractions that is suitable. I think the value of an abstraction is defined by its quality.<p>Having many abstractions on top of each other leading to inefficiencies is a problem, but that is not a problem of the number of abstractions, but rather the poor composition.
gatinsamaover 1 year ago
Anyone reading this should read Steve Yegge&#x27;s &quot;Practical Magic&quot; post for a deeper dive.<p><a href="https:&#x2F;&#x2F;sites.google.com&#x2F;site&#x2F;steveyegge2&#x2F;practical-magic" rel="nofollow noreferrer">https:&#x2F;&#x2F;sites.google.com&#x2F;site&#x2F;steveyegge2&#x2F;practical-magic</a>
lucidguppyover 1 year ago
I would need to talk to the writer to make sure we&#x27;re talking about the same thing.<p>DevOps isn&#x27;t &quot;that guy does everything&quot;. DevOps and Dev ARE different. Dev&#x27;s product is what we sell to customers. DevOps product is the construction of a software development pipeline - from PR to production that ensures the policies and procedures of the company are enforced on the code base while setting up to code to function in the real world.<p>Dev designs the widgets.<p>DevOps designs the widget assembly line. DevOps job is to eliminate the Dev&#x27;s pain points around deployment, resources, security, and compliance.<p>I know this sounds like gate keeping - but you should question the leadership of any company that merges dev AND devops. Any one coder is cannot a complete team - there&#x27;s simply too much to know - unless you heavily rely on high level deployment products like AWS app server.<p>Now onto &quot;abstractions&quot;...<p>Your abstractions should focus on the domain language of your subject matter experts. The abstractions should, ideally, let a subject matter expert browse your code and shouldn&#x27;t be too confused or overwhelmed.<p>Abstractions around technology like web or gui frameworks should be decoupled from your company&#x27;s abstractions. Frameworks like that are just platforms that your product should plug into.<p>A gold standard for a company&#x27;s code is that it could be easily cut out of a framework and plopped into another environment. A web app one day could be adapted to become a batch job that&#x27;s run overnight somewhere else.<p>Every generation we have to relearn these principles because coders are pretty bad at teaching. There are few ways to write code well - compared to the myriad ways of writing code poorly.
clordover 1 year ago
I’ve seen what happens many times when the abstraction fails, and people don’t understand the guts. The people who know the abstraction replace it with something based in the concrete, but without the middle layer, and which resembles the abstraction.<p>The abstraction becomes real.
charles_fover 1 year ago
&gt; The developers knew how to put together a website and an API using a &quot;modern framework&quot;, but did not understand much of the coding of the framework itself<p>This example sounds like a bad choice of framework, or insufficiently skilled devs.<p>I don&#x27;t think the problem is that we have too many abstractions. Abstractions are useful, they allow people to focus on where they are different, avoid wasteful duplication of effort (when done right), and compensate for the non omniscence of everyone. They come with a cost, you need to know it.<p>There&#x27;s a clear tendency to just buy into new trends, anf that&#x27;s always been the case. Maybe the smaller scale of the industry back then made trends smaller and the choice more limited.<p>I think there&#x27;s clearly an issue with the lack of interest to understand what&#x27;s under the abstractions. Is it training, habit, culture, a change of who is a developer today? Don&#x27;t know.<p>It was also much harder to be a dev 15 or 20y ago without having to know at least some C and some system. Stuff seemed more brittle as well so you had to fiddle. Deployment was mostly manual and artisanal so you had to copy files over manually, run commands, shit like that. Honestly the piece of mind and safety that frequent deliveries and &quot;devops&quot; brought is so good that I&#x27;d find it comical if anyone would suggest to me to go back.<p>So I don&#x27;t think there&#x27;s really too many abstractions. I think that sometimes they&#x27;re the wrong choices, and sometimes people don&#x27;t care enough about what&#x27;s under their immediate interface
LudwigNagasenaover 1 year ago
&gt; It was clear, just by looking at how bad everything was performing, that something was wrong.<p>Meh, zoomers didn’t invent incompetence and slow, ugly software. Not everyone is cut out to write aerospace grade software and, thankfully for those people, not everyone needs it.
heywireover 1 year ago
Related: Jonathan Blow’s talk Preventing the Collapse of Civilization<p><a href="https:&#x2F;&#x2F;youtu.be&#x2F;ZSRHeXYDLko?si=zR7Lq2jSxexWUCra" rel="nofollow noreferrer">https:&#x2F;&#x2F;youtu.be&#x2F;ZSRHeXYDLko?si=zR7Lq2jSxexWUCra</a>
userbinatorover 1 year ago
Somewhat related article &quot;The resource leak bug of our civilization&quot;: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=8679471">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=8679471</a>
lifeisstillgoodover 1 year ago
And it&#x27;s very very hard to fight because &quot;Bob set up a foobar in a day and look it works!&quot; is not the same as &quot;we understand all the pieces and components and what they do behind foobar&quot;
dreamgliderover 1 year ago
Do you write code? Yes. What code, examples? I code HELM charts! :)<p>Awesome particle.
invigover 1 year ago
This is not just a problem in engineering. Read a news article. Talk to anyone about anything. The lifting that poorly defined abstractions are doing is toxic.
nickdothuttonover 1 year ago
I am grateful that I grew up in the 8-bit era of home computers where you had only the barest bones of an OS (until I discovered CP&#x2F;M and shareware).
stainablesteelover 1 year ago
agreed, dealing with things of this nature from within a scientific field where no one understands the complexities of the data analysis and simply trusts every oversimplified metric explained to them is quite concerning<p>the individuals deemed to be &quot;experts&quot; rely on closed source software to the point that the software is the real expert
gsaintjover 1 year ago
I got fired for following this exact advice and could never get back into software development since. Explain that shit.
Podgajskiover 1 year ago
Hmmm…is social media an abstraction of relationships? Or am I think about abstractions wrongly?
acdover 1 year ago
Sometime i just want to use old school copy code build binary to server and run it :).
anovikovover 1 year ago
Downside here, is that following this advice will usually mean they make less money.
revskillover 1 year ago
Without abstraction, you have to re-invent the boilerplates everytime, everywhere.
spandextwinsover 1 year ago
Networking is a huge abomination and needs to be built afresh from the ground up.
gherkinnnover 1 year ago
And nobody here knows how to raise a cow, milk it, and slaughter it. Neither can anyone make a fire in the rain, and god help us if the internet stops working. We’re so far from basic humaning that every generation needs to relearn how to change a baby.<p>Bleak stuff indeed.
ricardobayesover 1 year ago
I think there is a fundamental issue with the article and that&#x27;s the author stating devops or devsecops is someone taking care of both development and operations. That&#x27;s just not true.
m3kw9over 1 year ago
AI language programming is the ultimate abstraction
skybrianover 1 year ago
Yes, there are some people who don’t know how some things work. The conclusion that the “future seems bleak” doesn’t actually follow, though. Perhaps the author was already pessimistic?
diegocgover 1 year ago
This post misses a crucial step in its argumentation: trying to understand why these abstractions happen. Blaming it on some kind of &quot;techno-moral&quot; decay is not an explanation, it only turns the argument into some kind of arrogant self-reward post. It&#x27;s like when Plan9 fanboys argue about the lost &quot;purity&quot; of Unix.<p>The anecdote about these kind of security person is interesting, and it&#x27;s not hard to sympatize with him, but he is missing the point: The industry seems to need someone to run these kind of pre-made security tools. These jobs are not pointless (perhaps they would be if the people who actually &quot;know&quot; other abstraction layers didn&#x27;t create software that suck), they are solving some problem, people are working full time and getting paid for them. And the fact that they exist does not mean these jobs make sense or that the tasks they focus on are the right or the wrong abstraction.<p>&gt; What good does an abstraction do when it breaks and nobody any longer understands how the technology under the hood works?<p>Not many programmers know of a kernel works internally (processes are just another abstraction). Not many know how compilers work and translate high level code to machine instructions either (there is probably no person in the world who understand all the parts of LLVM&#x2F;GCC). The amount of programmers who know how CPU instructions translate to transistors is very, very rare.<p>Yet all these abstractions sort of work. People argued back in the day against programming in high level languages, nobody cares about these people, because the kind of problems that can be solved with high-level programming languages can&#x27;t really be solved with assembly. Abstractions don&#x27;t appear because companies are stupid, people are trying to solve problems with software and they need to get some concrete task done. Doing the quick hack does not mean that they are doing something wrong, it means that they are focusing into doing something right at another level. And if you can&#x27;t understand that, it&#x27;s _your_ fault.<p>Of course, plenty of times companies are doing stupid things, but that&#x27;s the nature of the problem, companies try to do different things, some of them succeed, some don&#x27;t, some succeed despite being horrible and some fail despite being brilliant on paper. So abstractions are created all the time, and there is a continuous dialectic between that abstraction and its usefulness, which is not measured by the opinion of other programmers, but by the success of the companies adopting and following these trends. For some people who knows a lot about systems programming and administration, it may feel stupid that these days we have people with cloud certificates who are in charge of &quot;orchestrating&quot; scalable and fault-tolerant platforms in the cloud, but know very little about how Linux systems work underneath. But it turns out that these people can get things working, even if they don&#x27;t do it as well as you would do, and that&#x27;s something that matters - it means that the abstraction sort of works, even if it leaks some times.<p>I guess it&#x27;s not easy to spend decades learning things only to wake up one day and realise that large parts of your knowledge has been abstracted out and automated (ie. made less relevant, and thus less valuable in the job markets). But that&#x27;s how things are in this field...
harryquachover 1 year ago
At the end of the day I need to pay my bills and if being an &quot;API Monkey&quot; is the way to do it so he it.<p>There is more to life than knowing everything about writing software.
throw156754228over 1 year ago
Some detail in the article would be nice.
ReptileManover 1 year ago
Children of the magenta all over again.
Unfrozen0688over 1 year ago
Nobody studying will read this advice.
throwaway689236over 1 year ago
They serve a purpose.
timkaover 1 year ago
Lawrence Dickson. Anyone?
Sprinterraover 1 year ago
Yup its good to know
onetimeuse92304over 1 year ago
I think there is one interesting angle to this problem.<p>I am someone who grew up with the technology, as the levels of abstractions were being added. I am now benefiting from all those accumulated decades of knowledge.<p>As the IT &#x2F; development world was changing, I had enormous privilege and comfort to learn the things at the pace they were happening. Being able to assimilate changes over long decades. Be a witness to the problems and logic behind all those new solutions. Understand how we come to have JavaScript and the browser mess we are in and so many other curious features of todays digital world.<p>I understand pretty much all of the layers of the computing from how CPUs achieve some of the things they are doing to bus protocols, to instructions, physical memory, low level OS internals, high level OS internals, virtual memory, userspace platform communication with OS, programming language runtimes and linking, shared libraries, IPC, networking, virtualization, etc.<p>The issue, as with any automation, is that new players on the scene (younger devs, devops, etc.) simply have no chance to learn the same things and go trough the same path.<p>For them, spending a decade working with a low level programming language before you jump into high level programming language is simply not an option.<p>We, people who really understand the technology that the world runs on, are a slowly dying breed. We are still here as tech leads, managers, directors, business owners. But there will be a point in time when we will go on retirement and there will be only precious few people who had perseverance to really understand all those things by diving into obscure, historical manuals.
评论 #37965881 未加载
评论 #37965516 未加载
评论 #37965900 未加载
评论 #37965604 未加载
评论 #37965980 未加载
评论 #37966858 未加载
评论 #37965477 未加载
评论 #37965880 未加载
评论 #37965415 未加载
评论 #37967358 未加载
评论 #37966252 未加载
评论 #37965998 未加载
评论 #37965732 未加载
评论 #37966517 未加载
评论 #37966632 未加载
评论 #37965536 未加载
评论 #37966175 未加载
评论 #37966078 未加载
评论 #37967183 未加载
评论 #37967859 未加载
评论 #37966461 未加载
评论 #37966977 未加载
评论 #37967030 未加载
评论 #37967571 未加载
评论 #37966137 未加载
评论 #37966116 未加载
评论 #37968593 未加载
评论 #37967593 未加载
评论 #37965660 未加载
评论 #37967534 未加载
评论 #37967150 未加载
评论 #37966754 未加载
评论 #37966894 未加载
评论 #37967291 未加载
评论 #37966039 未加载
评论 #37966886 未加载
评论 #37966354 未加载
评论 #37967346 未加载
评论 #37966907 未加载
评论 #37966956 未加载
评论 #37966359 未加载
评论 #37966809 未加载
评论 #37968357 未加载
评论 #37966470 未加载
EPWN3Dover 1 year ago
Here&#x27;s the tl;dr: &quot;Kids these days.&quot;
mrkeenover 1 year ago
I think a good first step towards improvement in this space is by separating the terms &#x27;abstraction&#x27; and &#x27;indirection&#x27;.<p>Programmers too often add indirections which don&#x27;t provide abstraction:<p><pre><code> * The programmer wants to POST an object to a web server. * The programmer also wants to think about it at the level of POSTing an object to a web server. * And yet the programmer creates an HttpClient.java and an AbstractClientManager.java an ClientManager.java. * These extra classes are just pointless indirection - not only do they not prevent the programmer from needing to reason about POSTs, but they actively make it harder to do so. </code></pre> In contrast, if you have a collection type (Set, History, Permissions) and want to treat it as a monoid, that&#x27;s a huge leap in abstraction, with only one level of indirection.
评论 #37965626 未加载
评论 #37965511 未加载
评论 #37965461 未加载
评论 #37966365 未加载
评论 #37968366 未加载
MyFirstSassover 1 year ago
As a 15+ years webdev my recent projects in the front-end are almost pure &quot;vanilla JS&quot; (Just JS) + Html, and CSS with only Petite Vue &#x2F; Alpine on top.<p>I find the modern Vue, React etc. stacks absolutely insufferably complex and prone to breaking in 1000 places each time you upgrade some package, or change som random thing in the already stupidly complex &quot;Tooling&#x2F;Build&quot; chains people are setting up by default.<p>And it&#x27;s because no one, not even experts in the field seem to understand 5% the stuff that is contained in these monster codebases.<p>I found myself using 90% of my time on this setup and tooling, and i&#x27;m pretty sure most devs do not need these.<p>I&#x27;m wondering if i can somehow pivot into making only these elegant products for customers. Have anyone done this as a solo dev, contracting or in an agency? Maybe make a &quot;frameworkless&quot; agency? Will hopefully save my sanity and my career.<p>I find the code much easier to read, the codebase is way smaller, and the app&#x27;s can do the same thing. You can always pull a library here and there if needed.<p>Also coding and putting together a project is suddenly fun again, and it seems most languages; CSS, JS etc. are now so mature you can do almost anything with them without the bloat.<p>And as a bonus you actually have time to understand the different underlying concepts like back in the day instead of using weeks in the issue trackers and playing tetris with dependencies.
评论 #37966913 未加载
评论 #37966882 未加载
评论 #37967829 未加载
评论 #37967179 未加载
评论 #37966850 未加载
评论 #37966665 未加载
评论 #37968362 未加载
loup-vaillantover 1 year ago
&gt; <i>Question everything. Especially things that don&#x27;t make any sense to you. Don&#x27;t just assume that someone else knows better - that&#x27;s how you quickly turn into a blind follower.</i><p>That’s what I do by default since I was a kid, and I can tell you the social pressure <i>not</i> to is significant. I recall an interview I did once, and one reason I failed it was &quot;questioning everything&quot;. It didn’t even felt like it, I was just asking questions about their system, it’s supposed to be basic curiosity. At my current job there’s this architect that explicitly asked me for continuous feedback, but now shows subtle signs that maybe I went a little too far.<p>Questioning everything gets results, not friends.
评论 #37966108 未加载
评论 #37965510 未加载
评论 #37965928 未加载
评论 #37965488 未加载
评论 #37968399 未加载
figassisover 1 year ago
One cause I&#x27;ve seen of this is the &quot;college is not needed to be a coder&quot; trend from the past few years (decade?). it is true that most of my skills were acquired after college, but there is some sort of global system understanding that you get from college (in my case computer+software+network engineering) where you can quickly narrow down potential sources of a problem, all the way down to say, the TCP&#x2F;IP stack, CPU architecture, memory management, how some code might be optimized incorrectly by the compiler. It also helps a lot in asking the right questions. If all you know is [latest framework&#x2F;language&#x2F;tool], there is a whole world around this that can bite you when circumstances stop being perfect. One superpower is looking at a marketing page for a tool and knowing within seconds what it can&#x27;t do and whether it would be a good fit for your use case, just by what is claimed on the page.<p>Regarding abstractions: I&#x27;ve sort of always ran away from languages that encourage it a lot. Java was one of them, where the entire OOP trend just fell flat to me even in college (I understood the benefits, but meh). The concept of dependency injection is another one, I think it was introduced in Javascript? Idk, I use it if the framework forces me to, but IMHO, it only makes sense when I&#x27;m the one building it. Define constructors that take interfaces and instantiate them explicitly with whatever implementations you want (ie. mocks vs real, etc). So that you understand everything that is happening.<p>My Biggest fear with frameworks (especially JS) is they are abstracted to such a level that I can&#x27;t hope to fix an issue in a reasonable amount of time without begging for help in forums or github bc I don&#x27;t understand even the concepts. What are effects? How does react work? How does Angular work? etc.
评论 #37967991 未加载
评论 #37967145 未加载
评论 #37966326 未加载
评论 #37966950 未加载
评论 #37968390 未加载
sunshine-oover 1 year ago
It is all about how much risk do we tolerate in the western world.<p>People are getting nervous because if a war with China would happen with a rapid de-globalization something akin to the &quot;1970s energy crisis&quot; would happen in the semiconductor and digital world.<p>Well price of our beloved computers and devices would probably need to go more than 10x and around 100x for things to get really interesting.<p>If this would happen, your cloud native scalable &amp; hyper convergent smart platform powered by AI would feel like a car that have been designed when oil was $15 a barrel. Not exactly what you need right now.<p>Company would seek the services and even surrender to the blog author like a life long addict seek help and realize he wants to live once he reached the bottom.<p>Until this happen, this is just an old man rant.
评论 #37968426 未加载
sitkackover 1 year ago
Abstractions are like tech debt. When you consume an abstraction, you also get all the klocs (thousands of lines of code) that it represents, they have a price. When you have multiple sources (as in suppliers) of that abstraction this greatly lessons the risk. As does have an abstraction which is total.<p>The post and the url reminds me of the Unix Hater&#x27;s Handbook. <a href="https:&#x2F;&#x2F;web.mit.edu&#x2F;~simsong&#x2F;www&#x2F;ugh.pdf" rel="nofollow noreferrer">https:&#x2F;&#x2F;web.mit.edu&#x2F;~simsong&#x2F;www&#x2F;ugh.pdf</a><p>The problem with the abstraction tower is not that it is a tower, but that it is square, when you can&#x27;t tell where you are relative to the abstractions above or the abstractions below, then your abstraction gradient is too small and you are just generating mush. We have too much mush.
评论 #37968727 未加载
评论 #37968784 未加载
sandworm101over 1 year ago
&gt;&gt; Some students today apparently don&#x27;t even know what files and folders are?<p>This isnt just coders. I work with people every day who do not understand directory structures. I blame &quot;cloud&quot; apps like o365. They dont understand that the human can dictate where a file is saved and stored. They just expect that the machine will save it somewhere according to the type of file, or that all files for a project will be in one big space defined by the UI interface for that project. But then i ask for them to send me a copy of a file for whatever reason. All they can do is attempt to send the file to me from withing the UI, only to another user within whatever app they are logged in to. They dont know how to move discreet files between discs or directories on thier own, or even that such things are possible.
评论 #37967899 未加载
评论 #37968430 未加载
johnklosover 1 year ago
As a systems administrator who has been doing this for a while, I can attest to this becoming more and more of a problem.<p>I&#x27;ve worked with CUDA programmers who weren&#x27;t aware of what &quot;architecture&quot; means in the context of computing until I asked them to consider running binary code meant for NVIDIA on AMD GPUs.<p>I&#x27;ve worked with network administrators who couldn&#x27;t conceive of the simple math behind something like single IP, 64k ports and approximate memory per entry in a NAT state table to figure out that it&#x27;s actually not impossible to have NAT states that persist indefinitely.<p>I&#x27;ve worked with people to whom I&#x27;ve had to explain that bits are bits, and just as in the audiophile world where there&#x27;s a huge amount of money and energy spent to try to convince people that pricey bits are somehow better than cheap bits, so unless you process them differently, they&#x27;re bits and are exactly the same.<p>There&#x27;s this tendency to believe and follow trends, even when there&#x27;e ample evidence of how these trends aren&#x27;t much more than marketing fluff and more often than not lead to dead ends. It&#x27;s fine if others want to believe the marketing fluff, but when they want me to change my workload to support something because it&#x27;s &quot;all the rage&quot;, I have to put it in terms they understand (&quot;You love Go? Great. Now what if I told you to use Rust because it&#x27;s all the rage, and I expect you to rewrite everything in Rust?&quot;)<p>It&#x27;s unfortunate that students aren&#x27;t taught more history of computing. If they were, they&#x27;d likely learn that computing is computing, and that things don&#x27;t really change that much, and that if you make and use things that aren&#x27;t different for gratuitous reasons, they&#x27;ll still be around and relevant years from now.
评论 #37967186 未加载
评论 #37967046 未加载
评论 #37968768 未加载
nologic01over 1 year ago
Software simply mirrors the development of modern society. Highly complex and relying on countless abstractions to tame that complexity and be able to operate.<p>This design is sort-of working under plain sailing conditions (lots of available resources, booming markets, peaceful cooperation). But it is very non-resilient under stress (subdued expectations, broken promises, resource scarcity, hostility and strife).<p>Remember the pandemic? It was painful lesson and we like to forget pain. But it was an instance of our abstractions failing at a global and systemic level. Broken supply chains, panic, implosion. Thankfully it wasn&#x27;t the worst kind of negative development but it shows that in the way we design essential pieces of the economy we are basically simply ignoring entirely plausible scenarios.<p>Now, how are we to respond to this momentous challenge? We can&#x27;t go back to some low-tech autarky. People cannot build and program their own silicon from ground up (though it would be really cool to be able to do it at least as a proof-of-concept).<p>The gist of the right approach seems to me is to make sure that abstractions are tethered. If you need dozens of pieces to be in place to deliver something, the combinatorial possibilities of some of them not being available grows exponentially. If you need the latest and most expensive gear to operate this means the long tail of humanity is left behind.<p>Another analogy might be the drastically different structures you can build out of carbon atoms. You can have graphite layers that peel off at the slightest pressure or you can have diamonds that are the hardest of them all. The difference is the more connected nature of the diamond lattice. The different abstractions should be really fitting together very tightly with strong bonds.<p>Don&#x27;t be like graphite, be like diamond :-)
评论 #37968407 未加载
granshawover 1 year ago
“Everything in the tech industry is driven with a very hardcore eye for profit and very little interest in anything else”<p>What is up with the discourse lately - of course it’s all about the profits - we’re talking about companies right not non-profits? How else are they going to pay you?<p>The whole “expecting companies to care about so many things” apart from profit seeking mindset is just bizarre to me
评论 #37968262 未加载
评论 #37968372 未加载
deadlettersover 1 year ago
Wow what a cool article I feel compelled to share my thoughts. &gt; 338 comments.<p>Nvm all good.
评论 #37968881 未加载
yieldcrvover 1 year ago
this is the kind of thing you say during an interview, get rejected and then wonder if you just experienced ageism instead of any introspection about your own rant
评论 #37965327 未加载
评论 #37965447 未加载
评论 #37965329 未加载
p-e-wover 1 year ago
Meh. Unless something very unexpected happens, human programmers aren&#x27;t going to be a thing anymore, starting in a not-too-far future. And programming AIs will neither have trouble understanding all those layers of abstraction, nor will they add additional ones, since their main purpose is to help limited human minds cope with the inherent complexity of problem domains.<p>So the only way the mounting complexity of software could create a &quot;bleak future&quot; would be if it somehow prevents us from bootstrapping those programming AIs, and I doubt that will be the case.
评论 #37968943 未加载
danielovichdkover 1 year ago
These posts are naive and reminds me more of an angry teenager being told the world is a tough place to be in.<p>Deal with it.<p>And if you really want to change shit around you, be damn sure to have lote of time and equal patience. And not least some understanding of how the human mind work in a professional capacity.<p>It&#x27;s too fucking easy for any of us to simply throw our hands up and say &quot;this is soo bad&quot;.<p>If you really want to understand something try to fucking change it and tell us how that went instead.<p>Everyone can tell stories about how bad shit is but very few can tell a story of the backbreaking commitment it takes to change shit.<p>Man up
irjustinover 1 year ago
Hard disagree.<p>If that&#x27;s the case building a house, farming, and everything in life if an abstraction of blind leading the blind.<p>The reason we are so great is because we could stand on the shoulders of the giants who came before.<p>This is especially true if software. I don&#x27;t need not understand assembly to get my business tested and in front of users.<p>To me this is the same argument that the genetic older generation uses to complain about a younger generation. They&#x27;ll destroy themselves if they don&#x27;t do it like I did.<p>Change is here. Adapt and learn like you used to. Do that and you&#x27;ll be fine.