4 ms·
What if? While I’d love to really know how computers work at this level of depth, I can’t help but feel like it’s a colossal waste of time these days if you alr
by xwdv 6y ago
What if? While I’d love to really know how computers work at this level of depth, I can’t help but feel like it’s a colossal waste of time these days if you already have other sharply tuned high level programming skills.
The ROI isn’t great, the time you spend learning this is time you could have spent going deeper into your chosen craft and becoming even more masterful.
By the time you do learn a dangerous level of assembly and reverse engineering knowledge, you’ll still have to fight for entry level gigs to get in the industry unless you’re really good at finding niche and high paying work... meanwhile people still want to pay you six figures+ for your decade or more of experience writing everyday software at scale.
Alas, where as it once seemed like anything was possible, as I get older I come to realize the best use of my time is to further perfect the things I already know how to do well, so that one day I can truly become a sagacious master, or at the very least not fall behind my peers and become “outdated”.
Learning opportunities like this are inspiring, but ultimately just a passing curiosity. I hope someone young finds it well.
- libraryofbabel 6y agoAgree. Yes, it’s extremely interesting. I look back fondly on my youthful hours/days/weeks spent tinkering with assembly. And yet. To a junior dev who asked me for advice on this stuff today, I’d just say read Code: The Hidden Language of Computer Hardware and Software, and if you like that then work through Nand to Tetris, and then go back to whatever you need for you day job.
- the_only_law 6y agoI've tried to deep dive the modern PC a few times before and I always end up giving up because it quickly becomes a proprietary and undocumented minefield.
- SV_BubbleTime 6y agoOpposite for me. I’m a CE and need to know exactly this stuff. What I don’t need to know, and don’t at all, is how web APIs really work, what a kubernetes is, there is something called Elixir I think and it may or may not be related to some Etherium not-money, and have you heard about elastic searches? Because I haven’t. But I do need to know extremely tight programming for tiny microcontrollers, how many cycles per instruction this or that will take, when pipelines get flushed, device drivers, and datasheets and silicon erratas. If you deal in higher level stuff, you likely use more ram for a text field than I may have on my entire chip.
- xwdv 6y agoThis isn't 1991. The only reason I don't use less RAM for a text field is because it doesn't fucking matter, RAM is cheap and when you're building web applications your user is probably not going to run out of it, it's not even a thought. RAM sitting around doing nothing is a waste of money, might as well put it to use.
- SV_BubbleTime 6y agoI have 4KB of ram on a brand new microcontroller I’m developing for. No, ram is not cheap. PC ram is cheap. We don’t all program for PCs.
- xwdv 6y agoPeople who program for PCs need not concern themselves with the needs of microcontrollers.
- _____s 6y agoYeah, although I think understanding how computers work at a basic level (the components of a CPU, what instructions are, caches, etc.) has a pretty good ROI because it makes it easy to understand some concepts at a higher level (concurrency for example), understand why some things work a certain way, think about some common performance optimisations, tradeoffs, etc. I think that's true of most things—you don't need to (and likely cannot) know everything in real depth, but having some knowledge tells you where to look, what to look for, etc.
- xwdv 6y agoA good blog post can probably explain most of the important bits of those things without investing so much time.
- xkcd-sucks 6y agoThis is all totally correct, but why not transition into management and get even more money? Dealing with people is more future-proof than any computer programming
- deleted 6y ago[deleted]
- ganzuul 6y agoThe CPU / RAM bottleneck isn't getting any faster. Latency is actually increasing with newer versions of DDR. Most of your CPU time is spent waiting on memory. Compilers are hard-pressed to make you choose efficient data-structures. You just need to know the implementation details to get a responsive user experience.