Aprenda a programar em dez anos (original) (raw)

O texto abaixo foi traduzido pelo meu amigo Augusto Radtke e é de autoria de Peter Norvig. É dirigido para todos que fazem ciência da computação, ou estudam em alguma área das ciências exatas ou tem interesse ou até mesmo em necessidade de aprender a programar.

Para quem já fez Inteligência Artificial na faculdade deve conhecer o Norvig do seu livro verde, o Artificial Intelligence, a Modern Approach, ou AIMA para os íntimos. Ele era chefe de desenvolvimento dos robôs que foram pra marte da NASA, agora trabalha no Google. Ou seja, ele sabe do que está falando! O texto é longo (uns 10 minutos de leitura).

Texto revisado em 23 de junho de 2015 por Silas Piacenti (Twitter: @silaspiacenti)

Peter Norvig

Tradução por Augusto Radtke

Porque todo mundo tem tanta pressa?

Entre em qualquer livraria, você vai ver Aprenda Java em 7 dias assim como diversas variações oferecendo lições de Visual Basic, Windows, Internet e por ai vai, em dias ou horas. Eu fiz a seguinte pesquisa na Amazon.com:

pubdate: after 1992 and title: days and (title: learn or title: teach yourself)

e encontrei 248 entradas. As primeiras 78 eram livros sobre computadores (número 79 era Learn Bengali in 30 days). Troquei “dias” por “horas” e encontrei resultados incrivelmente similares: 253 livros, 77 de computadores, seguidos de Teach Yourself Grammar and Style in 24 Hours no número 78. Do total de 200, 96% eram livros de computadores.

A conclusão é que ou as pessoas estão com muita pressa de aprender sobre computadores, ou computadores são extremamente fáceis de aprender do que qualquer outra coisa. Não há livros de como aprender Beethoven, ou Física Quântica ou até adestramento de cães em alguns dias.

Vamos analisar o que um título como Learn Pascal in Three Days
pode significar:

Aprenda a Programar em Dez Anos.

Pesquisadores (Hayes, Bloom) tem demonstrado que leva em torno de dez anos para desenvolver perícia em qualquer de uma variedade de áreas, incluindo jogar xadrez, compor músicas, pintar, tocar piano, nadar, jogar tênis e pesquisar neuropsicologia ou topologia. Aparentemente não há atalhos: até Mozart, que foi um prodígio musical aos 4 anos levou mais 13 antes de compor música de primeira classe. De outra forma, os Beatles parecem ter disparado nas paradas em primeiro lugar com a aparição no show do Ed Sullivan em 1964. Mas eles estavam tocando em pequenos clubes em Liverpool e Hamburgo desde 1957, e mesmo que eles conseguiram uma aparição em massa, o primeiro grande sucesso mesmo, Sgt. Peppers, foi lançado em 1967. Samuel Johnson pensa que pode levar mais do que dez anos: “Excelência em qualquer departamento pode ser alcançada apenas com o trabalho de uma vida toda; não é possível comprá-la por menos.” E Chaucer reclamou: “vida tão curta, leva tantu pra aprender.” Sim, é “tantu”, e não “tanto”, um dia você entende.

Então aqui vai minha receita para sucesso na programação:

Com tudo isso em mente, é questionável o quão longe você pode ir apenas lendo livros. Antes que do meu primeiro filho nascer eu li todos os livros de Como Fazer e ainda me sentia como um novato. Trinta meses depois, quando nasceu meu segundo filho, voltei aos livros para relembrar? Não, ao invés disso resolvi utilizar minha experiência pessoal do primeiro filho, que se tornou muito mais útil do que milhares de páginas escritas por especialistas.

Fred Brooks, em seu trabalho No Silver Bullets identificou um plano em três partes para encontrar grandes projetistas de software:

  1. Sistematicamente identifique os melhores projetistas o quanto antes.
  2. Atribua um orientador de carreira responsável pelo desenvolvimento cuidadoso de um plano de carreira.
  3. Promova oportunidades para desenvolvedores em aprendizado interagir e estimular uns aos outros.
  4. Nisto assumo que algumas pessoas já possuem as qualidades necessárias para ser um grande desenvolvedor de software; o grande trabalho é apenas colocá-los no caminho correto. AlanPerlis coloca de forma mais sucinta: “Qualquer um pode ser ensinado a esculpir: Michelangelo poderia ser ensinado a não esculpir. É o mesmo com grandes programadores”.
  5. Então vá em frente e compre aquele livro de Java; provavelmente você terá algum uso dele. Mas isso não vai mudar a sua vida, ou o seu conhecimento como um programador em 24 horas, dias, ou meses.

7. Referências

  1. Bloom, Benjamin (ed.) Developing Talent in Young People, Ballantine, 1985.
  2. Brooks, Fred, No Silver Bullets, IEEE Computer, vol. 20, no. 4, 1987, p. 10-19.
  3. Hayes, John R., Complete Problem Solver Lawrence Erlbaum, 1989.
  4. Lave, Jean, Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life, Cambridge University Press, 1988.

Respostas

O tempo aproximado de execução de várias operações num PC típico de 1Ghz no verão de 2001:

executar uma instrução simples 1 nseg = (1/1,000,000,000) seg
extrair uma palavra da memória L1 2 nseg
extrair uma palavra da memória RAM 10 nsec
extrair uma palavra consecutivamente do disco rígido 200 nseg
extrair uma palavra de uma nova posição o disco (busca) 8,000,000nseg = 8mseg

Apêndice: Escolha de Linguagem

Muitas pessoas tem me perguntado sobre qual linguagem devem aprender primeiro.
Não há resposta, mas considere estes pontos:

Baseado nesses critérios, minhas recomendações para uma primeira linguagem seria Python ou Scheme. Mas as suas circunstâncias podem variar, e existem outras boas opções. Se a sua idade ainda tiver apenas um dígito, é melhor escolher Alice ou Squeak (aprendizes mais velhos podem gostar também). O importante é você escolher e começar.

Apêndice: Livros e outros recursos

Muitas pessoas me perguntam em quais livros e páginas elas devem aprender. Eu repito que “apenas ler livros não é suficiente” mas eu posso recomendar o seguinte:

Notas

  1. Capey informa que a página de Complete Problem Solver na Amazon agora possui “Teach Yourself Bengali in 21 days” e “Teach Yourself Grammar and Style” na lista de livros que “Consumidores que compram esse item também costuma comprar estes”.
    Eu imagino que um grande parte das pessoas que visualizam esse livro vem dessa página.