upvote
"tcp" can take roughly 3-4 weeks of heads-down dedicated study to have some reasonable familiarity with. Same is true with most of the other concepts. Being able to speak with expertise on that list of topics is 3-4 years of really focused study and work.

I think what happens is that people often have passing familiarity with a word or topic and presume knowledge, and years (decades) later they realize they knew almost nothing.

I will say that Mathematics is different (for me at least) because unlike the infrastructure computing concepts (IETF type, not IEEE)- which mostly require studying, lab work, and some coding to get your hands dirty - advanced math is just ... really hard. There are IQ issues at play.

Obviously a lot of computing turns out to be mathematics - so there is clearly convergence/overlap as well...

reply
You could get a surface level understanding of TCP, or 99% of topic areas in computing, in less than 4 weeks of study. You could not get a surface level understanding of literally any of the maths in the link in less than 4 weeks of study.

The vast majority of what computers do just isn't that complex. I'm not saying it isn't "complex" just that any reasonably smart person can understand how a computer works and still have other hobbies, basically no one can understand phd level mathematics without dedicating their entire lives to it.

reply
This is not true, 99% is very exaggerated claim, but yeah you can learn 50-60% of the field at a surface level in months rather than years.

But you can have a surface level understanding of mathematical topics as well, ofc some topics might require deeper understanding, but that's true for both.

Any claims of being able to learn 99% of computing in a just 4 weeks even at surface level, is greatly underestimating your own knowledge built over the years perhaps, or perhaps underestimating your own ignorance.

reply
The claim isn’t knowing 99% of the field but that 99% of topics are ones you could do a quick-and-dirty crash course and come out with some understanding.
reply
Definitely a lot of people have very surface level understanding of tcp and computer science concepts.

I have had folks tell me cache is just cache in actual interviews. When I have asked them to explain the concept to me, but even beyond that I feel like we tend to think less of our own knowledge of topics once we have acquired it.

Especially ones acquired over years, alongside other work.

reply
As a counterpoint, i've worked with enough math PhD's over my career who couldn't wrap their head intuitively around many concepts from software engineering, while others had no problems in doing so even from folks without any stem background. We often undererstimate how much field knowledge we aquire over the years and overestimate how easy it is for others to catch up.
reply
I think one of the key differences is that math is abstract whereas CS is relatively concrete.

CS examples are often easy to picture and understand the motivation for. You can use tools to visualize or play around with them and test them.

Math gets abstract so fast you have to spend a week of research to even understand the problem statement. The the motivations themselves can be completely unclear until you have a lot of context.

I majored in math (B.S.) and upper level math is completely foreign to me.

reply
I think so is upper level CS, there are fields in CS that are foreign to me too, there is a lot of depth in CS, computing is a very deep field for instance ML research although may seem simple isn't quite so intuition based as people make it out to be. Similarly there are dozens of topics where sophisticated research happens where we don't interact with at all as regular software developers.

Every slice has so much depth to it, in Maths it all seems like all of it is required at once but in computing it feels like so little is needed to get started which I honestly feel like is failure of our modern education systems.

But yes Computers being so easily accessible and compilers, documentation and libraries have made computer science so easy to get started with.

Imagine having to implement your own network layer to communicate with someone, you would have had to understand ip, tcp, network layer to an extent like http and etc. and then you finally would have been able to communicate.

In maths that's our reality for a lot of the field, there aren't good libraries, interfaces to help skip the unnecessary details. Hopefully AI might solve it I don't know though. It's fun to hope for it.

reply
Again, you are underestimating how much effort it takes to understand how an 8086 CPU works. There are a lot of foundational concepts that you are simply assuming the person already understands. That may be a reasonable assumption for a CS undergraduate, but the average person does not understand binary arithmetic, registers, memory addressing, instruction execution, calling conventions, or even what a CPU is doing at a meaningful level to even start to understand 8086.

Also, understanding an 8086 CPU is not even remotely comparable to the level of mathematics Terence Tao was discussing above. The 8086 is a relatively basic and concrete topic. You can build a workable mental model of it from a finite instruction set, a handful of registers, and a reasonably straightforward memory model.

From my perspective folks here on HN and in CS often think they should somehow be able to understand advanced mathematics papers at a glance, merely because they are good at basics of programming or computer science (8086). That is not how it works. Most mathematics is not inherently much harder than computer science; both fields require you to accumulate a large amount of foundational knowledge before advanced material becomes comprehensible.

There is an enormous amount of computer science that most programmers are completely unfamiliar with, especially within academic CS: programming-language theory, type theory, formal semantics, compiler theory, algorithmic research, complexity theory, distributed computing theory, verification, cryptography, computational geometry, numerical methods, and so on. Being proficient in one narrow area does not automatically give you the prerequisites for another.

A web developer would not be expected to casually understand a research paper on type theory or approximation algorithms without first learning the relevant notation, terminology, and foundational results. Mathematics is no different. The feeling that mathematical writing is uniquely impenetrable mostly comes from encountering it without the years of accumulated context that mathematicians have silently built-up.

I can show you a paper about an advanced algorithms or chip design, that is large made up of fundamental cs concepts and general physics and even you likely someone with pretty in-depth understanding of CS would find hard. There are orthogonal subjects, for instance my mathematician friends things I am insane reading so much about weird computing topics, and I find his research in some weird number theory thing completely mind-bending.

Try and explain to a lay friend how registers & isa works in-depth with all the details not a hypothetical higher level model so that they can understand the nuance of looking at assembly, limit it to 8086 perhaps, it will take significantly longer than a weekend.

Ofc Terence Tao and his level of intelligence is beyond me, I wouldn't compare but general advanced mathematics is not something folks here couldn't pick up if they actually tried to work on it, just give it a shot (though I would recommend don't start with advanced topics build up slowly I think most people can understand most maths papers even the bleeding edge ones within a few months of serious self-study, and won't even feel that it's after a few years, compare that to the time spent learning software and computing 6-8 hours a days for several years)...

reply
> There is an enormous amount of computer science that most programmers are completely unfamiliar with, especially within academic CS: programming-language theory, type theory, formal semantics, compiler theory, algorithmic research, complexity theory, distributed computing theory, verification, cryptography, computational geometry, numerical methods, and so on. Being proficient in one narrow area does not automatically give you the prerequisites for another.

And the difficult part of all those areas of computing is the mathematics part. Which I think is what I am arguing, mathematics is a fundamentally different type of "difficult" to any other subject.

reply