Hacker News new | ask | show | jobs
by 0xdeadbeefbabe 4522 days ago
Super duper high levels of abstraction are okay for beginners only because they don't know any better, and they are comfortable not knowing because they are beginners. It's fun to think that completionists exist, fun like believing in the tooth fairy or the little rat. Have you honestly finished auditing the linux kernel yet? w3schools punts nowadays and suggests using youtube for cross browser video support. High level software has some real downsides, but don't forget to switch from grunt to gulp.
2 comments

I've done a lot of web work on top of frameworks and have done work on the Linux kernel including a lot of time figuring out the nitty gritty of how the socket calls are implemented. I have a pretty good grip on everything in between because I enjoy knowing as much of the full picture as I can.

I am weak on the hardware level. I know more than most programmers I've worked with, but embarrassingly little when talking with actual hardware people. I've done a little work to rectify this, but have miles more to go and I'm not sure if I'll bother.

I don't consider myself extraordinary in this regard, so people who know the stack at some level of depth is not all that surprising. I take it as a given that there are many people who know what I know plus hardware. Completionists aren't unicorns (at least not for any sane definition of it. No one knows a modern operating system 100%, for instance).

That said, knowing what the kernel does with sockets is not very helpful for writing a web page. In my experience the vast majority of benefit one gets from being 'full-stack' is knowing one level deeper than whatever they are working on.

If you are writing a performant web server it absolutely helps to know what the kernel does and if you are writing a web language framework you probably ought to understand how the web servers you rely upon generally work (for instance, threading models, etc). You usually don't need to know two levels deep very well and almost never three levels deep. Usually the intervening abstractions are complete enough that those details eventually get papered over into something else.

> they are comfortable not knowing because they are beginners

I disliked web frameworks when I was a "beginner".

> It's fun to think that completionists exist, fun like believing in the tooth fairy or the little rat.

That's a bit nonsensical. Plenty of engineers feel strongly about having a solid understanding of the systems they work with.

> Plenty of engineers feel strongly about having a firm understanding of the systems they work with.

It's not a bad feeling, but feeling that way doesn't magically enable you hold all the nuances of the output of billions of lines of code in your head.

I've noticed that most engineers would rather rewrite than firmly understand.