Подобный принцип я использую в своей работе. Например, недавно мне нужно было перевести выражения из инфиксной формы записи, удобной для человека (2 + 2), в префиксную форму, удобную для компьютера (+ 2 2). Я просто знал, что есть такие формы, но я не помнил алгоритм перевода из одной в другую. Поэтому я просто загуглил его, изучил, понял, что мне он не совсем подходит, и адаптировал его для построения синтаксического дерева. Да, я сейчас просто написал разные сложные слова, чтобы вы считали, что я шарю, но я еще напишу об инфиксной, префиксной и постфиксной формах в одном из следующих постов, и вы тогда тоже будете шарить.
не нужно знать алгоритмы наизусть, но нужно знать, что они есть и какие у них границы применимости.Я бы сказал по другому: программисту нужно знать основы алгоритмизации чтобы до написания кода и применения конкретных инструментов пошагово представлять как оно должно работать в итоге.
Это безусловно, понимание алгоритмов нужно. Но вот нужно ли учить существующие алгоритмы просто так? Нужно ли читать Кормена или Кнута (все 4 тома), чтобы знать как устроена быстрая сортировка, поиск остова графа или разворот связного списка?
С одной стороны, надо бы знать хотя бы основы, чтобы не изобретать велосипеды.
С другой - если на собеседовании спрашивают про алгоритм быстрой сортировки, я бы задал встречный вопрос - зачем им это нужно и как часто они пишут собственные реализации алгоритмов.