3 ms·
I guess my experience has been a bit different. Yeah I mean there are some really esoteric programming topics, like actually implementing compression algorithm
by skohan 6y ago
I guess my experience has been a bit different. Yeah I mean there are some really esoteric programming topics, like actually implementing compression algorithms, which I will probably never invest the time to learn. But in terms of "general programming", I feel like at some point over the past ten years, I developed a pretty clear mental model for how a line of high-level code maps to how the CPU/GPU is manipulating memory. I feel like once you start thinking in terms of hardware, the pace of revelations slows way down, and different programming topics mostly seem like different ways of doing the same thing.
- skrtskrt 6y agoAs someone without formal CS background, I definitely feel like understanding computer systems is the missing level in my knowledge: Computer architecture, how it's interacted with by the kernel & OS, compilers, and computer networking. It makes me want to go back and get a Master's in CS, focusing on those topics. But I am unsure if I would just be paying for a credential for something I could learn myself. On the other hand, it would be hard to beat the structure of good program.
- scruple 6y agoI also don't have a CS degree. The book CS:APP (Computer Systems: A Programmer's Perspective) is recommended on HN frequently. I picked up a copy about 4 years back and have slowly worked through it and my understanding of computer systems has grown tremendously. I spent the first 7 years of my career in embedded, I thought that I had a good handle on these topics already. I was wrong.
- skrtskrt 6y agoThanks, I will check it out! I recently started working through Network Programming in Rust, but it wasn't as low-level as I wanted. I am also planning to take a hack at the open source Illinois CS 241 book & course
- chubot 6y agoI don't agree with this... Just because you know how the CPU and GPU work, doesn't mean you can write say a search engine. Information retrieval is its own domain with its own body of knowledge that you don't understand if you haven't done it. Ditto for dozens of other subfields. (And subfields of subfields like AI.) Distributed programming is its own thing now. That's why there are so many HN articles on say Raft, eventual consistency, or CRDTs -- those weren't topics of interest when I went to school, etc. People are learning them on the job. In other words, there's really no such thing as a "programming" expert.
- skohan 6y agoOk I see what you mean, and I think my point was more that programming as a skill does seem to be something which can be saturated. However I do agree that that no one person can master all the domains of what you can do with programming. But I would also say, while it's probably impossible to really master more than a handful of domains in one lifetime, an awful lot of problems really can be reduced to inputs and outputs, and the more experience you get with solving diverse programming problems, the easier it is to penetrate some of these "advanced" sub-fields, at least at a superficial level, and solve a problem or two using tools from that domain.