Arquivo de Setembro de 2009

Rodrigo Yoshima

O que matou o RUP pode matar o Agile

Desde algumas polêmicas que ocorreram no Scrum Gathering neste ano, tenho discutido em diversos fóruns de discussões e eventos sobre o que tem ocorrido com a nossa comunidade de desenvolvimento ágil. Eu temo pelo o que pode ocorrer com o Agile aqui no Brasil. O que matou o RUP pode também matar o Agile.

Quando eu estava no começo da minha carreira, no início dos anos 90, por incrível que possa parecer os métodos eram ágeis. O cliente e os reais usuários eram muito próximos e participavam ativamente do projeto. O ciclo, apesar de não ter formalidades iterativas, era focado em entregas frequentes. Apesar das arquiteturas fracas, a qualidade era boa e a satisfação dos usuários era maior. Trabalhei com Clipper, Visual Basic 3-6, Mumps e outras coisas da época - além de administrar redes Novell 3.12 e Lantastic. Os projetos eram divertidos, focados em resultados e na maioria das vezes o financiador ficava no seu pé. Eu me lembro do Tonhão, o gerente financeiro da Rede America Burger & Pasta, meu primeiro (e único) emprego como programador CLT. O Tonhão todas as sextas batia na minha mesa no CPD e perguntava: “-E aí Japa, tá pronto?”. Todas as sextas, religiosamente às 15:00 o Tonhão cobrava sobre aquele sistema de controle de caixa das lojas que acabou com os disquetes e com muita burocracia, pois usava comunicação via modem.

Nos meados de 1996 recebí uma ligação de um amigo meu do colégio técnico dizendo que as consultorias estavam pagando R$ 22,00 a hora para projetos do Bug do Milênio em COBOL. Bem, para a época esse valor era bastante significativo, topei na hora e lá fui eu ter a experiência de uma empresa grande. Se existe uma coisa que você pode responsabilizar sobre a bagunça que existe no mercado de TI hoje essa coisa é O BUG DO MILÊNIO. Eu estranhei muito trabalhar em consultorias nessa época. Os projetos chegavam e nem tinha uma única reunião com o cliente. Na maioria das vezes tinha um gerente-proxy entre a equipe e os clientes. Os projetos Y2K eram ainda mais peculiares. Teve projetos que o trabalho era passar uma ferramenta de detecção de problemas Y2K, ir até o código indicado pela ferramenta e fazer as alterações, mas sem recompilar e sem qualquer teste. Eu me sentia um digitador. Levei até uma bronca de um coordenador por tentar compilar o projeto para ver se nossas alterações ao menos geravam os binários. Meu coordenador gritou que aquilo não era escopo do projeto. Nesse momento eu ví que qualidade não era uma preocupação central das consultorias.

Passada a fase Y2K, começaram os projetos Internet e de sistemas periféricos de grandes implementações ERP. O problema é que o desenvolvimento de software empírico (que eu apliquei nos meus estágios e lá na Rede America) não atendia às necessidades de projetos outsourcing. Gerentes queriam controles, relatórios e Gantt Charts. A preocupação maior era a mesma dos projetos Y2K - O ESCOPO. Se você estivesse numa consultoria no final dos anos 90, você compreenderia perfeitamente o mindset do SEI com o seu CMM. Os gerentes de consultorias buscavam algo que amarrasse a equipe ao contrato com o cliente. Meio por fora de tudo isso comecei a estudar Orientação a Objetos, OMT, Booch, e mais pra frente, a UML e o RUP. Minha primeira experiência prática com o RUP foi num projeto internacional para a Phillips Medical Systems em 1999.

Esse projeto da Phillips era um sistema orçamentário empresarial que integrava vários departamentos, inclusive a matriz em Rotterdam. Foi desenvolvido em Visual Basic, Orientado a Objetos e banco de dados Oracle. Quando olhei o RUP pela primeira vez gostei de Casos de Uso, Iteratividade e o foco Arquitetural. Neste projeto a equipe variou entre 3 a 5 pessoas. No início estabelecemos uma Visão para definir o problema junto aos usuários, o ciclo iterativo era de 30 dias e tinha perto de 15 casos de uso (que escrevemos de maneira correta). Usamos o famigerado Visual SourceSafe (o supra-sumo da época) e somente uns 6 ou 7 diagramas UML foram mantidos como artefatos (além do MER). O foco sempre era entregar o produto e não preencher artefatos. A gente até tinha alguns testes automatizados, mas a maioria dos testes era manual. Entregamos o projeto após 3 ou 4 iterações e foi um sucesso! A satisfação dos usuários foi além das expectativas. A partir desse projeto, o modo que eu instancio o RUP é assim: Iterativo, Orientado ao Usuário (Casos de Uso) e centrado em Arquitetura.

Quando voltei desse projeto para a consultoria um dos meus gerentes queria saber como foi o processo. Eu comecei a falar que o cliente participou bastante e que as entregas a cada 30 dias foram determinantes para diminuir os riscos. E a pergunta que se seguiu traduz bastante o mindset de um gerente (da época ou de hoje): “- Legal, legal, Rodrigo, mas quais eram os documentos que vocês preenchiam?”. Aí eu falei que usamos a Visão, os Casos de Uso, a UML, o MER… logo em seguida veio a pergunta número 2: “- Você poderia me dar um exemplo de cada um para usar no projeto XPTO?”. Hoje eu vejo que ele estava buscando respostas fáceis. Na época eu poderia ter dado minha cópia do livro sobre Unified Process dos Três Amigos, porém, o que eu fiz foi copiar um disquete com os artefatos. Ainda hoje ainda me culpo por ter feito aquilo, mas eu era ainda um profissional inexperiente, com pouco mais de 5 anos de estrada. Colaborei para a ilusão daquele gerente por respostas fáceis. Me desculpe se você era um dos desenvolvedores do projeto XPTO na virada do ano 2000. Me desculpe se um dia, um gerente chegou para você entregando um disquete dizendo: “- Olha, o preenchimento desses artefatos garantirão o sucesso do projeto.”

Na virada do Milênio, eu ví pessoas e empresas buscando processos como o RUP e outros pela motivacão errada. Eles achavam que a maneira “falar com o usuário - implementar - entregar” era pouco controlada. O pensamento era: “Ninguém assina nada?”. Nessa época os gerentes voluntariamente queriam uma burocratização. Era proibido falar as palavras empírico e pragmático nesta época. Não importando o Manifesto Ágil publicado em 2001, aqui no Brasil o que eu ví foi adoção de processos por pura burocratização.

No ano de 2003 eu ví a primeira palestra de um “especialista” falando absurdos sobre o RUP, no melhor estilo Waterfall. Ele disse coisas do tipo “Levantar todos os requisitos na concepção”, “Modelar tudo na fase de elaboração”, e principalmente, o cara pregava descaradamente a errônea sequência Casos de Uso - UML - Codificação - Testes, e uma irracional separação de papéis que está em uso até hoje. Ele teve até tempo de mostrar como preenchia alguns artefatos. Nesse tempo eu não era tão crítico como hoje, e nem mesmo para os meus amigos que assistiram a palestra eu alertei contra as falácias daquele fanfarrão.

A cada dia que se passou desde então, ví mais e mais pessoas falando absurdos do RUP. Quando se diz RUP atualmente no mercado muitos torcem o nariz, associam com cascata, associam com artefatos, associam com ferramentas Rational, e principalmente, associam com esse pensamento burocrático da virada do milênio. Muitos dos que criticam são agilistas famosos, mas que não tem mais de 10 anos de experiência. Eu queria que a maioria desses consultores e especialistas Agile estivessem lá nos anos 90, reclamando da implementação OO nos produtos base da Microsoft, tentando entender Objective-C e vendo uma esperança OO mais simples no Delphi como alternativa. A gente acreditava que a Orientação a Objetos resolveria todos os nossos problemas, mas 15 anos depois ainda temos modelos anêmicos e pessoas sem a mínima noção do que são dependências ou mensagens querendo discutir OO em fóruns colocando sua pilha de certificações na sua assinatura de e-mail.

Em 2003-2004 eu tive o primeiro contato com o Extreme Programming num projeto J2EE para um grande Call Center Vendas, um projeto único no mundo, clusterizado, distribuído, Swing e mensageria. Sobre o XP, quer saber? Não ví quase nada de novo. Agora Casos de Uso são User Stories menores, o ciclo iterativo é mais curto, o desenvolvimento é orientado a testes (isso sim achei uma boa idéia, apesar de não compreender bem nos primeiros projetos) e a programação é em par (isso também geralmente não é uma azeitona fácil de engolir logo de primeira). Eu particularmente tenho dificuldade em parear com algumas pessoas devido ao meu déficit de atenção. Eu olhei para o XP e no primeiro momento ví que muito do que diziam do XP era algo parecido com o que a gente fazia nos anos 90, principalmente a parte do cliente presente. Todos os meus clientes no início dos anos 90 eram presentes. Comparado com a visão do desenvolvimento de software das consultorias o XP era o cúmulo da controvérsia. Já na mentalidade de um desenvolvedor de software dos anos 90, o XP faz todo sentido do mundo. Meu primeiro contato com o Scrum foi em 2005. E mais uma vez tive aquele sentimento: Sim, é bem diferente das práticas erradas do mercado, porém, não é muito diferente do RUP. Ele diz mais sobre ROI e sobre um importante Product Owner, mas também me lembro do Tonhão como um Product Owner nato nos anos 90. Em 2005 o Scrum era o cúmulo do descontrole de custos do projeto, por conta do seu escopo aberto e por conta do mindset PMBOK, mas para um desenvolvedor dos anos 90, simplesmente é o retorno aquilo que a gente já fazia: nos anos 90 não tinha pressão para se entregar tudo, mas havia pressão para resolver os problemas de negócio do cliente. E eu me lembro do Tonhão todas as sextas me cobrando aquilo que estava pronto, doido para colocar a aplicacão no ar só para ter certeza que ninguém na rede estava roubando ele.

A grande questão sobre o Agile Movement é sua mudança cultural. Infelizmente são poucas as pessoas que se divertiram fazendo software nos anos 90 - se você costuma tratar os desenvolvedores como crianças, lentamente eles se convencem que são crianças. O manifesto é um grito contra as coisas erradas do mercado. É uma emancipação dos desenvolvedores que não querem ser crianças. É uma injeção pragmática contra o pensamento pseudo-tradicionalista, controlador e traumatizado que existe hoje no mundo empresarial, especialmente na indústria do desenvolvimento de software.

O que vocês devem estar se perguntando é: O que matou o RUP e pode matar o Agile? Como eu falei, eu temo pelo movimento Agile. Assim como foi em 2003, em 2009 eu ví o primeiro pseudo-especialista Agile falando absurdos - violando valores. A partir do momento que eu vejo a comunidade Agile discutindo e dando importância demais a post-its, quadro de tarefas e cartinhas de planning poker, eu temo pelo movimento Agile. Quando eu vejo a comunidade Agile buscando certificações, preocupados em como casar Agile com CMMI ou como adaptar Agile à contratos de escopo fechado, eu temo pelo movimento Agile. Sempre que eu vejo isso no mundo Agile, me transporto a 10 anos atrás e me lembro das discussões sobre templates de casos de uso, definições de padrões de modelagem UML, pensamento linear, check-lists de artefatos, uso incorreto de ferramentas, falta de compreensão sobre fases e o pior de todos: o departamento que cuida dos processos de desenvolvimento. Resumindo, quando vejo esse mindset de besteirols e libertinagens Agile, eu me lembro do mindset burro e burocrático que contaminou o RUP.

O que matou o RUP foi a falta de entendimento, e isso é o que vai matar o Agile. Lean é o próximo da fila. Escreva aí: em 5 anos, dependendo dos ventos da economia e do clima empresarial, muitos vão estar criticando Agile do mesmo modo que hoje criticam o RUP, sem autoridade de causa. Tudo vai depender do mindset vigente no momento. Tudo depende do mindset: se você der o Scrum e XP para um “tradicionalista” ele não vai mudar seu mindset, mas sim adaptar o Scrum e o XP às suas “crenças”. Se você der o RUP para um pragmático, ele também não muda o seu mindset, mas sim, adapta o RUP à sua realidade. Você pode decidir o seu mindset: ou você realmente acredita nos 4 valores e 12 princípios ágeis e adota este estilo, ou você se enche de penduricalhos ágeis só para ficar na modinha.

Mais sobre o assunto “queda do Agile”:

Agile está morto! D-us salve o Agile! - José Papo
The Decline and Fall of Agile - James Shore
Por que dizemos não à certificação de Scrum Master - Vinicius Teles
A Completa Irrelevância do Certified Scrum Master - Philip Calçado
Flaccid Scrum - Martin Fowler

Esse artigo e a palestra que ministro com mesmo título é inspirado em “What Killed Smalltalk Could Kill Ruby, Too”, Keynote do Robert Martin (ou Uncle Bob) na RailsConf ‘09. Uma das melhores palestras que já ví. Veja abaixo:

Rodrigo Yoshima

Workshop Extreme Programming Retrospective

Como havia anunciado aqui no Débito Técnico, tivemos a primeira turma aberta do Workshop Extreme Programming em São Paulo, com a participação de 5 equipes, usando as mais diversas tecnologias. O motivo da Aspercom aplicar turmas Beta de seus treinamentos é para verificar a aceitação do público geral e também para verificarmos a dinâmica do programa dentro do horário e as atividades práticas. No caso do Workshop XP, muitas dúvidas tivemos com relação à aplicabilidade do treinamento às diversas tecnologias, porém, tiramos esta preocupação com esta turma. Tudo correu muito bem e o treinamento foi um sucesso!

IMG 8513 - IMG 8513
Iteração Inicial: Ainda muita pendência arquitetural para acertar…

IMG 8514 - IMG 8514
4 pessoas, 2 notebooks = Pair Programming Obrigatório (e apesar do preconceito, no fim todo mundo gosta)

IMG 8515 - IMG 8515
Paulo Calligaris, Marcelo Chisté, Willian W. Leite e Luis Cesar Teodoro: pessoal da BRQ em .NET

IMG 8516 - IMG 8516
Leandro Faria, Carlos Lisandro, Hugo Sacramento, Elton Moura e Marcelo Costa: pessoal da UpLexis em PHP

IMG 8517 - IMG 8517
Luiz Ricardo Batista, Alan Vidotti, Pedro Matheus, Daniel Takabayashi: pessoal da BRQ em Java

IMG 8518 - IMG 8518
Mauricio Aniche, Paulo Henrique Martins, Willy Nakata, Murilo Cezar de Oliveira: equipe WOOF! em Java

IMG 8520 - IMG 8520
Ricardo Almeida, Rafael Rosa, José Guilherme Ribeiro, Rodolfo Liviero da Silva e Anderson Carubelli: equipe da Gonow em Rails

Antes de mais nada, queria agradecer muito a turma pela excelente avaliação (principalmente pelos twitts) e também parabenizar a todos pelas aplicações que foram geradas. Elas me forneceram um ótimo feedback para melhorar o curso e alterar algumas coisas no sistema exemplo.

Próximas turmas…

A próxima turma aberta já está agendada para o dia 24 de outubro, sábado e com preço promocional, lembrando que você deve formar uma equipe de 4 ou 5 pessoas e escolher uma arquitetura para cumprir uma atividade prática antes do curso começar. Maiores informações:

http://www.aspercom.com.br/ead/calendar/view.php?view=day&cal_d=24&cal_m=10&cal_y=2009

Rodrigo Yoshima

Extreme Programming na WebGoal

No mês de agosto estive na WebGoal ministrando o nosso curso Extreme Programming. A WebGoal é uma empresa de desenvolvimento de projetos e de produtos próprios; fiquei bastante impressionado em como a empresa é dinâmica e possui uma filosofia empolgante. Eles são uma consultoria pequena focada em práticas ágeis e com muito potencial de crescimento. A primeira vez que os visitei era o dia de entrega da Sprint e lá eles comemoram com um churrasco na própria empresa. De fato é um ambiente muito legal, que me fez lembrar o Domenico DeMasi dizendo como o estilo e ambiente dos escritórios atuais influenciam na produtividade das equipes.

A WebGoal é um caso típico de uma empresa esperta que após alguns Sprints com o Scrum rapidamente notou as pernas que faltavam para um desenvolvimento ágil de verdade. Eles notaram que precisavam das práticas de engenharia do XP, destacando Testes Automatizados e Integração Contínua. É aí que nosso treinamento entrou. O Scrum e XP é a dupla que torna equipes verdadeiramente ágeis (fujam do Scrum flácido). O pessoal da WebGoal já usava muito Pair Programming, o que é muito bom, então, nas atividades práticas, os pares tiraram tudo de letra. Foi um dia muito enriquecedor, parabéns a todos da WebGoal!

Imagem0172 - Imagem0172
Todo pessoal pareando.

Imagem0173 - Imagem0173
Equipe 1

Imagem0175 - Imagem0175
Equipe 2 e o Kanban

Imagem0176 - Imagem0176
Um desenho vale por 3 palavras

Rodrigo Yoshima

Os (muitos) eventos de Setembro e Outubro

Neste ano de 2009 teremos muitos eventos interessantes e muita gente boa presente nas palestras e bate papos. Estarei palestrando em quase todos eles (o ruim disso é que vou gastar muito tempo fazendo apresentações e pouco código).

JustJava 2009

Na semana que vem rola o JustJava 2009. Um dos eventos mais tradicionais da comunidade Java. Neste ano estarei levando a palestra “Requisitos Executáveis com FIT”, marcada para o dia 15/09, terça-feira às 17:30.

Evento de Aniversário do CEJUG em Fortaleza. Já faz um tempo que tenho contato com o pessoal de Fortaleza através da Fortes Treinamentos, nossa parceira no Ceará. Dessa vez o pessoal do CEJUG me fez um convite muito especial para palestrar no seu evento de aniversário que vai rolar no dia 19/09. Estarei presente com a apresentação: “O que matou o RUP pode também matar o Agile”. Se você é da região não pode perder.

Nessa minha ida a Fortaleza também estarei levando o Workshop Domain-Driven Design em Java que será no dia 18/09 com desconto para os associados do CEJUG.

Na sua segunda edição, as Jornadas Latino-Americanas sobre Metodologias Ágeis vem com força total e com presença garantida de muitas pessoas importantes da nossa comunidade Agile. Neste evento em Florianópolis estarei fazendo aquilo que faço sempre: ENSINAR. Minha apresentação na verdade será um mini-workshop sobre User Stories que vai rolar no dia 08/10.

O Encontro Ágil em São Paulo tem muitas novidades neste ano. A principal delas é a presença de Alistair Cockburn, um dos autores do Manifesto Ágil. De fato, uma oportunidade única. Estarei palestrando novamente com o José Paulo Papo sobre Auto-organização e Gestão por Metas Flexíveis.

Muitos outros eventos legais serão realizados. Entre eles eu sugiro o Dev In Rio e o Rails Summit. Infelizmente, por conta de problemas de agenda, não poderei participar do Dev In Rio, mas no Rails Summit estarei presente!

Desculpem o atraso! Mas só neste feriadão de 7 de setembro estou tendo tempo de escrever sobre a experiência do Rails Rumble, e com uma vista espetacular da Mata Atlantica, na praia da Barra do Sahy em São Sebastião.

Bem, como tinha falado no post anterior, a nossa aplicação para o Rumble não era algo para se fazer em 48 horas. Era um desafio e tanto, mais ainda para uma equipe que nunca havia trabalhado junto antes. Eram 23 user stories. Todas as outras equipes falaram que era grande demais! Porém, eu acreditava que seria possível, pois dessas 23 stories havia gordura para queimar (stories que poderiam ser cortadas sem prejuízo para o valor da aplicação).

IMG 8481 - IMG 8481
A equipe brazilian-dojo (conte as latas de RedBull)

Logo no inicio do Rumble, para variar um pouco, tivemos alguns problemas de infra. Contas de GitHub que não entravam e Linodes com alguns problemas. Graças a Deus nossa equipe tinha o Cauê Guerra, que demonstrou muita habilidade para lidar com hospedagens Linux para Rails. Passado esse primeiro momento o Cauê falou a palavra mágica: “Vamos parear”.

Acho que o Rumble foi uma das minhas melhores experiências com Pair Programming. Isso porque esse foi o meu primeiro projeto Rails com uma equipe de programadores (meus projetos Rails anteriores foram solo). Eu aprendi muito. Parear com o Cauê foi muito legal, pois ele ensinou vários truques e também ví muitos vícios ruins eu fazia. Na nossa primeira sessão pareamos por pouco mais de 4 horas. Depois tivemos algumas outras sessões curtas, mas no sábado, teve um momento que adiantamos MUITO o projeto numa sessão em par de 10 horas. Não há dúvidas que programar em par é mais produtivo. O gargalo da programação não está na digitação. Quem diz o contrário ou nunca programou na vida ou não sabe trabalhar em equipe. Num projeto como este, cheios de integrações e incertezas, ví que os momentos que a gente não pareava era muito improdutivo. Talvez isso que vou falar aqui agora é a coisa mais nerd deste blog: no Rumble, eu e o Cauê passamos as primeiras 30 horas programando sem parar, movidos a Red Bull. O Alexandre, nosso web designer também nos acompanhou por parte do trajeto.

IMG 8483 - IMG 8483
Um monitor adicional ajuda muito no Pairing.

Nós não terminamos a aplicação completa. Nós tivemos muitos problemas na reta final, principalmente com a integração com o GoogleMaps (a batalha do Felipe e do Cauê). Mas nem por isso tivemos um sentimento de derrota. Foi muito divertido e foi uma inter-fertilização tremenda. Das 23 stories nós entregamos 15, dropamos umas 5 e deixamos de entregar 3. Essas 3 histórias simples que deixamos para final eram as histórias que não tinham integração com nada, mas que davam todo o sentido para o site (a busca e a parte de colaboração). Mais 4-5 horas nós conseguiríamos entregar tudo, mas o Rumble é implacável com relação ao prazo. Ao final do tempo tudo é bloqueado.

IMG 8482 - IMG 8482
Discussões de Design no amanhecer

IMG 8485 - IMG 8485
Pessoal das outras equipes e amigos da Gonow.

Quero agradecer muito o Cauê, o Felipe e o Alexandre pela excelente experiência, onde pudemos compartilhar muito da nossa arte de desenvolver software. Quero também parabenizar a Gonow pelo patrocínio das equipes brasileiras e por ter fornecido absolutamente tudo para nós, desde as refeições até o hotel, que era a nossa “descompressão”. Tudo foi muito bem organizado.

E que venha o Rumble 2010!!!!!