50 Algoritmos que Todo Programador Deve Conhecer (Segunda Edição)
Um novo título da O’Reilly/Packt, “50 Algorithms Every Programmer Should Know”, provoca ceticismo tanto sobre a editora quanto sobre seu escopo, que vai de estruturas de dados básicas a handshakes TLS e tópicos de deep learning como LSTMs e LLMs. Muitos comentaristas argumentam que o livro é superficial e moldado mais pelo hype do que pela necessidade, contrastando-o com textos de algoritmos mais respeitados e cursos universitários gratuitos. A conversa se amplia para saber se a maioria dos engenheiros de software realmente precisa implementar tais algoritmos por conta própria, o valor de entendê-los conceitualmente versus depender de bibliotecas e o cansaço com alegações no estilo “todo programador deve conhecer”.
Percepção sobre a editora e a qualidade da edição
- Muitos comentaristas desconfiam da editora (Packt), descrevendo seu modelo como “quantidade acima de qualidade”, com fraca seleção de autores, pouca edição e forte dependência de táticas de resenha em troca de livro grátis.
- Vários relatam ter sido abordados como autores/revisores inexperientes, reforçando a sensação de baixo padrão editorial.
- Alguns citam exceções (alguns títulos de que gostam), mas, no geral, evitam livros da Packt.
- A co-listagem em oreilly.com é vista como algo que dilui a marca tradicionalmente mais forte da O’Reilly.
Escopo do livro, conteúdo e público-alvo
- O sumário é criticado por estar excessivamente abarrotado: CS básica (ordenação, big‑O, estruturas de dados), criptografia/TLS e uma grande parte de ML/deep learning (k‑means, RNNs, LSTMs, GRUs, LLMs, SciPy/Jupyter).
- Muitos veem isso como um “tudo que vende agora” superficial, em vez de um texto coeso sobre algoritmos; alguns chamam de “crise de identidade”, mais parecido com uma pesquisa de ML/IA.
- RNNs/GRUs/LLMs são amplamente vistos como irrelevantes para “todo programador”.
- Uma análise técnica do capítulo sobre o handshake TLS considera-o confuso e enganoso.
- Alguns sugerem que o verdadeiro público-alvo são pessoas treinando para LeetCode e entrevistas de programação.
Recursos alternativos
- Vários textos clássicos de algoritmos e anotações gratuitas online são recomendados como alternativas mais fortes, profundas ou mais focadas.
- Introduções mais acessíveis (por exemplo, livros no estilo “grokking”, tratamentos visuais/intuitivos) também são mencionadas de forma positiva.
Programadores precisam conhecer/implementar algoritmos?
Muitos programadores da indústria relatam quase nunca implementar algoritmos centrais por conta própria; usam estruturas de dados e rotinas de ordenação/busca de bibliotecas.
Ainda assim, muitos defendem que entender os conceitos (estruturas de dados, BFS/DFS, ordenação topológica, complexidade, localidade de memória) é crucial para:
- Escolher contêineres e bibliotecas apropriados.
- Depurar e otimizar desempenho.
- Reconhecer quando um problema corresponde a um algoritmo conhecido.
Outros rebatem que decorar big‑O e detalhes muitas vezes é “trivia”, e que o desempenho real vem de perfilamento e da compreensão de implementações concretas e de I/O.
Educação, entrevistas e “todo programador deve conhecer”
- Vários apontam uma lacuna entre entrevistas centradas em algoritmos e o trabalho cotidiano, onde essas habilidades raramente são usadas diretamente.
- Desenvolvedores autodidatas descrevem síndrome do impostor em relação a algoritmos “avançados”, mas percebem que, na maioria das vezes, precisam de consciência conceitual, não de implementação detalhada.
- O formato “N coisas que todo programador deve conhecer” é amplamente visto como clickbait, dogmático e gerador de ansiedade.