Because it is normal.
The notion that you recall everything from a random class you took some semester years ago, and that it won't ever leave your memory, is not realistic nor grounded on reality.
Furthermore, "fundamentals" don't mean the same for all people. Most developers will go through their entire career without implementing a single data structure or write a single pet OS or put together a single parser. They will however have to handle OO programming and software architecture and concurrent programming.
I guess that the definition of "fundamentals" is tied to what you need to do to perform on your every day life, and that's why absurd things like interviewing candidates based on data structures and ask stuff like what's placement new in C++ is a complete waste of time and effort to assess how a candidate will perform.
I am curious, do you enjoy your work? Considering that even if you do not have to 'use' any knowledge of how your 'system' is built, how do you resolve problems in your 'system'? Even then, what is is fun of not knowing what you are actually doing?
It amazes me.
It’s pretty normal for people to forget knowledge they’re not using. Do you remember the physics, chemistry, etc fundamentals that you learned in high school/college if you haven’t been using them?
The average software engineer does not need to remember compiler design, digital logic, esoteric datastructures etc to do their job well. If people are forgetting "fundementals" (of which I would not classify specialised subjects such as compiler design), then it's because they don't need it for the job they're doing.
Although I do agree that Computer Science theory is definitely important and knowing it is better than not. Sometimes a project your working on would benefit from knowledge of datastructures, cache locality, etc, and that makes the years of academia worth it.
It is unpleasant for you to be on the other is of this argument? May be that is.
I am wondering why you had a prenatious tone.
Some people manage to use that knowledge to bootstrap an understanding of the software ecosystem they find themselves in, and others really struggle with it and flail around. Then some other people manage to bootstrap these things from a biology degree or art history degree (or no degree at all)... somehow. I'm not entirely sure what correlates with success on that front actually.
If anyone has idea on ways to design a revision schedule, please help me. Thank you in advance!
CS topics are too interesting to forget. I always find fundamentals are useful to take good decisions in my work.
Guess what? I don't speak much my language for straight 15 yrs. But am still able to enjoy books written in that language, I can speak on phone fluently.
You're right though, we should hang on to the fundamentals to make adapting to new tech easier.
Responses in this post is changing my perception. No wonder, recruiting is hard.
I have found a knowlge of OS, computer organizaton, digital logic, networking, compiler design are crucial. If you are into datascience or ML, math is absolutely essential. I don't know why so many people think forgetting fundamental is normal.