26 agosto 2009

Teste e design

Muita gente que conheço estranharia demais o fato de um artigo como esse estar em um blog sobre testes:

GoogleTestingBlog: How to think about OO

Ouço pessoas falando em reuso, em SOA, em arquitetura, bla bla bla..., sem nunca ter nem mesmo se interessado por coisas como essa.

Se você ainda não sabia, fique sabendo: testes tem tudo a ver com design.

Esse casamento é uma das coisas mais importantes que a indústria de software desenvolveu na última década, e a maioria das pessoas ainda está em discussões como "PHP é ruim, Java é que bom!"

O fato é que discussões riquíssimas, como a apresentada nesse artigo, praticamente não têm nenhum valor se você não escreveu testes automáticos desde o início do seu projeto. Não adianta nada você saber reconhecer um design ruim e conseguir propor outro melhor, se na hora H você não tiver coragem de fazer a mudança, com medo do impacto que isso vai ter.


Acredite. Praticamente 100% dos gatos que existem em todos os códigos do mundo são fruto de atitudes medrosas, fracassadas, do tipo "não véi! vamo mexer nessa parada não... Vamo dexá assim mesmo, senão a gente vai ter que mudar um monte de coisas..."

Então se você ainda estava parolando por aí e não tinha visto o bonde passar, acorde! Não dá pra fazer software de forma séria sem automatizar testes. Não dá! Só você (e os que trabalham com você) ainda não percebeu.

Deixa de ser cabeça dura e presta atenção no que está acontecendo!

26 julho 2009

O design está morto?

Outro dia um amigo cobrou o final da tradução que eu vinha fazendo do artigo do MartinFowler.

Não vamos mais precisar esperar, o pessoal da InfoQ.br se organizou mais rapido e traduziu o artigo todo.

Não deixem de ler!

02 junho 2009

Apresentação sobre Agile na Câmara dos deputados

Faz tempo que não reservo um tempinho pra escrever por aqui. Estou cheio de assuntos engatilhados, mas tenho andado meio comprometido demais com coisa demais... :-P

Assim que der eu volto a escrever com mais regularidade.

Por enquanto, aproveito pra deixar publicada aqui essa filmagem que o pessoal fez da palestra que apresentei na Câmara semana passada. Aproveito pra agradecer a gentileza do pessoal ter filmado e me passado.




.

08 março 2009

Patterns e XP

Ainda traduzindo...
O exemplo do JUnit me leva inevitavelmente a trazer à tona os patterns. A relação entre patterns e XP é interessante, e é uma questão comum. Joshua Kerievky argumenta que patterns são pouco enfatizados em XP e ele coloca seu argumento eloquentemente, de modo que não preciso repeti-lo. Mas vale notar que para algumas pessoas patterns parecem ser conflituosos com XP.

A essência desse argumento é que patterns são frequentemente usado em excesso. O mundo está cheio de programadores legendários, frescos de sua primeira leitura do GOF que aplicam dezesseis patterns em 32 linhas de código. Me lembro uma tarde, movido por uma deliciosa puro-malte, planejando com Kent um artigo a se chamar "Not Design Patterns: 23 truques baratos". Estávamos imaginando coisas como usar um IF ao invés de uma estratégia. A piada tinha um fundo de verdade, patterns são frequentemente usados em excesso, mas isso não faz deles uma má idéia. A questão é como você os usa.

Uma teoria sobre isso é que as forças do design simples o levarão aos patterns. Muitos refactorings fazem isso explicitamente, mas mesmo sem eles, seguindo a regra do design simples, você chegará aos patterns mesmo que você ainda não os conheça. Isso pode ser verdade, mas será que essa é realmente a melhor forma de fazer isso? É claro que é melhor se você já souber de antemão aonde está indo e se tiver um livro que possa te ajudar com as dificuldades, ao invés de ter que inventar isso tudo por conta própria. Eu certamente ainda vou ao GOF sempre que percebo um pattern surgindo. Para mim o design efetivo implica que precisamos saber o preço que vale a pena pagar por um pattern - isso é sua própria habilidade. Similarmente, como Joshua sugere, precisamos estar mais familiarizados sobre como derivar um pattern gradativamente. A esse respeito XP trata o modo como usamos patterns de modo diferente do usual, mas certamente não remove seu valor.


Mas lendo algumas das listas de e-mail eu tenho o sentimento distinto de que muitas pessoas acham que XP desencoraja patterns, apesar da ironia que a maioria dos proponentes de XP foram lideres do movimento de patterns também. Isso é porque eles viram além dos patterns, ou porque os patterns estão tão impregnados em seus pensamentos que eles nem percebem mais? Eu não sei a resposta para os outros, mas pra mim patterns ainda são vitalmente importantes. XP pode ser um processo para desenvolvimento, mas patterns são a espinha dorsal do conhecimento sobre design, conhecimeno que é valioso tanto quanto o processo. Processos diferentes podem usar os patterns de modos diferentes. XP enfatiza tanto a não utilização de patterns até que eles sejam necessários como evoluir o código do seu modo derivando um pattern por meio de uma implementação simples. Mas patterns são ainda uma peça chave de conhecimento a se adquirir.

Meu conselho aos XPeiros usando patterns seriam:

* Invistam tempo aprendendo sobre patterns
* Concentrem-se em quando aplicar o pattern (não tão cedo)
* Concentrem-se em como implementar o patterns em sua forma mais simples primeiro, então adicione complexidade depois.
* Se você utilizar um pattern, e depois descobrir que não valeu a pena - não tenha medo de tirar ele fora de novo.

Eu acho que XP deveria enfatizar mais o aprendizado sobre patters. Não sei ao certo como encaixaria isso nas práticas de XP, mas tenho certeza de que o Kent pode descobrir um jeito.

16 fevereiro 2009

Maré de Agilidade - Swell Salvador

Opa,

Só pra avisar que vamos fazer o MaréDeAgilidade versão Salvador-BA.

Ô meu rei, num deixe de participar! :-)

15 fevereiro 2009

Visão de futuro

Incrível como a visão que tinham da internet em 1969 estava correta:



Me faz lembrar o primeiro MSX que tive... humm.. nem lembro quando... Devia ser 90, 91...



Me lembro exatamente a expectativa em que fiquei quando minha vó comprou pra mim um modem!

Qual não foi minha frustração quando descobri que só existiam 2 ou 3 serviços disponíveis que pudessem fazer uso do tijolo - que não tinha sido nada barato. Os serviços não eram ainda ligados em rede, a gente tinha que discar diretamente para o número do Bradesco, por exemplo.

E o diabo é que nenhum dos serviços eram úteis pra mim! :-P

Pra mim a internet já existia naquela época. Quando saí da loja com o modem debaixo do braço, tinha certeza abstoluta de que iria chegar em casa e visitar museus pelo computador, comprar vídeos, conhecer pessoas, criar coisas.

Embora a imagem que façamos do futuro não seja exata nos detalhes, simbolicamente parece que já sabemos pra que lado as coisas estão se encaminhando.

08 fevereiro 2009

Que diabos é GTD?

Esse vídeo vale a pena ver... Seria ótimo se houvesse uma versão legendada por aí, embora o inglês dele seja bem fácil de entender...

O Video é longo, se tiver sem paciência, dê uma olhada nesse post, que traz uma "resenha" do video.