As I was going through problems from Rosalind Project I noticed that despite being a software engineer for years now, my knowledge of basic algorithms was not that good. I eventually find the solution but it takes me a bit more time than it should.
Daily job as a software engineer does not require you to write a tree-traversing algorithm from scratch. Usually, you just connect different block of code together and write some extra code to meet specific needs. I can count on my hand the times I had to write something more complicated than that.
But what you don't use, you lose. This applies to knowledge. When you don't use it, you forget it.
I don't write tree-traversing algorithms on a daily basis so even though I know the concepts, writing them takes me more time.
There is, however, a way to not lose that knowledge. It is very simple - learn them again. And sometime later, do it again. Learn, recall and reinforce. Learning is not only about acquiring a skill but also using it. The more a skill is used, the better we become.
The best people in their fields put some time to revisit the basic skills. Stephen R. Covey lists that as one of his 7 habits of highly effective people. It's all about constantly learning and relearning, and building solid foundations to build upon.
I am not ashamed that I have to go back and relearn implementing basic algorithms and brush off linear algebra and calculus. I'd be more ashamed if I haven't done that.