Martin in Rio
Estive nesta última segunda-feira, dia 14/06 na PUC/RJ para assistir a primeira palestra de Martin Fowler na América do Sul.
O evento começou com a apresentação “Como Agile tem transformado a área de TI” de Paulo Caroli e Rodrigo Toledo e em seguida, Mr. Fowler fez o que ele chamou de Suite of Talks e falou sobre três assuntos, separados em três mini-palestras. A seguir falo um pouco de cada um dos três assuntos.
1) Domain Specific Languages (DSLs)
O auditório em silêncio ouviu Martin Fowler falar que DSLs são basicamente linguagens de expressividade limitada ao domínio do problema em que se propõe a resolver.
E que o fator importante que torna as DSLs diferentes de linguagens “normais” é que elas são feitas com foco na leitura e não na escrita. Escrever DSLs tem a ver com tornar o código em uma linguagem limpa e clara que explique facilmente o domínio ao desenvolvedor.
Linguagens de programação normais, ainda que codificadas de forma simples e clara, falham em ensinar ao desenvolvedor sobre o domínio. Além disto, linguagens como o Java, não permitem alterações de comportamento em runtime, o que facilita muito na hora de entender o comportamento do domínio.
Mr. Fowler deu um exemplo de DSL em XML que permite alteração em runtime, sem precisar recompilar o código, mas o exemplo era muito verboso e este é o problema do XML.
Ele também mostrou um exemplo em uma linguagem que foi logo reconhecida por alguns do auditório que gritaram: Ruby! Com certeza este exemplo foi o mais expressivo de todos. (Alguém tem fotos dos exemplos?)
Ainda falando sobre expressividade de códigos, Mr. Fowler mostrou um exemplo com Expressões Regulares e soltou a bomba:
“Toda vez que você tenta resolver um problema com expressões regulares, você acaba arrumando dois problemas.”
Martin Fowler terminou a palestra falando do seu livro “Domain Specific Languages” que será lançado em Setembro deste ano.
2) Richardson Maturity Model
Mr. Fowler falou sobre o modelo criado por Leonard Richardson que mostra os três passos necessários para se alcançar a excelência em implementações de web services REST.
Esta palestra teve o mesmo conteúdo que o artigo “Richardson Maturity Model: steps toward the glory of REST” escrito por Martin Fowler. Por este motivo, não vejo a necessidade de falar mais sobre o assunto.
3) Continuous Integration e Continuous Delivery
Já esta mini-palestra foi dividida em duas:
3.1 Continuous Integration
Martin Fowler falou rapidamente sobre o assunto dando o exemplo de dois desenvolvedores criando duas funcionalidades distintas, cada um trabalhando em uma linha separada e adicionando as funcionalidades a linha principal assim que terminavam.
O exemplo foi sendo incrementado com situações que iam sempre complicando a vida dos dois desenvolvedores até que eles precisaram usar Continuous Integration.
E os detalhes sobre o assunto, estão no livro Continuous Integration: Improving Software Quality and Reducing Risk de Paul M. Duvall. Um livro da série de assinaturas de Martin Fowler.
Ele ainda ressaltou que se o time desenvolve em linhas de desenvolvimento separadas, é imprescindível que cada desenvolvedor integre seu código a linha principal pelo menos uma vez por dia.
3.2 Continuous Delivery
Ele falou sobre como era demorado para os desenvolvedores verem seus códigos subindo para produção e como era trabalhoso dar suporte a estas subidas.
Madrugadas em claro, semanas estressantes. Toda essa dificuldade foi simplificada com o Continuous Delivery, que é um passo adiante do Continuous Integration.
Ele falou de como colegas dele na ThoughtWorks estão utilizando o processo automático que roda testes desde unitários até de performance e caso todos os testes passem, o código sobe para produção.
Os detalhes sobre Continuous Delivery estão no livro Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation de Jez Humble. Sim, mais um livro da série de assinaturas de Martin Fowler.
4) Perguntas
Um fato interessante: não houve perguntas sobre Continuous Integration, nem sobre Continuous Delivery e nem sobre Richardson Maturity Model. As pessoas estavam mesmo interessadas em DSLs e – acredite – em Domain-driven Design.
Martin Fowler fechou a sessão de perguntas com uma piada depois que um professor da PUC o perguntou se ele voaria num avião construído com metodologia ágil:
“Uma vez, numa conferência de desenvolvimento de software com vários professores, alguém os perguntou se eles voariam em aviões criados pelos seus alunos. Todos riram e afirmaram que com certeza voariam em aviões criados por seus alunos. Mas um professor foi bem firme em sua resposta:
- Eu não voaria de jeito algum! Sabem por que!? Porque com certeza nenhum código dos meus alunos faria um avião decolar!”
17/06/2010 at 10:22 Permalink
Diogo,
Obrigado pelo resumão da palestra dele.
Você tem ou sabe onde encontrar a transcrição literal do que ele falou sobre Smalltalk?
Obrigado!
17/06/2010 at 14:51 Permalink
Bacana Diogo. Obrigado por ter escrito sobre o evento.
22/07/2010 at 08:38 Permalink
Seu post ficou muito bom. Ótimo resumo e dos links.

Vou ser mau em tirar seu prestígio de ter ido ao primeiro momento do Martin Fowler na America Latina, o super star de TI disse lá mesmo que já tinha vindo em outras partes do Brasil e que era a primeira vez no Rio (e comentou sobre a cidade).
Boa sorte, meu caro!
22/07/2010 at 08:44 Permalink
Com certeza, Eduardo. Mas esta foi a primeira vez que ele veio – oficialmente – fazer apresentações, etc.
22/07/2010 at 09:09 Permalink
Não tira o mérito do seu post, que estou usando para me lembrar do evento. Valeu