Algoritmos de Ordenação
Existem aqueles que pensam que teoria de computação, complexidade, estruturas de dados e algoritmos são perda de tempo. É bem verdade que no dia a dia do desenvolvimento de aplicações webs comuns (basicamente CRUD), estes problemas são em geral irrelevantes. Além do mais, a grande maioria das linguagens já possui bibliotecas com implementações muito boas destes algoritmos e estruturas de dados.
Outros, como eu pensam que saber este tipo de coisas pode ser um diferencial, e que conhecimento nunca é demais. Sem contar que as vezes nos deparamos com problemas difíceis a serem resolvidos, e ter uma bagagem teórica (uma caixinha de maldades, como diria um ex professor da faculdade) abrangente pode ser o pulo do gato. Para aqueles que são como eu, e que querem revisar os algoritmos de ordenação, aconselho este site: http://linux.wku.edu/~lamonml/algor/sort/sort.html.

Eu acredito que essas coisas são úteis, mas para o desenvolvimento comercial “padrão”, um conhecimento superficial deles já dá e sobra.
Por outro lado, sinto muita, mas muita falta mesmo, das pessoas conhecerem técnicas e paradigmas de programação, coisas que podem fazer seus programas muito mais simples ou mais eficientes. Coisas como “closures”, “monads”, “coroutines”, “continuations”, …
Outra coisa são padrões. Vivemos reinventando a roda, presos a diagramas estáticos “quadradinho, bolinha, tracinho, seta”. Padrões comuns como “Strategy” e “Visitor” são praticamente ignorados, outros como “Abstract Factory” têm a importância exagerada (e abusada). Padrões fora do livro do GoF como “Collecting Parameters” ou os excelentes padrões do Brian Foote (”Selfish Class”, “Big Ball of Mud”) são desconhecidos.
Algoritmos são importantes? Com certeza. Mas saber “como” fazer é tão importante como “o que” fazer.