Categories
Carreira

Você tem que ler os livros!

Nos últimos meses já ouví algumas pessoas dizerem que não têm costume de ler livros, ou questionarem a necessidade de lê-los, já que há uma abundância de fontes de leitura por aí na Internet.

Hoje em dia realmente temos milhares de formas de nos informarmos. Me lembro de ter lido em algum lugar que a Internet possui mais de 250 milhões de sites. Se somarmos isso tudo, realmente tem muita informação. Justamente por isso, faz parte da minha rotina diária dar uma navegada no Google Reader, onde tenho cadastrados os feeds de mais de 300 sites e blogs de diversos assuntos que acho interessantes. Essa é basicamente a minha principal fonte de informação diária e é a melhor maneira de me manter atualizado com tantas novidades surgindo por aí todo dia.

Porém, em alguns casos, para aprender e entender certos assuntos, você precisa ler os livros. Não tem jeito! Por exemplo, como é que um desenvolvedor de software pode dizer que entende Domain-Driven Design sem ter lido o livro do Eric Evans ou pelo menos o DDD Quickly? Ou então dizer que sabe sobre metodologias ágeis sem ter lido pelo menos um livro do Ken Schwaber, Kent Beck ou Uncle Bob? Como é que alguém pode se dizer Arquiteto de Software Sênior++ Certified ™ sem ter visto o Patterns of Enterprise Application Architecture e o GoF? Eu respondo: não tem como. Simplesmente não tem jeito, você precisa ler os livros.

Hoje mesmo o Patrick Kua, que trabalha na ThoughtWorks, escreveu um post sobre os livros que ele considera essenciais para saber sobre metodologias ágeis. Ele acredita que você precisa ler 11 livros, O.N.Z.E. livros, para entender sobre o assunto, e ainda completa: “Of course, simply reading the books won’t mean that you’re an expert […] though it’ll definitely help in providing context, advice or skills that you need to practice.”. Ou seja, mesmo lendo todos esses livros, ainda há muita coisa para aprender… E estamos falando sobre um assunto apenas.

Assim como os blogs e os sites, os livros são uma fonte de informação importantíssima e necessária. Se você quer trabalhar com tecnologia e desenvolvimento de software não tem jeito: tem que ler e ler muito!

20 replies on “Você tem que ler os livros!”

Concordo plenamente.

Infelizmente, escuto muita gente (muita) da nossa área dizer coisas como “ler é chato”, “ler cansa”, “ler me dá sono”.

Ler ajuda muito em outra coisa: aprender a escrever corretamente e argumentar melhor, isto é, melhora as habilidades de comunicação, algo tão importante para nós e completamente ignorado.

As pessoas acreditam que nós lidamos com máquinas, quando as máquinas são apenas ferramentas para realizar nosso verdadeiro trabalho: solucionar problemas de pessoas. Lidamos com pessoas e suas vontades e expectativas. Isso é muito complicado e exige muita habilidade comunicativa.

Enquanto isso os cursos superiores vão retirando de suas grades matérias como Língua Portuguesa e socando cálculo, física e estatística. A parte exata tem sua importância, mas não tanta (Agile Manifesto, alguém?).

Isso ainda me leva pra uma “tese” minha: se você não sabe escrever bem e manter uma linha de argumentação sólida, não sabe programar. E ponto. Estou com um artigo sobre isso em rascunho há uns meses, logo publico ele.

Parabéns pelos artigos, Guilherme.

Eu to lendo mais de 3 livros de uma vez 🙂 O único problema é as vezes ficar com um pouco de dor de cabeça, quando chego em casa e quero ler de teimoso quando já estou muito cansado hehe.

Exelente observação sobre leitura, que é fundamental.

Oi Guilherme, essa questão dos livros é muito importante mesmo, e com certeza um ótimo parâmetro para conhecer as pessoas, como você falou no seu post anterior.

Minha única frustração com relação aos livros é que eu descubro novos livros interessantes com uma velocidade muito maior do que eu consigo lê-los 🙂

Já há algum tempo eu estou para criar uma nova página no meu blog sobre livros que já li, fazendo uma análise e alguns comentários. Até o fim de semana tentarei fazer isso.

A propósito, o Bairos é um dos que mais contribui para essa minha frustração. Todo mês ele me mostra livros novos e coisas legais que vêm lendo, e a minha fila de leitura só aumenta 😉

Very nice blog, keep it up!

A barreira do inglês também é um grande problema. Ler blogs e pequenos artigos em inglês é simples, mas ler livros fica muito complicado. Felizmente hoje estou conseguindo ler meu primeiro livro em inglês, não sem um dicionário ao lado. Mas estou conseguindo.

Eu leio e acho que leio bastante, não necessariamente livros mas o que precisar para chegar ao fim que eu quero. Como dize Shoes nos comentários do post anterior (em outro contexto), os livros para mim são um meio, não o fim.

Peço desculpas pela minha pouca experiência mas eu não entendo por que uma pessoa não pode entender de DDD sem ter que ler um livro ou alguma fonte. Ate onde eu sei, DDD e uma forma de pensar no momento de desenhar software. Nunca li um livro sobre DDD (somente textos na net) mas imagino que nos livros as ideais são apresentadas de forma profunda e justificadas. Eu pude assimilar muitas dessas idéias somente depois de ler sobre elas, mas isso não quer dizer que outra pessoa não possa ter pensando nelas por conta propia.

Quantos de nos ja descobriu um design pattern e percebeu que ja tinham implementado ele sem saber que era um design pattern? Aposto que muitos de nos. Eu mesmo ja utilizava objetos especializados em acessar data sem saber o que existia um design pattern chamado DAO. Aposto também que muitos de nos no nosso processo de aprendizagem ja falaram pra sim mesmos “Po, quanto mais aprendo percebo que sei menos”, sem ter leído a a Aristóteles.

Me parece que a comunicação e o intercâmbio intelectual, ja seja por livros, forums, cartas, musicas ou o que for nos ajuda a ver as coisas de outro modo e perceber coisas nas quais não tínhamos pensado antes, mas no final, tudo o que esta escrito num livro saiu do cérebro de um ser humano e se saiu do cérebro de um, também pode sair do cérebro de outro. Dizer que uma pessoa não sabe sobre tal ou tal coisa somente porque não leu o estimado me parece subestimar ela.

Na nossa área, onde muda de forma tão rápida, os livros são uma maneira indispensável de se formar a base necessária para que o profissional possa absorver melhor os conceitos sobre determinado assunto.

Diego, a questão é que você PRECISA do conhecimento teórico também. Sinto que você está achando que eu sou contra outros meios de informação. Muito pelo contrário, todos eles são absolutamente essenciais. Só que para *desenvolvedores de software*, ler livros é especialmente necessário.

Usando o próprio exemplo do DDD, se você não leu o livro, como falou, eu garanto que se sentarmos eu e você por 5 minutos certamente você perceberá que você não sabe muitas coisas que deveria sobre o assunto. O que você pode ter é uma vaga idéia do que é, mas se você não ler o livro e não se aprofundar no assunto, como é que você espera conseguir implementar isso num projeto na sua empresa?

Novamente eu respondo sua pergunta: se você não estudar e não ler livros, você simplesmente não terá base suficiente para fazer o seu trabalho.

Acho que não consegui me expressar corretamente Guillerme.

O que eu quis dizer é que uma pessoa pode adquirir um modo de pensar sem a necessidade de ler um livro que explique quais são os benefícios de pensar assim. Por exemplo, pessoa A pensa que as aplicações devem se desenhar o mais próximo do jeito humano, colocou como nome XYD a esse modo de pensar e escreveu um livro que pessoas B e C leram. Pessoa B entendeu tudo e a pessoa C não entendeu nada. Por outro lado, pessoa D, que não sabe da existência das pessoas A,B e C, acho por conta propia que as aplicações devem se desenhar o mais próximo do jeito humano, ao igual que pessoa A. Me parece que a pessoa D e mais capaz para implementar XYD
num projeto que as pessoas B e C, porque chegou a pensar de um modo por se mesmo. Porem, a pessoa D não leu nenhum livro e seria descartada no processo de seleção, no que pessoalmente não acho correto.

Chegando num exemplo real, sei que tem uma historia sobre um teorema que Newton e Leibniz desenvolveram em paralelo. Não sei corretamente a ordem dos eventos mas me parece que um publicou o estudo e o outro acusou ele de ter copiado, terminando numa briga pelos méritos. Um pode não ter lido as escrituras do outro mas isso não quer dizer que não saiba aplicar o que esta nelas.

O que quero dizer é que tudo sai do intelecto humano e a mesma idéia pode sair do intelecto de duas pessoas.

Como diz a pagina do livro Domain-Driven Design de Eric Evans, muitas pessoas ja podem estar utilizando DDD sem se quer ler o livro, mas ele ajuda a definir um vocabulário e criar convenções, o que me parece muito importante.

Diego, isso que você está falando realmente acontece. Mas quantos Newtons e Leibniz você conhece? Quantos Design Patterns você já criou e catalogou?

Vamos para um caso prático. Digamos que doi desenvolvedores tem que desenvolver uma solução de cache aonde é necessário invalidar vários objetos baseado no primeiro que foi invalidado. Daí em deles fala que já tem uma solução pronta, o MegaZordCacheController que faz exatamente isso. Por outro lado o segundo desenvolvedor quer usar o AdvancedCascadeCacheManager que faz isso também. Olhando os dois códigos eles percebem muita coisa em comum e depois de 2 dias de discussão e pesquisas na Internet eles percebem que ambos estão fazendo uma implementação de Chain of Responsibility, um Design Pattern conhecido e catalogado no GoF. Aconteceu o que você falou, casualmente descobriram que sabiam e implementaram um Design Pattern.

Se fossem dois desenvolvedores que leram o GoF, poderia ser assim:
[a] Que tal usar o meu MegaZordCacheController que já está pronto e faz exatamente isso?
[b] Hmm.. Eu também tenho um AdvancedCascadeCacheManager que faz isso também. Como funciona o seu?
[a] Nada de mais, é um Chain of Responsibility.
[b] Coincidência, o meu também. Se bem que eu estou pensando aqui e nesse caso poderia fazer mais sentido um Observer.
[a] Hmm.. Talvez você tenha razão. Acho também que temos que deixar essa funcionalidade de cache por fora do DAO. Que tal um Decorator?
[b] Pode ser. Ou um Strategy, sei lá. Vamos ver.

Menos de dois minutos de discussão e você além de ter uma conversa mais rica e eficiente, os desenvolvedores são mais criativos e já estão pensando em várias coisas. É exatamente isso que acontece quando as pessoas têm uma base teórica boa.

Outro examplo. Recentemente estamos implantando Scrum na Globo.com e naturalmente estamos tendo várias discussões de como as coisas devem funcionar. Muitas pessoas ainda não conhecem o processo e várias discussões surgem. Sabendo que isso ia acontecer, desde o meio do ano passado já lí 4 livros sobre o assunto e estou indo para o quinto. E posso te assegurar que isso está fazendo toda a diferença na hora que surgem as situações que não são feijão-com-arroz. Isso me dá a certeza absoluta pra falar: “o Ken Schwaber e o Mike Beedle dizem que quando acontece isso nós temos que …”.

Concordo com você Guillerme em dizer que tudo o que você falou acontece quando as pessoas tem uma base teórica boa. Mas agora minha duvida, você acha que você poderia ter substituído as palavras “têm uma base teórica boa” por “lêem livros”?

Eu acho que não. Eu acho muito importante ter um conhecimento teórico mas onde eu não concordo com você é em dizer que esse conhecimento tem que vir de um livro e se não veio de um livro então é inválido. Pessoas podem ler livros e não entender o que querem transmitir. Eu sem ler o livro GOF posso por exemplo bater um papo com alguma pessoa como você que conhece sobre o assunto e tal vez ate aprenda muito mais, ou talvez poderia entrar na Wikipedia e pesquisar sobre o GOF e vão aparecer todos esses patterns citados na conversação com informação e links sobre eles que acredito permitem entender sobre o assunto.

Como disse anteriormente, acho que a comunicação, seja de qualquer tipo e um meio mas o fim e conhecer bem a teoria e saber aplicar isso na prática. Agora, podem existir muitos pocos Leibniz e Newtons mas tal vez aquele cara que você tiraram do processo seletivo por não ter lido um livro pode ser um deles e foi descartado sem ter uma oportunidade de demonstrar o conhecimento que ele diz ou aparenta ter. Isso que tal vez seja causar de generalizações eu acho muito chato porque em varias entrevistas que fiz fui generalizado de não pode fazer alguma coisa ou não ser muito bom em tal outra coisa somente por ser considerado de moleque, sem tentar entender o quanto uma pessoa pode se esforçar por fazer uma coisa bem se ela gosta dessa coisa de verdade.

De qualquer jeito eu não sei se minhas ideais estão de tudo certas ou erradas, mas fico agradecido Guillerme por sempre me responder. Tal vez não pareça mas esta simples conversação tem feito que veja algumas coisas de outra maneira e que perceba de alguns pontos que ate então passavam desapercebidos. E ja estou pedindo a Amazon me mandar o livro de Domain-Driven Design para ler ele e ver o impacto que tem na minha vida 😀

Diego, presta atenção na BESTEIRA que você escreveu. Olha o que eu disse:

[GC] “Diego, a questão é que você PRECISA do conhecimento teórico também. Sinto que você está achando que eu sou contra outros meios de informação. Muito pelo contrário, todos eles são absolutamente essenciais. Só que para *desenvolvedores de software*, ler livros é especialmente necessário.”

Agora olha o que você disse:

[Diego] “Eu acho muito importante ter um conhecimento teórico mas onde eu não concordo com você é em dizer que esse conhecimento tem que vir de um livro e se não veio de um livro então é inválido.”

Acho que você está deixando de ler alguma coisa ou lendo coisas demais. Você está dizendo que eu disse EXATAMENTE O CONTRÁRIO do que eu realmente disse. Você disse que eu acho qualquer fonte de leitura diferente de livros inválida. LEIA o que você escreve antes de apertar o botão.

Depois disso leia novamente o post e verá que o que defendo é que as pessoas tem que ler livros porque é muito importante. Não defendo de forma alguma que elas só devem livros ou que nunca devem procurar outras fontes de informação.

Por fim, sobre a questão de usar a lista de livros lidos como ferramenta para o processo seletivo, comentei no outro post o seguinte:

[GC] “Ah, e sobre a questão dos últimos livros, eu comí mosca no post. A lista que foi pedida na verdade é dos três últimos livros TÉCNICOS que foram lidos. Mesmo assim várias pessoas mandaram listas de livros não técnicos e mesmo assim foram chamadas para a entrevista. […] Mais uma vez, isso não é um critério único de seleção. É apenas mais uma ferramenta para ajudar a escolher as pessoas.”

Repito: você definitivamente não está lendo o que eu escrevo.

Essa discussão perdeu o sentido e acaba por aqui.