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.