Análise do livro Release It!: Design e Deploy

Olá pessoal, eis que nesta noite fria de terça-feira, trago a vocês a análise deste ótimo livro que vai ti ajudar a sofrer menos no envio de aplicações para a produção.

O livro de hoje é Release It! Design e Deploy da série Pragmatic Programmers, escrito por Michael T. Nygard, programador e arquiteto de software por mais de 15 anos, conhecido por suas abordagens práticas com relação a arquitetura.

Em Release It! veremos relatos muito palpáveis da experiência de Michael em situações do dia-a-dia, de problemas verdadeiros e comuns, onde o autor descreverá os anti-patterns por trás da falha e os patterns aplicados para a solução.
Acredito que o maior legado que este livro deixa, são os pontos de atenção descritos com relação a arquitetura, com destaque, o fator multiplicador e o fator limite.
O fator multiplicador trata da negligência com relação a recursos, algo como "10 mb de sessão por usuário não é problema" quando a aplicação será responsável por receber 1000 usuários, resultando em 10 gb de sessão. Já o fator limite, fala sobre os custos envolvidos na compra de um recurso completamente novo, exemplo, "um servidor que atinge o seu limite", neste caso, um custo e prazo que seria de uma simples virtualização, se tornam imensamente maiores.

Release It! é um livro de 2007, atualmente com 10 anos de idade, e portanto deve ser lido como tal, o fator limite por exemplo, é muito bem mitigado atualmente com o advento da cloud, raramente temos estes cenários de servidor atingindo o limite, e se ocorrer, o provisionamento é rápido. Isso não faz do livro desatualizado, pois estes problemas ainda existem em alguns cenários.

No geral, o livro trás problemas corriqueiros, que incrivelmente, 10 anos depois, ainda ocorrem com frequência em diversos softwares, e que tornam a vida dos desenvolvedores um inferno no fatídico momento em que um software vai para produção.

Em minha análise, acredito que Release It! é leitura obrigatória para todo desenvolvedor, para nos lembrar de problemas que negligenciamos, e que o ambiente de produção não exita em jogar em nossa cara às 03 da madrugada.

Custando míseros $ 16,50  (dólares) em seu formato digital na Amazon, este livro vale cada centavo devido ao seu conteúdo rico e direto. Uma leitura simples de 326 páginas, mas muito enriquecedora.

Nota adicional, este livro é um dos mais velhos que encontrei falando sobre o pattern Circuit Breaker, não encontrei referência anterior, acredito ser um dos primeiros.

Livro: Release It! Design e Deploy
Autor: Michael T. Nygard
Número de páginas: 326
ISBN-13: 978-0978739218
Editora: Pragmatic Bookshelf; 1 edition (March 30, 2007)

Blog do Michael Nygard: http://www.michaelnygard.com/
Link de uma palestra minha, falando sobre Netflix Hystrix, que implementa o pattern Circuit Breaker descrito neste livro: https://www.slideshare.net/RicardoRodriguesdeFaria/netflix-hystrix-76661449


Pré Venda do novo livro do Uncle Bob (Clean Architecture)

Olá pessoal, essa é uma postagem um pouco diferente, estou aqui para falar sobre o início da pré venda do novo livro do lendário Uncle Bob (Robert Cecil Martin).
Escritor dos ótimos livros Clean Code e Clean Coder, em português Código limpo e Codificado limpo respectivamente, terminou o seu novo livro da série "Clean", seu nome é Clean Architecture e acaba de entrar em pré venda na Amazon.
Em sua nova empreitada, o autor tenta clarificar as seguintes perguntas:

Quais são as estruturas de alto nível para diferentes tipos de aplicações, incluindo web, banco de dados, console e apps embutidos?
Quais são os princípios centrais da arquitetura de software?
Qual o papel do arquiteto, e o que ele realmente está tentando alcançar?
Quais os princípios do design de software?
Como design e arquitetura acabam mal, e o que você pode fazer sobre isso?
Quais as disciplinas e práticas dos arquitetos e designers profissionais?
E pra quem já leu os outros livros, certamente será uma compra obrigatória.

Disponível apenas em inglês e em formato impresso (infelizmente nada de ebook até o momento), o livro tem seu lançamento marcado para 2 de outubro deste ano, 2017, e está disponível para pré compra no valor de R$ 134,92 com a Amazon garantindo o menor preço daqui até a data de lançamento.
Vou esperar uma data mais próxima para reservar o meu, mas você pode reservar agora no link: Amazon.com

Caso queira ver a minha análise sobre o livro Clean Coder, clique aqui!

Até mais.

A prática pela prática, a tutorialização dos livros

Um pensamento muito comum entre os profissionais mais experientes é a frase "menos teoria, me mostre o código", quando se entende as bases da tecnologia, é justamente o que buscamos, o problema é quando este conceito de "tutorialização" é aplicada nos livros, material onde comumente buscamos uma carga conceitual maior, para de fato entender como as coisas funcionam.

Quando profissionais com menos experiência encontram apenas este tipo de material, "tutorializado", aprendem apenas códigos soltos para executar determinada atividade, sem entender o porquê faz, no final das contas, a leitura agrega pouco ao profissional em maturidade, se tornando apenas uma fonte de aprendizado empírico acelerado.

Para vislumbrar a desvantagem disso para o mercado, é necessário perceber que fazer software por fazer, sem entendimento das técnicas e como a tecnologia utilizada funciona, nos leva a incorrer nos mesmos erros anteriormente percebidos pela indústria de software. O resultado disso, são softwares criados com baixa qualidade e manutenibilidade.

Não é incomum encontrar jovens com alguns anos de experiência, que não dominam as tecnologias que trabalham, acostumados a apenas resolver os problemas a medida em que eles chegam, passando os olhos em breves resultados do Google, apenas reaproveitando o primeiro código que funcionar.

Talvez com o objetivo de atingir este tipo de profissional, muito autores da atualidade praticamente criam "tutoriais" de 100 páginas e os mandam para editoras, livros sem carga conceitual, apenas recheados de códigos por todos os lados (e até mesmo prints de telas), fato é, que estes livros encontram seu público por sua abordagem rasa (e neste caso, rasa não necessariamente é direta ao ponto).

Para dizer a verdade, em alguns livros que encontro, não parece que a intenção do autor é de atingir pessoas que querem a informação rasa, é como se ele tivesse apenas a informação rasa, e que apenas o resultado de estudos iniciais sejam suficientes para publicação de um livro com míseras 80~100 páginas.

No mercado brasileiro, esta situação se agrava, uma vez que temos poucos autores, e a falta do domínio do inglês deixa muitos leitores presos aos materiais nacionais, que nem sempre são ruins, é importante destacar, mas que nos últimos 2 anos, tem baixado o nível consideravelmente.

Este post é um desabafo, sem crítica direta a material ou editora, apenas um apanhado de considerações. A verdade, é que se o material é de baixa qualidade, o filtro deveria ser editora e depois consumidor, se no final das contas, seguimos adquirindo, não haverá nenhum esforço para melhorar a qualidade final.

Em adicional, para explicar "Tutorialização", termo que provavelmente não existe na língua, quero invocar a definição da palavra "Tutorial" na Wikipedia:
Tutorial é uma ferramenta de ensino/aprendizagem, podendo ser tanto um programa de computador quanto um texto, contendo ou não imagens, que auxilia o processo de aprendizagem exibindo passo a passo o funcionamento de algo.
Quero dizer que me refiro, a prática de fazer apenas o passo a passo para atingir um objetivo, sem necessariamente explicar o porquê do passo a passo, ou como algo funciona, apenas fazer funcionar.

Obrigado, e até a próxima.

Análise do Livro: Java Web Services - Up and running

Eis que nesta fatídica terça feira, depois de uma longa pausa retorno com as análises, o motivo da grande demora em fazê-las certamente está relacionada a este livro que falaremos hoje, o livro em questão é Java Web Services, UP and Running escrito por Martin Kalin e distribuído pela editora O'Reilly.

A algum tempo atrás comecei a trabalhar com AngularJS todos os dias, o que me motivou a buscar mais informações sobre uma boa construção não só de apis rest, mas de todo tipo de web services Java. Com relação a este assunto, um dos livros mais comentados na Amazon e com menos ressalvas foi o escolhido para esta análise.

O livro que carrega a palavra Java no nome passa a impressão que o tema seria abordado sob a visão do Java, o que a princípio não acontece, antes mesmo de deixar claro que tipo de web services estamos tratando, me vi em meio a vários exemplos de linguagens como C#, Perl, Python, tudo isso com o intuito de mostrar que os serviços não estão ligados a uma plataforma, o meu maior incomodo neste ponto são as várias repetições sobre o assunto ao longo do livro, isso acontece por mais de 5 vezes. Além disso, as várias linguagens podem acabar gerando uma confusão em um leitor menos experiente que adquiri um livro esperando ver códigos em Java e acaba vendo exemplos em uma linguagem que ele não é pro eficiente.

Algo que dou muito valor em qualquer livro é a dinâmica do autor em apresentar os assuntos, coisa que aqui percebe-se que é precária, os assuntos são jogados e misturados sem uma separação clara de seções, em um momento eu estava lendo sobre Jax-RS, logo em seguida o mesmo exemplo foi mostrado com Jax-B e em seguida em Soap, enquanto soap só me seria explicado 2 capítulos a frente. Tudo isso pode causar uma grande confusão para os mais desavisados.

Talvez o único ponto interessante da leitura, sejam os conceitos de segurança e comunicação com servidores, entretanto o assunto é facilmente absorvido em uma pesquisa do Google e representa apenas 10% deste livro.

Como último ponto, como leitor, não consegui perceber a intenção do autor, se era explicar pontos específicos das apis de web services, ou se os conceitos básicos e como fazer de melhor forma. Ambos assuntos se misturam, mas na dose errada, ao final de 360 páginas densas com muitos códigos, não masterizei nem o conhecimento da api de web services Java, nem de web services em geral.

Aliando a falta de fluidez na leitura com o preço de R$ 126,34 (em sua versão física) este é definitivamente um livro que não recomendo.

Livro: Java Web Services : Up and Running
Autor: Martin Kalin
Editora: O'Reilly
Número de páginas: 362
ISBN: 1449365116

Análise do livro JPA Eficaz - Hebert Coelho

Olá amigos, eis que nesta segunda-feira fria venho vos falar deste livro que aborda tudo o que você precisa para trabalhar com JPA.

O livro em questão é JPA Eficaz, publicado pela Casa do Código e escrito por Hebert Coelho do site uaiHebert.com. Hebert é desenvolvedor a mais de 10 anos, professor universitário, assíduo participante do fórum GUJ, portador de algumas várias certificações Java e até onde tenho conhecimento, está no processo de certificação OCMJEA.

Como disse anteriormente, este livro tratará de aspectos básicos que você deveria saber para trabalhar com JPA. O livro abordará desde o mapeamento básico de entidades, instruções JPQL mais avançadas e chegará a pincelar lock e otimizações para EJB e Spring. Você não encontrará neste livro aspectos em relação a especificação JPA e cache por exemplo.

Como o próprio nome já diz, teremos assuntos eficazes no uso do JPA, você encontrará várias dicas espertas ao longo das páginas deste livro e alguns avisos muito importantes que muitos desenvolvedores não se atentam como "efeito n+1" e comportamento do cascade.

Para iniciantes em JPA esta é uma leitura obrigatória que fará com que você não crie percas de performance silenciosas como é o caso do "efeito n+1" ao tentar resolver um "could not initialize collection". Como estão totalmente ligados a estes assuntos, você receberá um explicação clara e simples das collections/atributos lazy/eager.

De quebra também encontrará uma breve pincelada em EJB's e como eles se integram ao JPA. Este assunto é citado devido ao tratamento de transações manual ou feito por container (Este assunto também é abordado).

Em consideração final, este livro lhe trará ótimas explicações de aspectos recorrentes na vida de desenvolvedores JPA, de forma sucinta e com muita didática. Para os que se aprofundaram em outras leituras mais avançadas de JPA este material não trará grandes ganhos, mas talvez clareie alguma coisa que você tenha ficado com dúvida.

O livro custa R$ 30,00 em formato digital e pode ser encontrado no link a seguir http://www.casadocodigo.com.br/products/livro-jpa-eficaz.

Livro: JPA Eficaz
Autor: Hebert Coelho
Número de páginas: 183
ISBN: 978-85-66250-31-2
Editora: Casa do Código

PS: Este livro me despertou a vontade de tirar a certificação JPA, percebi que fazia muita coisa sem saber o motivo.

Análise do livro: O codificador limpo - Robert C. Martin (Uncle Bob)

Olá amigos, eis que nesta linda sexta-feira falaremos de um livro que desfere um tapa na cara do leitor a cada página, o livro em questão é "O codificador limpo" do mito Uncle Bob.

Distribuído no Brasil pela Alta Books e escrito por Robert Cecil Martin. Robert que é carinhosamente apelidado de Uncle Bob, desenvolvedor desde a década de 70, escritor do Manifesto Agile e um dos precursores do movimento Craftsmanship exercendo alta influência neste cenário.

Este livro é um caso especial pois o li traduzido, normalmente evito este tipo de leitura pois as traduções costumam ser feitas sem muita preocupação com os termos técnicos, entretanto acabei me surpreendendo com a qualidade uma vez que não identifiquei nada gritante ou que saísse de contexto. Então eu definitivamente recomendo a versão traduzida.

O plot principal  do livro é a conduta do programador, desde como se portar em uma breve conversa na fila do café até uma reunião importante as vésperas da entrega de um projeto. E ai é que está o "quê" deste livro, ele trata justamente das coisas que programadores não se preocupam, coisas que não aprendemos na faculdade. Este livro é o guia definitivo da conduta de um profissional que escreve códigos.

Além dos cenários já descritos, encontramos dicas de como se portar com os amigos, da responsabilidade com sua carreira profissional, estudos paralelo ao trabalho e até um trecho explicando os ganhos da técnica de pomodoro.

Como disse anteriormente, "este livro desfere um tapa na cara do leitor a cada página", Bob não poupa palavras ao citar nossa falta de profissionalismo e como programadores encaram suas carreiras de uma forma diferente de outras profissões. Um ponto de atenção é que as palavras são duras, sendo assim é preciso encarar de cabeça abertas as críticas.

Não concordei completamente com todos os pontos defendidos por Bob, alguns deles como "Profissionais não fariam algo de baixa qualidade mesmo que seus chefes o obrigassem" são um pouco subversivos, mas cada conselho tem seu valor.

A leitura é muito fluída e por não trazer nenhum assunto técnico, você não terá que reler nenhum parágrafo, além das histórias sobre a carreira de Bob, vemos também histórias de alguns personagens como a programadora, o gerente, o chefe e o cliente. O reconhecimento é automático, talvez por isso, o livro se torne ainda mais interessante, em cada trecho comentado você se verá em algum desses papéis. As vezes do lado com razão, e as vezes do lado cego.

Este livro mostra tantos pontos de vistas que eu recomendo não só para desenvolvedores, mas para todos na área de TI, sem dúvida é uma leitura que agregará um grande valor a sua carreira.

O livro pode ser encontrado por volta de R$ 30,00 em algumas lojas do buscapé http://www.buscape.com.br/o-codificador-limpo-robert-c-martin-8576086476.html#precos, um valor baixo pela qualidade do material, haja visto que o Best Seller de Uncle Bob (Código limpo) custa em média R$ 60,00 reais.

Livro: O codificador limpo
Número de páginas: 244
ISBN: 978-8576086475
Editora: Alta books

Análise do livro Design Patterns com Java - Eduardo Guerra

Meus amigos, eis que nessa quarta feira ensolarada, vos apresento a análise deste que já adianto, maravilhoso livro de Eduardo Guerra.

O livro em questão é Design Patterns com Java publicado pela casa do código e escrito por Eduardo Guerra, este que para quem não conhece é editor chefe da revista MundoJ, pesquisador no INPE,já foi professor no ITA e trabalhou no desenvolvimento de diversos frameworks open-sources.

Na minha leitura deste livro destaquei dois pontos que para mim são de muita importância quando falamos sobre padrões, o primeiro é que apesar de levar Java em seu nome, o livro trás exemplos simples que em sua maioria podem ser aplicados a qualquer linguagem. O segundo ponto é simplicidade com que o autor trás um tema que normalmente é mal explicado e sem exemplos práticos.
Basicamente o livro corre da seguinte maneira, Novo padrão -> Breve explicação -> Aplicação prática ->Exemplo. E essa fórmula funciona maravilhosamente bem. 
Aos menos experientes em padrões cada um dos exemplos salta aos olhos, já de cara nos deparamos com os Hook/Template methods e as infinitas possibilidade de se resolver problemas do dia a dia de forma elegante e simples. Aos mais experientes o livro também não passa batido, o autor trás consigo sua experiência ao abordar padrões menos triviais como Chain of Responsibility, Command, Double Dispatch e Visitor sem toda a carga teórica do livro que lhes dão origem (Design Patterns: Elements of Reusable Object-Oriented Software). 
A leitura do livro é muito fácil, você consegue passar suas páginas com certa rapidez sem ser massante e facilmente lerá 30 páginas em uma viagem de ônibus. Sem dúvida uma leitura que indico muito.
Nos capítulos finais o autor expõe para os mais desavisados que apesar de muito úteis, alguns padrões abordados no livro já se encontram em frameworks do dia a dia, não sendo necessário reinventar a roda.

Um atrativo muito grande do livro é seu preço, em versão digital o mesmo sai por R$ 29,90, um preço muito interessante por 300 páginas de muita qualidade.
O livro pode ser encontrado neste link http://www.casadocodigo.com.br/products/livro-design-patterns tanto no formato físico como digital.

Livro: Design Patterns com Java: Projeto orientado a objetos guiado por padrões
Número de paginas: 305
ISBN: 978-85-66250-11-4