Live data from Hacker News

We have used too many levels of abstractions

unixsheikh.com

381–390 of 564 posts

Re: We have used too many levels of abstractions

#381

Earlier quoted context omitted.

You can actually see this with new frontend devs. They know only full SPA frameworks, they have never seen a dump of an HTTP message, headers and verbs are abstract things to them. Hell, many of them don't know you can have fully functional websites with zero JS, including payment, video, login, etc. I started to write an HTMX tutorial ( https://www.bitecode.dev/p/a-little-taste-of-htmx-part-1 ) because I noticed a l…

> they have never seen a dump of an HTTP message, headers and verbs are abstract things to them. When I was teaching programming, I had a fun party trick whenever we got to HTTP. I'd fire up netcat (in listen mode), then connect from a web browser and "serve" a website by hand. I'd show the students the HTTP request that came in, and just manually type out a simple HTTP response and they'd see it appear live in the b…

This reminds me of when I was a kid, and learning to write some C to "create games". At that time, things like functions were some vague and "magical" mechanisms that I had to adhere to because that is how things are. I didn't even think more about them, taking them as "holy"; except only the one weird thing that were varargs functions, which seemed to do something strange and confusing, putting a disturbing crack into that perfect picture, that I had trouble wrapping my head around. It was only when this kid started learning assembly, by virtue of a book with an amazingly baiting title "How to write computer viruses", that things fell into place, and suddenly understanding the stack made everything clear and straightforward (if no less amazing, through appreciating the brilliant genius of the procedure call protocols!).

And indeed, the first time opening a POP3 session to an email provider through telnet was also an amazing feeling; maybe even more visceral thanks to its "live coding"/immediate feedback aspect; but personally just a small bit less foundational. So, anyway, through this whole story, what I really wanted to say is - thank you for your service and approaching your teacher's post in a great way!

Re: We have used too many levels of abstractions

#382
post #229
post #206

Earlier quoted context omitted.

With all due respect, this is some elitist nonsense. Sure, a frontend dev who strictly works on that won’t know much about, say, the OS layer. But they don’t have to, it’s not part of their job in any way. There is no shortage of young people that work on areas that makes them require deep knowledge of many different layers of the stack, it is simply not necessary for every IT-related job. But one can absolutely pick…

> Sure, a frontend dev who strictly works on that won’t know much about, say, the OS layer. But they don’t have to, it’s not part of their job in any way. The HTTP protocol, HTML and vanilla JS are not "the OS layer", and yes, it's part of your job as a web developer to at least understand the basics of them. There are many so-called "frontend devs" nowadays who literally only know React, and if you asked them to cre…

There are people who suck at their jobs in every industry. My wider point is that the skills required for a good web developer is vastly different than, say, a compiler dev. The latter is not a “webdev who is a better developer”, they need much more business-knowledge, understanding what the client meant, predicting future requirements, etc.

This is an entirely new business domain, it’s not really trying to be the same.

Re: We have used too many levels of abstractions

#383

>> Some students today apparently don't even know what files and folders are? This isnt just coders. I work with people every day who do not understand directory structures. I blame "cloud" 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 o…

> I blame "cloud" apps like o365.

I blame Android (and to a lesser extent, iOS). In early Android, you had a filesystem resembling desktop Linux. Nowadays, apps' files are secreted away in a dir who-knows-where and other apps can't even see them, let alone read them—for good reason—but the same lack of privilege extends to the user via their file manager (if the OEM was generous enough to leave them one).

Compare this to a time when floppy disks (either kind) were ubiquitous, and while the average PC user then may have been less informed of how their machine worked than today, I assure you that they would have had a good grasp of moving files around. Routinely handling disks with your own two hands contributed to that, I feel.

Re: We have used too many levels of abstractions

#384

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? Today that type of concern would seem absurd, and we've gotten used to the idea that flying a plane…

Brilliant analogy and retort to a thesis that is profoundly uninteresting from the start. Thanks.

Re: We have used too many levels of abstractions

#385

Earlier quoted context omitted.

I have worked with interns and young devs just out of school who are sharp as tacks. I had an intern a few years ago, the first task we paired on was to figure out why our MySql connections from Qt were misbehaving. We stepped through the application code, the Qt code, found where it was failing, and ended up backporting a Qt patch from upstream to fix it. Yes, I gave him some guidance, but once he caught on he was a…

That's one in a hundred CS majors today in my experience.

That’s an underestimate, and is it really that unexpected given the huge interest in CS? Previously there was an implicit filter that only the most skilled people could make it into this new world, that was just being built. Now that it is built, and everyone wants to enter - of course the average quality will decline.

Re: We have used too many levels of abstractions

#386

Earlier quoted context omitted.

You can actually see this with new frontend devs. They know only full SPA frameworks, they have never seen a dump of an HTTP message, headers and verbs are abstract things to them. Hell, many of them don't know you can have fully functional websites with zero JS, including payment, video, login, etc. I started to write an HTMX tutorial ( https://www.bitecode.dev/p/a-little-taste-of-htmx-part-1 ) because I noticed a l…

I have worked with interns and young devs just out of school who are sharp as tacks. I had an intern a few years ago, the first task we paired on was to figure out why our MySql connections from Qt were misbehaving. We stepped through the application code, the Qt code, found where it was failing, and ended up backporting a Qt patch from upstream to fix it. Yes, I gave him some guidance, but once he caught on he was a…

There's a huge gap, though, between the boot camp methodology of essentially "here's a visual design or a set of fields, I'm going to pattern match that onto a single React component or backend endpoint that's isolated to a single file" vs. "I'm comfortable looking up functions 8 files deep into a codebase and maintaining a mental map of what data flows where."

Once you have the latter, either by having built such a codebase, having worked in one, or even having experience with puzzles or games requiring multi-step planning and understanding of the potential failure points at each step... it's absolutely transferable. But there are also a lot of people in our industry who have memorized interview questions and see their role as churning out components. And while arguably that's not a CS education, it's being called the same, and it does a disservice to those people's careers.

Re: We have used too many levels of abstractions

#387

Earlier quoted context omitted.

Unless you're two hundred years old, you joined the development of this technology in the middle. There was already decades of progress in electronics and telecommunications theory and engineering that everything you listed was built on top of. Your predecessors likely thought it was all newfangled abstractions that obscured more fundamental knowledge, and your successors will think the same about whatever world they…

I don't need to know assembly to write a web app - it's totally magic, and it's fine. However, if I am using an abstraction like an ORM without understanding what is happening with the database under the hood, or why it's getting slow all of a sudden, it is bound to bite me in the ass. I shudder to think of how much money and energy the world is burning every second just because of this one alone.

A client of mine is enduring growth induced ORM hell right now. The struggle and existential threat is real.

It can take days for them to even track an evil SQL query back to the actual code. There were fetch-one calls that literally carry a million rows back over the wire for that one returned entity. Indices get skipped due to the magic translation of a row.col.toUpper()=="STRING" into SQL.. when the db collation is case insensitive in the first place.

But hey, the devs don't need to know SQL, so there's that.

Re: We have used too many levels of abstractions

#388

One cause I've seen of this is the "college is not needed to be a coder" 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/IP stack, CPU…

While I also attended college, I sometimes wonder if a college degree is really needed to learn these general stuffs. I learn a lot while doing projects completely unrelated to schoolwork, before registering for the course. I still have to register for the course because of graduation requirements, but I just skipped all the lectures and only took the exams. There are nice materials and textbooks available, and I think anyone motivated enough can learn them without needing a college degree, and probably have a better understanding than most college graduates. I really hope that colleges can just allow students to take an exam and skip some of the courses, so to not waste everyone's time. This is 2023, not 2003, most people have access to internet and CS education is widely available. No need to force everyone to attend introductory courses that are not well designed anyway.

Regarding abstractions, I think the craziest thing is that frontend projects are probably the most complicated beasts that I have ever dealt with. I worked with compiler written in Python, embedded system projects where pointers are everywhere, numerical algorithms which are notoriously hard to debug, but still frontend projects still managed to be a lot more complicated than them. I generally stay away from frontend stuff recent years...

Re: We have used too many levels of abstractions

#389
post #206

Earlier quoted context omitted.

With all due respect, this is some elitist nonsense. Sure, a frontend dev who strictly works on that won’t know much about, say, the OS layer. But they don’t have to, it’s not part of their job in any way. There is no shortage of young people that work on areas that makes them require deep knowledge of many different layers of the stack, it is simply not necessary for every IT-related job. But one can absolutely pick…

I once worked with a back-end dev who didn't know what RAM was. He knew C# and ASP.NET but couldn't point to RAM on a motherboard or explain what it really did. About all he could describe it as was "temporary storage". Their lack of basic knowledge of how computers work really showed in the crap code they wrote. It was no wonder it was their code that ate up all the RAM on the server because they never put much thou…

> but couldn't point to RAM on a motherboard or explain what it really did.

To be fair, the last time I "opened up" a computer and changed its RAM was about 10-12 years ago, and since that time I've only worked on a Mac Mini and on a laptop meant that "opening up" computers became a thing of the past.

Re: We have used too many levels of abstractions

#390

Earlier quoted context omitted.

> We don’t need our software developers to know how our Cloud Networking and Virtual Networking works, we don’t need them to spin up resources and make various internal DNS and Firewall rules, we simply need them to focus on what they’re good at and then hand off the container to the operations department where people actually specialise in that knowledge. I am afraid that many businesses prefer the vision where the…

Agree that devs not needing to know this is how things should be, and that CTO/tech management however is not acting this way. It is basically idiotic to me, as a highly paid senior application dev.. that they basically want me to spend any cycles on stuff that would ordinarily be done by someone making 1/5th my TC. If I can do it more than 5x as fast/efficiently, sure, but I don't. IaC is something I worry about at…

Staff SRE here: I comfortably exceed your TC by a factor likely approaching 2.0 doing harder shit than your whole team combined. That’s nothing against you, only that you don’t really know what you’re talking about here. I can safely conclude that because 20% of your app dev TC is not in any ops in the US, particularly not DevOps-school, not even “legacy-style” SA; hospital SA, for example, used to be a high six-figure, pensioned gig, until we commoditized ops as a concept in our reinventions and pushed everyone to AWS.

Hint: I wrote operating systems for fun before becoming an SRE. Imagine how much fun I have explaining context switches and CPU cache invalidation and their implications on their app’s performance, to application developers who consume frameworks and look down on my salary! Building a distributed computer at scale is much, much, much harder than your Linode tutorial expectations of what ops does.

Native software is mostly dead, so operations is software engineering now, at least those parts of software engineering you folks threw out when Docker came along and turn your nose up at, and I make more money every year cleaning up the low-hanging fruit y’all leave around, so…

Post reply on HN