Qual é o livro mais influente que todo programador deveria ler?[fechado]

StackOverflow https://stackoverflow.com/questions/1711

  •  08-06-2019
  •  | 
  •  

Pergunta

Se você pudesse voltar no tempo e dizer a si mesmo para ler um livro específico no início de sua carreira como desenvolvedor, qual livro seria?

Espero que esta lista seja variada e cubra uma ampla gama de coisas.

Procurar: Use a caixa de pesquisa no canto superior direito.Para pesquisar as respostas da pergunta atual, use inquestion:this.Por exemplo:

inquestion:this "Code Complete"

Nenhuma solução correta

Outras dicas

  • Código completo (2ª edição) por Steve McConnell
  • O programador pragmático
  • Estrutura e Interpretação de Programas de Computador
  • A linguagem de programação C por Kernighan e Ritchie
  • Introdução aos Algoritmos por Cormen, Leiserson, Rivest & Stein
  • Padrões de design pela Gangue dos Quatro
  • Reestruturação:Melhorando o design do código existente
  • O Mês do Homem Mítico
  • A arte da programação de computadores por Donald Knuth
  • Compiladores:Princípios, Técnicas e Ferramentas por Alfredo V.Aho, Ravi Sethi e Jeffrey D.Ullman
  • Gödel, Escher, Bach por Douglas Hofstadter
  • Código Limpo:Um manual de artesanato de software ágil por Roberto C.Martinho
  • C++ eficaz
  • C++ mais eficaz
  • CÓDIGO por Charles Petzold
  • Pérolas de programação por Jon Bentley
  • Trabalhando de forma eficaz com código legado por Michael C.Penas
  • Pessoas por Demarco e Lister
  • Codificadores no trabalho por Peter Seibel
  • Certamente você está brincando, Sr.Feyman!
  • Java eficaz 2ª edição
  • Padrões de arquitetura de aplicativos empresariais por Martin Fowler
  • O Pequeno Conspirador
  • O planejador experiente
  • Guia (comovente) do Why para Ruby
  • Os presos estão administrando o asilo:Por que os produtos de alta tecnologia nos enlouquecem e como restaurar a sanidade
  • A arte da programação Unix
  • Desenvolvimento orientado a testes:Por exemplo por Kent Beck
  • Práticas de um desenvolvedor ágil
  • Não me faça pensar
  • Desenvolvimento ágil de software, princípios, padrões e práticas por Roberto C.Martinho
  • Projetos baseados em domínio por Eric Evans
  • O design das coisas cotidianas por Donald Norman
  • Design C++ moderno por Andrei Alexandrescu
  • Melhor escrita de software I por Joel Spolsky
  • A prática da programação por Kernighan e Pike
  • Pensamento e aprendizagem pragmáticos:Refatore seu wetware por Andy Hunt
  • Estimativa de software:Desmistificando a Arte Negra por Steve McConnel
  • O programador apaixonado (meu trabalho foi para a Índia) por Chad Fowler
  • Hackers:Heróis da Revolução da Computação
  • Algoritmos + Estruturas de Dados = Programas
  • Escrevendo código sólido
  • JavaScript – as partes boas
  • Caindo na real por 37 sinais
  • Fundamentos da Programação por Karl Seguin
  • Computação Gráfica:Princípios e Prática em C (2ª Edição)
  • Pensando em Java por Bruce Eckel
  • Os elementos dos sistemas de computação
  • Refatorando para Padrões por Joshua Kerievsky
  • Sistemas operacionais modernos por André S.Tanenbaum
  • O Turing Anotado
  • Coisas que nos tornam inteligentes por Donald Norman
  • A maneira atemporal de construir por Christopher Alexander
  • O Prazo:Um romance sobre gerenciamento de projetos por Tom DeMarco
  • A linguagem de programação C++ (3ª edição) por Stroustrup
  • Padrões de arquitetura de aplicativos empresariais
  • Sistemas de Computador – A Perspectiva de um Programador
  • Princípios, padrões e práticas ágeis em C# por Roberto C.Martinho
  • Crescente software orientado a objetos, guiado por testes
  • Diretrizes de Design de Estrutura por Brad Abrams
  • Pensamento de objeto pelo Dr.David Oeste
  • Programação Avançada no Ambiente UNIX por W.Richard Stevens
  • Hackers e Pintores:Grandes ideias da era da informática
  • A alma de uma nova máquina por Tracy Kidder
  • CLR via C# por Jeffrey Richter
  • A maneira atemporal de construir por Christopher Alexander
  • Padrões de projeto em C# por Steve Metsker
  • Alice no Pais das Maravilhas por Lewis Carol
  • Zen e a arte da manutenção de motocicletas por Roberto M.Pirsig
  • Sobre Face - Os Fundamentos do Design de Interação
  • Aí vem todo mundo:O poder de organizar sem organizações por Clay Shirky
  • O Tao da Programação
  • Beleza Computacional da Natureza
  • Escrevendo código sólido por Steve Maguire
  • Guia de Philip e Alex para publicação na Web
  • Análise e design orientado a objetos com aplicativos por Grady Booch
  • Java eficaz por Joshua Bloch
  • Computabilidade por N.J.Cutland
  • Mestres da programação
  • O Tao Te Ching
  • O programador produtivo
  • A arte do engano por Kevin Mitnick
  • O programador de carreira:Táticas de Guerrilha para um Mundo Imperfeito por Christopher Duncan
  • Paradigmas de Programação de Inteligência Artificial:Estudos de caso em Common Lisp
  • Mestres da Perdição
  • Teste de unidade pragmático em C# com NUnit por Andy Hunt e Dave Thomas com Matt Hargett
  • Como resolver isso por George Polya
  • O Alquimista por Paulo Coelho
  • Conversa pequena-80:A linguagem e sua implementação
  • Escrevendo código seguro (2ª edição) por Michael Howard
  • Introdução à Programação Funcional por Philip Wadler e Richard Bird
  • Sem insetos! por David Thielen
  • Retrabalho por Jason Freid e DHH
  • JUnit em ação

K&R

@Juan:Eu conheço Juan, eu sei - mas há algumas coisas que só podem ser aprendidas quando você realmente se dedica à tarefa que tem em mãos.Falar em ideais abstratos o dia todo simplesmente transforma você em um acadêmico.É na aplicação do abstrato que grocamos verdadeiramente a razão de sua existência.:P

@Keith:Ótima menção a "The Inmates are Running the Asylum", de Alan Cooper - uma revelação, com certeza, qualquer desenvolvedor que trabalhou comigo desde que li esse livro me ouviu mencionar as ideias que ele defende.+1

Matemática discreta para cientistas da computação http://ecx.images-amazon.com/images/I/51HCJ5R42KL._SL500_BO2,204,203,200_AA219_PIsitb-sticker-dp-arrow,TopRight,-24,-23_SH20_OU02_.jpg

Matemática discreta para cientistas da computação por J. K.Confiança.

Embora isso não ensine programação, ensina matemática fundamental que todo programador deveria saber.Você pode se lembrar dessas coisas da universidade, mas, na verdade, fazer lógica de predicados melhorará suas habilidades de programação. Você precisa aprender Teoria dos Conjuntos se quiser programar usando coleções.

Realmente há muitas informações interessantes aqui que podem fazer você pensar sobre os problemas de diferentes maneiras.É útil ter, apenas para pegar de vez em quando para aprender algo novo.

Sistemática:Como funcionam os sistemas e especialmente como eles falham.Use-o barato.Mas você pode não entender o humor até ter trabalhado em alguns projetos fracassados.

A beleza do livro é o ano dos direitos autorais.

Provavelmente a "lei" mais profunda apresentada no livro:

O Teorema Fundamental do Modo de Falha (FFT):Sistemas complexos geralmente operam em modo de falha.

A ideia é que existem partes com falha em qualquer software que são mascaradas por falhas em outras partes ou por validações em outras partes.Veja um exemplo do mundo real no Máquina de radiação Therac-25, cujas falhas de software foram mascaradas por dispositivos de segurança contra falhas de hardware.Quando as proteções contra falhas de hardware foram removidas, a condição de corrida de software que passou despercebida durante todos esses anos resultou na morte da máquina 3 pessoas.

Um dos meus favoritos pessoais é Delícia de Hacker, porque era tão divertido de ler quanto educativo.

Espero que a segunda edição seja lançada em breve!

Programação Extrema Explicada:Abrace a mudança por Kent Beck.Embora eu não defenda uma abordagem radical do XP ou da estrada no desenvolvimento de software, gostaria de ter sido apresentado aos princípios deste livro muito mais cedo em minha carreira.Testes unitários, refatoração, simplicidade, integração contínua, custo/tempo/qualidade/escopo - tudo isso mudou a maneira como eu encarava o desenvolvimento.Antes do Agile, tudo girava em torno do depurador e do medo de solicitações de mudança.Depois do Agile, esses demônios não eram tão grandes.

Tipos e linguagens de programação por Benjamin C Pierce para uma compreensão completa dos fundamentos das linguagens de programação.

Conceitos de sistema de banco de dados é um dos melhores livros que você pode ler sobre a compreensão dos bons princípios de design de banco de dados.

alt text

A prática da programação.Por Brian W.Kernighan, Rob Pike.

O estilo mostrado aqui é excelente - o código fala por si e todo o livro segue o princípio KISS.Pessoalmente, não é o meu idioma preferido, mas ainda é influente para mim.

Programação desde o início. É grátis na internet.Este livro me ensinou AT&T asm.É muito fácil de ler.

alt text

Paradigmas de Programação de Inteligência Artificial:Estudos de caso em Common Lisp por Peter Norvig

enter image description here

Comecei a ler porque queria aprender Common Lisp.Quando estava na metade do caminho, percebi que este era o melhor livro sobre programação que já havia lido.

Definitivamente Artesanato de Software

texto alternativo http://ecx.images-amazon.com/images/I/5186JKTDVWL._SL500_AA240_.jpg

Este livro explica muitas coisas sobre engenharia de software e desenvolvimento de sistemas.Também é extremamente útil entender a diferença entre os diferentes tipos de desenvolvimento de produtos:estrutura web VS Shrinkwrap VS IBM.O que as pessoas tinham em mente quando conceberam o modelo cascata?Leia isto e tudo ficará claro (espero)

@Peter Coulton - você não lê Knuth, você o estuda.

Para mim e para o meu trabalho... Estruturas de dados puramente funcionais é ótimo para pensar e desenvolver com linguagens funcionais em mente.

"O mundo é plano", de Thomas Friedman.

A excelência na programação exige um investimento de energia mental e uma dedicação à aprendizagem contínua comparável às profissões da medicina ou do direito.Paga uma fracção do que essas profissões pagam, muito menos os salários pagos aos matematicamente mais experientes que se dirigem ao sector financeiro.E salários para construindo código estão se desgastando porque é uma profissão que está relativamente fácil para os inteligentes e autodisciplinados na maioria das economias entrarem.

A programação já sofreu erosão a ponto de pagar menos do que, digamos, encanamento.O encanamento não pode ser "offshored". Você não precisa pagar US $ 2395 para participar da conferência do encanador profissional a cada dois anos pelo privilégio de receber um conjunto totalmente novo de tecnologias de encanamento que o levarão um ano para aprender.

Se você mora na América do Norte ou na Europa, é jovem e inteligente, a programação não é uma escolha de carreira racional.Negócios que envolver programação, com certeza.Estude negócios, saiba o suficiente sobre programação para refinar seu detector de besteira:brilhante.Mas dedicar a maior parte de sua energia mental ao domínio de bibliotecas, estruturas de dados e algoritmos?Isso só faz sentido se a programação for para si algo mais do que uma escolha económica.

Se você amor programação e por esse motivo pretende fazer disso sua carreira, então cabe a você desenvolver uma compreensão fria das forças que são, e continuarão, a tornar essa profissão cada vez mais difícil para ganhar a vida."O mundo é plano" não lhe ensinará como nomear suas variáveis, mas irá imergi-lo por 6 ou 8 horas em realidades econômicas que têm chegado.Se você puder ler e não ficar com medo, então saia e compre "Código Completo".

alt text

No ano passado tive várias aulas.Eu leio

O Dilema do Inovador (tecnologia disruptiva)
O Mês do Homem Mítico (software de gerenciamento)
Cruzando o Abismo (inicialização)
Sistemas de gerenciamento de banco de dados, The COW Book
Programando C#, O Livro AVESTRUZ
Desenvolvedores iniciantes do iPhone, o livro GRAPEFRUIT

Cada livro foi incrível, mas o Dilema do Inovador, de Clayton Christensen (1997!!!), é realmente um livro fantástico e me fez realmente pensar sobre o mundo moderno do software.O desafio abordado é a tecnologia disruptiva e como as empresas de unidades de disco e as empresas não técnicas são sempre perturbadas por novas tecnologias revolucionárias.Dá uma nova perspectiva quando se pensa no Google, provavelmente a maior empresa da 'web'.Por que eles colocam as mãos em TUDO?É porque eles não querem ter a sua posição interrompido por algo novo.A prévia no google é suficiente para se ter uma ideia.Leia-o!

hackers, de Steven Levy.

A personalidade e o modo de vida devem vir em primeiro lugar.Todo o resto pode ser aprendido.

A linguagem Python foi muito influente para mim, gostaria de ter lido esse livro anos atrás.A beleza e a simplicidade da linguagem Python realmente afetaram a forma como escrevi código em outras linguagens.

alt text alt text

O novo ônibus Turing http://ecx.images-amazon.com/images/I/51HlYd-%2BRwL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg

Livro realmente bom.Tem um gosto de alto nível pelas áreas mais importantes da ciência da computação.Sim, CS! = programação, mas ainda é útil para todos os programadores.

O mítico homem-mês de Fred Brookshttp://en.wikipedia.org/wiki/The_Mythical_Man-Month

Eu acho que "The Art of Unix Programming" é um excelente livro, escrito por um excelente hacker/mente brilhante como Eric S.Raymond, que tenta nos fazer entender alguns princípios de design de software (principalmente simplicidade).Este livro é obrigatório para todo programador que está prestes a iniciar um projeto na plataforma Unix.

Embora eu concorde que muitos dos livros acima são de leitura obrigatória (Pragmatic Programmer, Mythical Man-Month, Art of Computer Programming e SICP vêm à mente imediatamente), gostaria de seguir uma direção um pouco diferente e recomendar Uma disciplina de programação por Edsger Dijkstra.Mesmo tendo 32 anos, a ênfase em “projeto para verificabilidade” é altamente relevante (mesmo que “verificabilidade” signifique “prova” em vez de “testes unitários”).

Martin Fowler Reestruturação:Melhorando o design do código existente já foi listado.Mas vou detalhar por que isso me impactou.

A essência de todo o livro é estruturar o código para que seja mais simples de ler e entender. humanos.Isso me ensina fortemente que o código que escrevo se destina a meus colegas e sucessores consumirem e possivelmente aprenderem algo bom fora disso.Isso me inspira a conscientemente programa de uma maneira que deixe as pessoas elogiando meu nome, e não me amaldiçoando até a condenação por toda a eternidade.

texto alternativo http://ecx.images-amazon.com/images/I/61dECNkdnTL._SL500_AA240_.jpg

C++ Como programar É bom para iniciantes. Este é um excelente livro completo com 1.500 páginas.

Aqui está um excelente livro que não é tão aplaudido, mas está cheio de insights profundos: Desenvolvimento Ágil de Software:O Jogo Cooperativo, de Alistair Cockburn.

O que há de tão especial nisso?Bem, é claro que todo mundo já ouviu o termo "Ágil" e parece que a maioria acredita hoje em dia.Quer você acredite ou não, existem alguns princípios profundos por trás da existência do movimento Ágil.Este livro revela e articula esses princípios de maneira precisa e científica.Alguns dos princípios são (aliás, estas são palavras minhas, não de Alistair):

  1. A coisa mais difícil no desenvolvimento de software em equipe é fazer com que os cérebros de todos tenham o mesmo entendimento.Estamos construindo sistemas enormes, elaborados e complexos que são invisíveis no mundo tangível.Quanto melhor você conseguir fazer com que mais cérebros das pessoas compartilhem uma compreensão mais profunda, mais eficaz será sua equipe no desenvolvimento de software. Esta é a razão subjacente pela qual a programação em pares faz sentido.A maioria das pessoas descarta isso (e eu também o fiz inicialmente), mas com esse princípio em mente, recomendo fortemente que você tente novamente.Você acaba com DUAS pessoas que entendem profundamente o subsistema que você acabou de construir...não existem muitas outras maneiras de obter uma transferência de informações tão profunda tão rapidamente.É como uma fusão mental vulcana.
  2. Você nem sempre precisa de palavras para comunicar rapidamente um entendimento profundo.E um corolário:muitas palavras e você excede a capacidade do ouvinte/leitor, o que significa que a transferência de compreensão que você está tentando não acontece.Considere que as crianças aprendem a falar a língua sendo “imersas” e “absorventes”.Não apenas a linguagem também...ele dá o exemplo de algumas crianças brincando com trens no chão.Aí vem outro garoto que nunca sequer VISTO um trem antes...mas ao observar as outras crianças, ele capta a essência do jogo e continua jogando.Isso acontece o tempo todo entre humanos.Isso, junto com o corolário sobre muitas palavras, ajuda você a ver como era equivocado, nos velhos tempos da "cascata", tentar escrever especificações detalhadas de requisitos em 700 páginas.

Há muito mais lá também.Vou calar a boca agora, mas recomendo ALTAMENTE esse livro!

Mestres da desgraça. No que diz respeito à motivação e ao amor pela sua profissão:não haverá nada melhor do que o que foi descrito neste livro, uma história verdadeiramente inspiradora!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top