Livros

 
Tentarei criar uma lista de livros que, na minha opnião, devem ser lidos por todo bom desenvolvedor web. Também darei minha breve visão da obra. Caso eu conheça a versão e-book deixarei também o link. Boa parte dessa literatura faz parte da grade acadêmica da maioria dos cursos de graduação de Análise e Desenvolvimento de Sistemas (que também estou cursando), porém muitos deles conheci em fórums, sites, colegas ou até mesmo blogs como este. Portanto faço deste post mais um elo desta rede.


A ORGANIZAÇÃO Organizarei os livros seguindo as etapas que, acredito que indiferente da metologia, são utilizadas em todos os projetos de desenvolvimento de software: análise de requisitos, projeto, codificação e teste. A análise de requisitos, mesmo que involuntariamente pode até ser feita em pesquisas na internet, análise de softwares similares ou uma pequena entrevista com o cliente. Talvez algum possam dizer que fizeram softwares sem projeto, mas acho que até mesmo a criação de prototipos ou uma listagem de funcionalidades escritas em um pedaço de papel podem ser considerados um projeto, um projeto pobre mas mesmo assim um projeto. Portanto até mesmo quem não conhece toda a teoria por traz de engenharia de software, porém desenvolve softwares, para internet ou não, passa por estas etapas. Lembrando que não sou um estudioso de metodologias e muitas vezes não aplico todos os passos oficialmente “necessários” em meus projetos. Em certos projetos julgo certo diagrama mais necessário que outro.  

1 - ANÁLISE DE REQUISITOS Não lembro de ter lido um livro que fale exclusivamente de análise de requisitos, portanto optei em colocar um clássico da engenharia de software que está nas salas de aula a um bom tempo e que possui extenso material sobre análise de requisitos. Apesar de as primeiras versões terem vários anos, muitos dos princípios podem ser aplicados a quaisquer projetos atuais.  
Engenharia de Software de Roger Pressman disponível aqui a 6ª edição do capitulo 1 ao 9. Mas em qualquer biblioteca de uma faculdade onde exista curso de gradução na área deve existir um exemplar.  

2 - PROJETO GETTING REAL ou Caindo na real. Disponível aqui, escrito pelo pessoal da 37 Signals, empresa onde David Heinemeier Hansson, criador do Ruby on Rails trabalha. A obra traz uma metodologia focada no problema, com a idéia básica de “menos é mais”, ou seja um sistema deve trazer o mínimo possível de funcionalidades, porém resolver o problema proposto. Apesar deste livro abordar todas as outras etapas, acho que ele se enquadra mais em projeto. Lembrando que o livro anteriormente citado de Roger Pressman também é um ótimo título para esta etapa. No projeto grande parte do tempo é usado na criação de diagramas, onde é necessário a linguagem UML. Há vários títulos mas cito livro dos homens que padronizaram a linguagem de modelagem criando a UML, Raumbaugh, Jacobson e Booch, o título é UML - Guia do Usuário.  

3 - CODIFICAÇÃO Citarei algumas linguagens de programação aqui, porém acredito que quem estiver familiarizado com alguma linguagem de programação com algumas horas ou dias em tutoriais e livros pode migrar da linguagem x para y sem problemas. Mas há regras gerais de um bom programador como separar código “político” dos demais, dividir métodos grandes em sub-métodos, não repetir códigos (copiar colar) ou seja deixa-lo o mais limpo é legível possível, ou um termo que está na moda a algum tempo, tornar seu código DRY (Dont Repeat Yourself).  
Linguagem C Mesmo este blog ser focado em desenvolvimento web, não posso deixar de mencionar esta linguagem. Apesar de que já ouvi falar de desenvolvimento de projetos web em C como nesta entrevista feita por Fabio Akita a Jamis Buck. Mas normalmente a linguagem C é utilizada em projetos de mais “baixo nível” como sistemas operacionais, drivers de dispositivo, linguagens de programação, etc. Claro que não é uma regra, existem desenvolvimento de sistemas comerciais, editores de texto ou qualquer outro software do gênero nesta linguagem. Mas é inegável que C tem mais afinidade com projetos de mais baixo nível. Acredito que esta linguagem deveria ser o ponto de partida para todos os programadores iniciantes, mesmo tendo todo este poder, penso que quem programar nela não encontrará dificuldades de migração para outros códigos. C foi a primeira linguagem de programação que tive contato, ainda lembro das minhas pequenas calculadoras escritas sob o Turbo C e como era divertido brincar com as bibliotecas gráficas. Posteriormente na faculdade a revi no primeiro período do meu curso de Análise e Desenvolvimento de Sistemas Web.  

Mas voltando as livros, existe uma infinidade de títulos, para iniciantes sugiro este tutorial da Unicamp Java Apesar da programação orientada a objeto existir desde muito antes de sua criação, Java que realmente impulsionou a OO nos desenvolvedores, tanto que muitos chegam a pensar que orientação a objeto surgiu com ela. Só para citar, o temo orientação a objeto surgiu com a linguagem Smalltalk, apesar de algumas idéia serem usadas até mesmo antes disso.  
Meu contato com Java até agora foi estritamente acadêmico, portanto deixarei um livro que pra mim foi muito bom: o Java como Programar de Harvey M. Deitel
Com uma didática que as vezes chega a ser infantil, mas como já disse, para mim foi muito eficiente. Não posso deixar de mencionar o JSP (Java Server Pages) que foram projetadas para a web. Além de JSP temos frameworks como Struts, Hibernate (estou desatualizado em frameworks Java, devem haver mais) que trazem muito mais produtividade, porém existe uma obra para cada tema, portando deixo a cargo de a quem interessar pesquisar estes temas.  
Estrutura de Dados Optei por abrir um subtítulo em Java para falar de estrutura de dados, apesar de não estar diretamente relacionada a Java, foi a forma que aprendi e que penso ser uma forma muito eficiente de entender listas encadeadas, pilhas, arvores binárias, algoritmos de balanceamento de árvores binárias etc. O livro é chamado Estrutura de dados e algoritmos em Java de Robert Lafore, o livro é excelente, quem quiser e-book só me contatar. Estrutura de dados é competência obrigatória para qualquer bom programador portanto realmente vale a pena.  

PHP Esta foi uma das pioneiras em trazer para a web dinamismo. Com consultas em banco dados, trazendo imagens e textos que eram atualizados rapidamente, ela foi bem popularizada na estática web dos idos de 1994. Levando em conta esta popularidade acredito que ninguém encontrará problemas em encontrar material de aprendizado de qualidade para esta linguagem, mas como este post é para sugerir aí vai um título que também foi meu parceiro na faculdade o PHP a Bíblia de Tim Converse, Joyce Park.  

Ruby on Rails Esta tecnologia não é uma linguagem de programação mas sim um framework, a linguagem mesmo é Ruby, mas que foi popularizada com a criação do framework. Podemos dizer que todos os títulos abordam grande parte do tema, ao contrário de outras tecnologias como Java que é necessário aprender sobre a linguagem em um título sobre o framework em outro. Há livros focados somente na linguagem Ruby como o do Eustáquio Rangel que tem versão pdf disponivel em aqui e quem tem como título Ruby Conhecendo a Linguagem. Os que englobam todo a tecnologia Ruby on Rails (ROR) temos o do Fabio Akita “Repensando a web com rails”, porém é de 2006. Recentemente Urubatan lançou o http://livro.urubatan.com.br/ mais um, em português a obra mais recente. Apesar que as principais fontes estarem em inglês. Atualmente temos a terceira edição do Agile Web Development with Rails, com participação do próprio criador do ROR David Heinemeier Hansson.  

4 - TESTES Para os testes novamente recomendo a clássica obra de Roger Pressman, Engenharia de Software. Além de Pressman, Yourdon e De Marco são autores consagrados na área.

Comentários

  1. Olá Alvaro!

    Excelente Post!!!

    Estou precisando muito do livro do Lafore, você poderia me enviar!!

    ResponderExcluir
  2. Ola Alvaro, poderia me passar o e-book de Estrutura de dados, estou precisando muito. obrigada valeria

    ResponderExcluir
  3. Olá amigo,
    Poderia me enviar o livro Estrutura de dados e algoritmos em Java de Robert Lafore, em versão e-book?
    Obrigado!
    brunoguilherme182@gmail.com

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Concursos Públicos na área de TI