[Livro] The Productive Programmer

The Productive Programmer

The Productive Programmer

O livro parte de uma premissa, no mínimo interessante: com o passar do tempo, o autor percebeu que os programadores ficaram MENOS eficientes, e não o contrário. A ideia é que, por passar a utilizar cada vez mais interfaces gráficas ao ponto de se interessar apenas por interface, o que seria um aumento de produtividade, do ponto de vista do usuário final de computadores, acabou prejudicando os desenvolvedores que perderam um pouco eficiência máxima do computador. No entanto, desenvolvedores são um tipo bem diferente de usuários de computador e muitas vezes precisam abrir mão da “facilidade de uso” para ter um ganho com eficiência.

A partir daí o autor parte para quatro princípios para se tornar um programador produtivo: Aceleração, Foco, Automação e “Canonicalidade”.

Aceleração fala sobre executar tarefas que fazemos a todo momento de maneira mais rápidas. Foco se refere a como alcançar e se manter em um estado de super produtividade, utilizando programas para reduzir distrações, procurar informações de forma mais eficiente, etc. Automação é auto-explicativo, se refere a deixar o computador trabalhar por você. “Canonicalidade” diz respeito a evitar duplicações de informações, para que você evite desperdício com redundância.

Esta primeira parte do livro realmente se refere a ferramentas que você pode utilizar para se tornar um programador mais produtivo. Coisas simples como utilizar um GnomeDo ou QuickSilver até a utilização de repositórios centralizados para compartilhar informações. É uma etapa meio maçante, mas que lhe apresenta informações interessantes.

Já a segunda parte do livro fala sobre a experiência do autor como consultor da ThoughtWorks em vários diferentes projetos e práticas que ajudam qualquer time de desenvolvimento a se tornar mais produtivo.

Um dos primeiros tópicos abordados é o TDD, falando sobre os benefícios, como evoluir códigos de teste e a importância da cobertura de código. Outro tópico fala sobre análise estática, em linguagens estáticas lógico, citando algumas ferramentas para análise de qualidade de código. Também são mencionados ferramentas para linguagens dinâmicas.

Outro tópico interessante discutido no livro é o principio “Good Citizenship “, que já foi falado aqui no blog (https://brizeno.wordpress.com/2012/11/26/o-objeto-bom-cidadao-good-citizenship/). Também são feitas discussões filosóficas, utilizando assuntos não relacionados com desenvolvimento de software mas que servem como exercício para uma discussão sobre princípios de design de software.

As metáforas utilizada no livro são bem interessantes, por exemplo quando o autor compara projetos de software onde sempre se busca adicionar informações ao navio Vasa, que foi um navio “inovador” com um orçamento infinito, mas que não conseguiu navegar mais que 120 metros.

Outro exemplo interessante é quando o autor fala sobre desenvolvedores que tem medo de tentar novidades porque todos os outros dizem que algo “sempre foi feito assim”. A comparação é feita com o experimento dos macacos raivosos, onde um grupo de macacos era colocado em uma sala com uma escada e um cacho de banas no final da escada. Sempre que um dos macacos subia, os outros levavam uma rajada de água gelada. Com o tempo, os macacos começaram a bater em qualquer outro macaco que tentava subir. Com o tempo, nenhum macaco subia mais, então um dos macacos foi substituído, e logo o macaco novo tentou subir a escada e apanhou dos outros, até desistir de subir. Os macacos foram então substituidos por completo e chegou-se ao ponto que nenhum macaco tentava subir sem nunca ter sido molhado.

No fim, o livro vale muito a pena. Os capítulos são curtos e bem concisos, ou seja, nada de redundância ou conversa fiada para deixar o livro maior. Então se você quiser se tornar melhor no que faz todo dia, recomendo a leitura do livro. Não sei sobre detalhes da versão traduzida, mas a versão original utiliza uma linguagem bem simples e fácil de ler.

The Productive Programmer
By Neal Ford
Publisher: O’Reilly Media
Released: July 2008
Pages: 226

Anúncios

[Livro] Rails: Instalando e Executando

Ruby on Rails: Instalando e Executando

Ruby on Rails: Instalando e Executando

Rails de uma maneira prática

O livro possui uma ideia muito boa: ensinar Rails utilizando um projeto de exemplo, de uma maneira bem prática. Eu particularmente prefiro muito esta abordagem e o livro realmente cumpre o que promete. Durante os capítulos são introduzidos os conceitos sempre acompanhados de códigos e imagens.

No entanto, o livro não fica muito extenso, já no primeiro capítulo é abordado desde a organização de um projeto Rails até criação de Controllers e Views. Ao todo, o livro possui menos de 200 páginas (contando índices, contra capa, etc.), ou seja, é um livro bem prático que fala sobre o necessário, mas não se aprofunda muito.

O projeto utilizado como exemplo permite um bom entendimento do framework, explorando principalmente a parte dos dados do projeto, modelagem de banco, relacionamentos entre entidades, entre outros fatores. No entanto, apesar de toda essa discussão sobre modelagem, o livro não propõe um modelo único que dura todo o tempo, em outros capítulos são exploradas também as ‘Migrations’, justamento para simular um projeto real onde ocorrem mudanças.

Sem enrolação

Todo o texto do livro é escrito de uma forma bem enxuta (se você só consegue entender alguma coisa lendo um livro da série Use a Cabeça! desista, esse livro não é para você) . Muita das vezes é interessante procurar outras fontes de informação para complementar e para dar uma maior compreensão sobre o assunto.

Neste ponto eu indico fortemente a apostila ‘RR-71 Desenv. Ágil para Web com Ruby on Rails 3’ da Caelum (caelum.com.br) onde são explorados mais afundo alguns conceitos, como a Convenção ao invés de Configuração, Rotas, Bases de Dados, entre outros. Além disso a apostila da Caelum oferece também um projeto base para os estudos e que pode ser utilizado como outro exercício.

O livro é sobre Rails!

Se você não conhece nada de Ruby, é melhor dar uma estudada antes, pois o livro não tem uma parte introdutória para explicar a linguagem. Mais uma vez indico a apostila da Caelum, pois os primeiros capítulos dão uma ótima visão para começar com Rails entendendo todos os detalhes da linguagem Ruby, como metaprogramação, blocos funcionais, hashes e outros pontos que são extensivamente utilizados no desenvolvimento com rails.

Problemas sérios com tradução

Agora vem um ponto muito negativo contra o livro: a tradução. Como todas as pessoas ligadas a área da tecnologia, eu também prefiro ler livros que foram publicados em inglês na língua original, no entanto me iludi achando que, por ser um livro técnico, haveria um cuidado especial com a tradução.

A tradução do livro tem problemas sérios, como comandos utilizados no terminal estarem traduzidos, código fonte (ou parte do código) traduzido, entre outros. Algumas falhas chegam até a tornar a frase totalmente sem sentido, como uma que diz: “[…] mas a compartilhação do leão deste aplicativo como é construido.” (???)

No entanto, como eu falei antes, se você utilizar um outro material para acompanhar, dá pra contornar esses problemas.

“Instalando”

Quem leu o post ‘Rails: instalando e executando! (Linux)‘ viu que lá eu comentei sobre um livro que prometia ensinar a instalar o Rails, pois bem, este é o livro. Comentei também que o livro manda procurar no Google sobre como instalar no Linux. Tudo bem, existem várias distros e seria muito difícil explicar tudo sobre todas as distribuições, então não é um ponto assim tão negativo. Para quem utiliza Mac, ou Windows o livro mostra muito bem como instalar tudo necessário.

Conclusão

Apesar dos problemas, no final das contas o livro vale a pena. A abordagem proposta realmente funciona, o livro cobre muitos tópicos de uma maneira bem prática e o preço do livro é barato, ainda mais comparado com outros livros de tecnologia.

Então se quiser aprender Rails e entender um pouco sobre os bastidores, recomendo este livro (se possível a versão original em inglês).