I see far more benefits in learning Design patterns and anti-patterns,
which are used a lot.
Dal tuo punto di vista questo è certamente vero e molte applicazioni là fuori non sono davvero pesanti nell'algoritmo. Ma una grande quantità di applicazioni richiede una buona conoscenza di algoritmi e strutture dati, ad esempio giochi o applicazioni logistiche. Queste applicazioni spesso richiedono il loro algoritmo per trovare la via più breve o riempire uno zaino, non puoi semplicemente usarne uno generico.
I know the web is filled with articles profoundly stating that "code
is algorithm", but when was the last time anyone wrote quicksort
algorithm in such an application?
Non è questo il punto. La maggior parte delle persone non ha intenzione di reimplementare quicksort di nuovo. Ma quicksort dimostra alcuni dei concetti più fondamentali della progettazione dell'algoritmo. Se comprendi quicksort puoi applicare questo tipo di conoscenza ad altri problemi. Come detto sopra, non tutti gli algoritmi possono essere usati genericamente. Nel mondo reale devi spesso creare algoritmi personalizzati per i tuoi problemi, che sono costruiti con le stesse tecniche che, ad esempio, usano quicksort.
E questo può essere fatto solo con una conoscenza fondamentale di quelle tecniche di algoritmo e strutture dati.
L'un giorno in cui incappi in un tale problema o un collo di bottiglia nelle prestazioni in qualche routine, sarai in grado di affrontarlo. E prima o poi ce ne sarà uno. Ho visto sviluppatori CRUD che poi hanno semplicemente detto "Non è possibile", quando, in effetti, è stato abbastanza facilmente risolvibile.