In a famous experiment, monkeys were sprayed with water whenever they reached for bananas. As new monkeys were introduced one by one, the existing group would stop them from taking the bananas to avoid getting sprayed. Each new monkey learned not to touch the bananas without experiencing the spray themselves. Eventually, all original monkeys were replaced, resulting in a group that enforced a rule they didn't understand the reason for.
If you're studying computer science, you've probably heard of LeetCode - the platform where developers solve programming problems to prepare for technical interviews. The common advice you'll hear is along the lines of "Complete 150 medium problems before your next interview" or "Make sure you master DFS, BFS, dynamic programming, and graph algorithms!"
I've observed many students spending countless hours "grinding" LeetCode problems, which often amounts to merely memorizing solutions. Yet, when faced with algorithmic questions in actual interviews, they still struggle and feel disappointed with their performance. Their typical response? To double down on memorizing more problems or working through various "curated" lists that supposedly teach fundamental concepts better.