Introdução à Arquitetura e Design de Software

Em virtude dos projetos em que eu estava envolvido, decidi aprender um pouco mais sobre Java. É comum no meu dia-a-dia escrever algumas linhas de código nessa linguagem — normalmente acompanhado por alguém com mais experiência do que eu. Foi exatamente um desses programadores mais experientes, o Thiago Caiubi, que me indicou o livro “Introdução à Arquitetura e Design de Software — Uma visão sobre a Plataforma Java”. Excelente indicação, por sinal.

Me lembro de ter ouvido um colega de faculdade dizer que uma das partes de se aprender uma nova linguagem é entrar no “eco-sistema” dela. Um grande acerto do livro é começar exatamente por este ponto. O capítulo 1 — A plataforma java — nos introduz ao glossário da linguagem, nos explica como a linguagem tem evoluído e mostra como funciona o sistema de especificações com a tal “burocracia”  em se incluir uma funcionalidade na plataforma. Embora seja um livro focado em uma tecnologia, fiquei impressionado com o grau de imparcialidade apresentado. Foi muito bom ver que nenhuma das ferramentas é apresentada como “a solução definitiva para o problema X” (nem mesmo o próprio Java). Os autores se esforçaram para apresentar pontos a favor e contra cada tecnologia, assim como possíveis casos de uso.

O livro se faz valer também por suas referências. Pausei a leitura várias vezes para poder lê-las e refletir com calma. Essas pausas, no entanto, se tornaram um pouco incômodas com o tempo. Porque as referências ficam listadas todas no final do livro (NBR 14724, ou parecido). Aliás, por que não colocá-las no rodapé da página?

Como a própria descrição já diz, o objetivo deste livro não é te ensinar a linguagem e sim te introduzir ao pensamento arquitetural, e de design, de software que utiliza a plataforma Java nos dias de hoje. Isso faz com que o livro aborde temas como frameworks, REST, conceitos de orientação a objetos, dentre outros. Ainda assim, enriquece estes tópicos mais “comuns” com a experiência dos autores — Não necessariamente recomendando algo, mas estimulando seu raciocínio.

Visto que a última vez que li um livro de Java foi em 2008 — durante a minha faculdade — este livro me ajudou a me atualizar com o desenvolvimento Java desta década e estudar conceitos de arquitetura e design. Não sei se o livro gerará tanto interesse aos que já tem mais experiência com a linguagem, mas acho bem possível que ele te leve a uma reflexão.

Anúncios

Pro Javascript Design Patterns

Mais um livro de JavaScript lido. Desta vez foi Pro Javascript Design Patterns de Dustin Diaz e Ross Harmes. Fiquei interessado pelo título logo de cara, não conseguia enxergar como certas convenções populares em  outras linguagens iriam se encaixar no estilo “diferente” do JS.

O livro cumpre bem seu papel de apresentar os Design Patterns de forma fácil e mostrar como é possível adaptá-los ao Javascript. Confesso que resisti bastante às concessões feitas para tornar possível a implementação de alguns conceitos, como namespaces, ainda que seja claro o potencial benéfico que têm.

Embora os exemplos sejam bem enfáticos quanto à separação de responsabilidades, o que já era esperado dado que o intuito é ensinar Design Patterns, fiquei incomodado com o estilo do código-fonte. Boa parte das funções e métodos são bem extensos e sem boa legibilidade. Algumas vezes eu simplesmente desisti de entender o que cada linha de código fazia e deduzi pelo nome do método. Provavelmente, não há algum problema de design neles, mas o jargão do Uncle Bob ecoou na minha cabeça algumas vezes.

Se você já não gosta de JavaScript, por qualquer motivo, provavelmente este livro não vai mudar a sua opinião. Mas, se você já conhece a liguagem, está acostumado a desenvolver tudo o que precisa sem muita orientação a objetos e separação de reponsabilidades, e já percebeu que isto não é suficiente, este livro pode te ajudar muito.

Professional JavaScript for Web Developers, 2nd Edition

Professional JavaScript for Web Developers - 2nd EditionJavascript é uma linguagem que tem se tornado cada dia mais importante. Ela percorreu um grande caminho desde os longínquos tempos em que servia apenas para validar formulários e impressionar os amigos, passando pela revolução do AJAX e interfaces ricas, até chegar nos dias de hoje com novas possibilidades do HTML5 e Node.js. Diante de todo este movimento, eu precisava aprofundar meus conhecimentos na linguagem.

Muitos são os livros que abordam o Javascript, mas o Professional Javascript for Web Developers me pareceu ser aquilo que eu precisava. Em seu índice, encontrei desde conceitos básicos, como variáveis e escopo, até outros mais novos, como Client-Side Storage.

Durante a leitura, me surpreendi ao descobrir pequenas armadilhas e pormenores interessantes mesmo em capítulos onde eu não esperava novidades. Pude entender conceitos como: O que é ECMAScript, DOM Levels, Como evitar alguns memory leaks, melhorias de performance, boas práticas, etc.

O autor, Nicolas C. Zakas, trabalhou por bastante tempo no Yahoo! como front-end engineer e contribuiu bastante para o desenvolvimento da YUI. Recentemente, ele ajudou a criar o CSSLint, uma ferramenta de qualidade de código CSS aos moldes do JSLint. Uma boa parte do conteúdo do livro está disponível online nos artigos de seu blog, vale a pena conferir.

De fato, a leitura deste livro me ajudou bastante a conseguir entender a linguagem como um todo e desenvolver boas práticas. Os dois últimos capítulos do livro (Upcoming APIs e The Evolution of JavaScript) tentam adiantar o que estava por vir, aumentando sua vida útil. Naturalmente, dado a evolução a passos largos do HTML5, a implementação de algumas features tomaram hoje um caminho diferente ou perderam parte de sua relevância visto que o livro é de 2009.

Uma atualização com as APIs e funcionalidades mais recentes seria bem vinda. Ainda assim, não perca a oportunidade de ler este livro se você, como eu, quer se aprofundar mais nas “entranhas” do JavaScript.

A Arte do Desenvolvimento Ágil

Há muito tempo, desenvolvimento ágil é um assunto do meu interesse. Este interesse começou em 2005 quando li um e-book que explicava superficialmente o que é XP. Anos passaram, fiz faculdade, aprendi mais sobre desenvolvimento software,  e meu conhecimento sobre este tema não passou do “superficial”.

Resolvi comprar o livro The Art of Agile Development de James ShoreShane Warden (comprei o original, mas também existe a versão em português). A descrição, na página da amazon, diz que o livro não diz apenas o que é Desenvolvimento Ágil, mas trás informações práticas para adotá-lo por todos os envolvidos no projeto. Isto era exatamente o que eu precisava.

O livro cumpre exatamente o que se propõe. É muito interessante repensar conceitos sobre qualidade e sucesso de um projeto, entender conceitos como TDDDomain-Driven DesignPair Programming,  etc. Além de saber o que é e como fazer, também fui incentivado a descobrir o porquê dos conceitos. O livro te leva à reflexão de uma forma muito interessante, pois depois das explicações, também são apresentadas contra-indicações e alternativas. O livro contém experiências dos autores e exercícios que são usados para que possamos entender melhor algumas práticas.

A cada nova prática utilizada, os benefícios são quase instantâneos. Como dito por um dos participantes da grupo de discussão do XP: O desenvolvimento ágil fez com que o desenvolvimento de software voltasse a ser divertido.