sauloarruda.eti.br

…revirando até chegar do outro lado…

May 3rd, 2010


Como já comentei aqui, escrevi uma proposta para o AgileBrazil 2010 com o tema: “Em 6 meses de imersão ágil o que mudou?”. Hoje saiu definitivamente o resultado e ficamos de fora. Realmente a concorrência foi muito grande, de 150 propostas apenas 35 foram aceitas e naturalmente estava “concorrendo” com os principais nomes da comunidade Agile nacional e até internacional.

É uma pena, mas mesmo assim pretendo ministrar a palestra em algum evento regional mesmo. Estamos preparando bastante material entre fotos, relatos (devidamente registrados no blog), retrospectivas e centenas de boas e más experiências. Realmente um programa de imersão ágil tem grande valor!

Sobre o AgileBrazil, vou reforçar minha determinação a participar do evento sabendo que teremos ótimas palestras e cursos. Pretendo inclusive participar do curso de Agile Coaching ministrado por  David Hussman. Com certeza será um grande evento!

April 1st, 2010

Começamos um novo projeto na Agence esta semana e decidimos usar o Git na máquina de desenvolvedor e SVN como repositório central. A idéia é facilitar o desenvolvimento local usando branches para cada funcionalidade desenvolvida e enviar para o repositório central (SVN) ao término do seu trabalho. Temos também a vantagem de poder compartilhar repositórios locais como já comentado aqui.

Para que isso seja possível, você usará o comando git-svn, que já vem na instalação do git para MacOSX mas, não está no PATH do seu sistema. Para usá-lo você deve incluir o diretório /usr/local/git/libexec/git-core/ no PATH. Para fazer isso, coloque a linha abaixo no final do seu arquivo ~/.bash_profile:

export PATH=$PATH:/usr/local/git/libexec/git-core/

Se você usa linux, o apt-get (debians like) ou yum (red hat like) tem os pacotes para instalação.

Para começar, faça o clone do seu repositório do SVN usando o comando:

$ git-svn clone {endereço do repositório SVN}

Se seu repositório for autenticado ele vai pedir usuário e senha sem grandes complicações. Após isso, basta seguir a sequência básica de uso:

1. Crie um branch para trabalhar em sua funcionalidade:

$ git checkout -b {nome da sua funcionalidade/estória/caso de uso/ticket/etc...}

2. Escreva seu código e faça commit no seu repositório local (você pode fazer o commit várias vezes antes de terminar o trabalho, inclusive, recomendo que você faça isso):

$ git commit -am "sua mensagem do commit"

3. Quanto terminar o desenvolvimento (não esqueça de comitar), faça checkout no branch master:

$ git checkout master

4. Faça o merge do seu branch com o master (o parâmetro –squash transforma todos os commits do seu branch em apenas um commit, bem legal):

$ git merge --squash {nome da sua funcionalidade/estória/caso de uso/ticket/etc...}

5. Comite no branch master:

$ git commit -am "sua mensagem do commit"

6. Envie para o SVN:

$ git-svn dcommit

Para manter sua cópia de trabalho atualizada use o comando:

$ git-svn rebase

Não tive problemas até o momento com essa abordagem. Algumas pessoas questionaram o motivo de criar um branch para cada funcionalidade. Eu considero isso muito importante quando você volta e meia tem que fazer algum ajuste em outra coisa no sistema bem no meio do desenvolvimento. Com isso, basta você criar outro branch, fazer suas alterações e comitar no SVN, não influenciando no trabalho que você ainda está fazendo. Pra mim, no dia-a-dia essa é a maior vantagem do uso do git.

Este artigo foi inspirado/baseado nas referências abaixo:

March 26th, 2010

Muito se fala sobre trabalho em equipe, equipe unida, uma equipe é melhor que um grupo, e outras buzzwords do tipo. Mas todos sabemos que nada substitui o valor de um time! E todo garoto desde cedo aprende que saber jogar video game é uma obrigação para todo candidato a nerd (no bom sentido da palavra)!

A imagem ao lado mostra claramente a motivação de dois times duelando entre si em um Barcelona Vs Real Madrid com o placar de 1 x 1. Detalhe: são 13:30 da tarde e eles estão em seu ambiente de trabalho.

Eu já havia me esquecido da última vez que algo assim tinha acontecido na empresa. Resgatei alguns arquivos e nos lembramos que isso foi há 2 anos atrás, em uma época que tínhamos uma equipe muito unida e rolava Diablo, Conter Strike ou um joguinho de corrida que era muito divertido, tanto no horário de almoço, quanto algumas vezes depois do expediente!

Todos participavam da jogatina e uma vez por semana (pelo menos) rolava um happy hour no posto ao lado da empresa, geralmente com a presença de quase todos! Nessa época também tínhamos capeonatos de Kart, Boliche, Sinuca e outras atividades para atletas de computadores. Me lembro até hoje da satisfação que tive quando toda a equipe se reuniu em uma sexta-feira para almoçar junto no dia do meu aniversário! Foi demais!

Detalhe importante: Nessa época não tínhamos reclamações da equipe, a rotatividade era baixa e com certeza a produtividade era maior. Com o tempo, algumas pessoas foram saindo, não rolou mais o Kart, Boliche, joguinhos na hora do almoço. E um detalhe importante, a produtividade geral caiu drasticamente e nunca mais tivemos um ambiente bacana como esse.

Aí muitos se perguntam: Qual o segredo do sucesso de uma equipe? Na minha opinião é: A equipe tem sucesso a partir do momento que age como Time! E formar um time não é nada fácil. Primeiramente, um time não é formado de estrelas (leia-se arquitetos de software super poderosos). Não adianta contratar os melhores e mais caros profissionais achando que você terá um time (a seleção brasileira de futebol está aí para provar isso).

Um time só é formado quando as pessoas se gostam, se ajudam, se admiram, se desafiam e principalmente, quando se divertem juntas. Eu ando falando há algum tempo sobre o projeto de Imersão Ágil que estamos implantando na empresa, dos resultados positivos que temos conquistado. O interessante é que o manifesto ágil não “prega” que devemos jogar vídeo game no horário de almoço, fazer happy hour uma vez por semana, promover campeonatos de atividades “esportivas” com frequência, ministrar treinamentos uma vez por semana, estimular as pessoas a se divertirem juntas!

Na minha opinião esse é o fator que gera mais resultado do que qualquer método (ágil ou não) que se possa inventar. O poder da química entre as pessoas não é uma coisa que se aprende. Ela acontece naturalmente, e você gerente/diretor/coaching/consultor/instrutor/professor/CEO pouco pode fazer para que isso aconteça senão fazer parte!

March 4th, 2010
Continuando os relatos sobre imersão Agil da Agence, essa semana estamos trabalhando em provas de conceito para desenvolver orientado a testes (TDD) em PHP. Como acontece com Ruby (Linguagem) + Rails (Framework), partimos para a premissa de utilizar um framework PHP, no caso, o que estamos mais usando por aqui que é o CakePHP.

Para nossa “sorte” o Cake já tem algumas facilidades para implementação de testes no estilo xUnit, usando o framework SimpleTest, que é uma mistura de JUnit com JWebUnit permitindo tanto a implementação de testes de unidade/integração como testes funcionais/aceitação simulando comportando do Browser.

O código-fonte produzido está disponível no GitHub, e em breve vamos escrever alguns artigos explicando melhor como foi a experiência. Mas, como sempre, feedbacks já são muito bem vindos!

Fica algumas boas referências de sites e blogs sobre o assunto:

  • KISS: blog muito movimentado sobre TDD em CakePHP, em PT-BR!
  • Debuggable: empresa especializada em desenvolvimento em CakePHP, acredito que alguns componentes de teste foram desenvolvidos por eles.
  • Mark Story: blog dedicado a CakePHP e assuntos relacionados.
  • Testes automatizados no CakePHP: excelente apresentação sobre TDD em CakePHP.
March 3rd, 2010

Dando continuidade aos relatos da imersão Ágil na Agence, nosso colega Fernando Cezar publicou no Geeks Anônimos um artigo explicando (e ilustrando) como estamos usando Kanban (e SCRUM??) em projetos 12 projetos de manutenção. Aproveite e deixe seus comentários sobre o tema, o feedback da comunidade é muito importante.

February 28th, 2010

Nos dias 22 a 25 de Junho de 2010 acontecerá em Porto Alegre um grande evento dedicado ao tema Agile, o Agil Brazil 2010. As submissões de palestra tiveram seu prazo aumentado para dia 07/03 pelo site http://submissoes.agilebrazil.com/. Submeti a palestra abaixo e estou na torcida pela aprovação! Aproveite e deixe seus comentários, será de grande valia!

Em 6 meses de imersão ágil o que mudou?

Público alvo
Desenvolvedores e testadores, gerentes de projeto, executivos, entusiastas e iniciantes em métodos ágeis, quem mais tiver interesse!

Resumo
Começamos o ano de 2010 com um desafio: reverter o cenário de baixa produtividade e desmotivação da equipe que estava pairando no ar. Após várias discussões entre as pessoas chave da equipe bolamos um plano e entramos de cabeça em um projeto de agile adoption. Este trabalho mostra os principais resultados e dificuldades deste processo.

Descrição completa
No final de 2009, iniciamos uma reforma na unidade de Campo Grande da Agence. Literalmente o teto caiu e passamos grandes dificuldades com a chuva diária no chão do escritório. A reforma está construindo um segundo andar na nossa sede, mas como todos sabemos, não é nada agradável “morar” em uma casa em reforma.

Além disso, nossa equipe estava pecando no quesito qualidade e prazo em alguns projetos, o que gerou um descrédito por parte da diretoria da empresa. No final do ano, tivemos o desligamento de 3 profissionais, além da insatisfação com as dificuldades no ambiente de trabalho e projetos.

Nesse contexto, reunimos as pessoas chave da equipe e após várias discussões bolamos um plano para adotar desenvolvimento ágil como uma forma de motivação da equipe e melhoria no produto desenvolvido.

O plano abrange 6 meses a começar a partir de janeiro de 2010 e têm metas bastante agressivas que envolve várias mudanças na forma de trabalho, além de sessões semanais de treinamento (tech thursday) e vários finais de semana dedicados à estudos.

A proposta deste trabalho é mostrar nossa experiência na adoção de métodos ágeis em uma equipe de 20 pessoas que trabalha com vários tipos diferentes de projetos: novos sistemas, manutenção e pesquisa & desenvolvimento.

O plano prevê adoção da técnica pomodoro, SCRUM, Behavior Driven Development (BDD), Domain Driven Design (DDD) e Programação em Pares. Ufa! Continuamos com a mão na massa e já estamos colhendo resultados desse trabalho e gostaríamos muito de compartilhar essas experiências com a comunidade.

Mecânica/Processo
Apresentação de slides seguindo a Agenda abaixo:
- Como estávamos no final de 2009?
- Qual nosso plano?
- 1º mês: Pomodoro
- 2º mês: Scrum
- 3º mês: Behavior Driven Development
- 4º mês: Domain Driven Design
- 5º mês: Pair Programming
- 6º mês: E agora?
- Conclusões e resultados

Benefícios
Durante esses 6 meses de projeto, estamos publicando vários artigos, no blog da empresa e individuais, com o objetivo de trocar idéias e mostrar como estamos buscando melhorar nossa forma de trabalho. Acredito na importância da apresentação dessas experiências em um evento dedicado ao assunto, que permitirá excelente troca de idéias com pessoas que também tem os mesmos interesses

Experiência com o assunto
Venho estudando métodos ágeis há pelo menos 3 anos e já aplicando algumas práticas na Agence, que tem um processo mais próximo do “OpenUP”. Já ministrei treinamentos em diversas áreas sempre divulgando métodos ágeis e pregando boas práticas de engenharia e já dei consultoria em algumas empresas para MPS nas áreas de gerenciamento de projetos e requisitos, baseado nos modelos MPS.br e CMMi.

February 23rd, 2010

Há alguns dias postei sobre o uso da Técnica Pomodoro na Agence. Hoje o Lucas Souza iniciou uma discussão no InfoQ sobre o “mérito” do uso da técnica para troca de idéias dos entusiastas e dos céticos. Estamos participando, vejo vocês lá!

February 5th, 2010

Há mais ou menos duas semanas temos usado na Agence a técnica Pomodoro. Como vocês já devem saber, a técnica objetiva aumento da produtividade para trabalhos que exigem esforço intelectual, ou, em outras palavras, para quem usa a cabeça. Serve como uma luva para estudo e desenvolvimento de software!

O princípio básico da técnica é dedicar 25 minutos de puro trabalho com 5 minutos de descanso. Isso é o que se chama 1 (um) “Pomodoro”. Após 4 Pomodoros você faz uma pausa maior. A apresentação que usei para apresentar a técnica aqui na Agence está disponível no slideshare. Além disso, tem um livro gratuito escrito pelo autor da técnica, Francesco Cirillo.

Nossa experiência até o momento tem sido bastante produtiva. Estamos usando fichas pautadas 4” x 6” para registrar diariamente e no fim da semana o estagiário lança as atividades em um sistema que ele mesmo fez. Estamos trabalhando em alguns relatórios para avaliar, principalmente, a constância da equipe. Provavelmente usaremos um gráfico de controle pra isso.

Por enquanto é isso que temos a dizer. Assim que as coisas começarem a fazer mais sentido pra gente, vou postando aqui as experiências.

November 6th, 2009
Javaneiros 2009

Estamos há uma semana do Javaneiros 2009! Este ano o evento está realmente muito bom, com a presença de Michael Nascimento (o “Mister M”), Edgard Silva (da JBoss), Lucas Cavalcantti (Desenvolvedor Líder do VRaptor3/Caelum) e Arthur Cezar Oreana (Arquiteto da PowerLogic).

O evento vai acontecer em Campo Grande/MS na UNAES/Anhanguera dia 14/11 das 8:00 as 18:00. Além de palestras de excelente nível técnico teremos também sorteio de brindes, coffee-break e uma agradável surpresa no final!

Eu estarei falando sobre testes de integração em Java com uma proposta prática para implementá-los, com direito a estudo de caso. Fala comigo meu parceiro JEFFMOR que sempre esteve “inventando moda” junto com a nossa equipe Java da Agence.

Não se esqueça de fazer a sua inscrição pois temos vagas limitadas! Acompanhe o twitter @javaneiros para informações dos bastidores e promoções relâmpago e ajude na divulgação!

November 4th, 2009

Neste final de semana finalmente participei do segundo encontro presencial na UFLA (Universidade Federal de Lavras) para conclusão do curso de Especialização em MPS (Melhoria do Processo de Software) que iniciei em 2006. O encontro foi extremamente produtivo visto que havia poucos alunos e com isso temos a oportunidade única de ter consultorias ao invés de aulas com professores de altíssimo nível. Fora que com pouca gente a interação entre os alunos foi infinitamente maior o que com certeza vai promover amizades produtivas.

No sábado eu tive a oportunidade de apresentar meu Trabalho de Conclusão de Curso que trata-se de um artigo entitulado: Gerenciando Projetos de Escopo Aberto – Uma Visão Ágil. Ainda tenho alguns ajustes para fazer, mas já disponibilizei uma prévia do trabalho em PDF e depois atualizo esse post com a versão final (para fazer o download clique no link do nome do trabalho).

É uma pena esse curso ter acabado. Mas já deixo a recomendação de outro curso, na verdade um MBA, que tem como coordenador um dos professores. Trata-se do MBA Gestão da Qualidade em Software com ênfase em CMMI® e MPS.BR da FIAP, e o coordenador é o sensacional Nilson Salvetti.

Como voltei bastante animado do encontro, em breve devo publicar, em parceria com alguns colegas, artigos que estamos preparando sobre teste de integração e gerenciamento de projeto “agile”. Pode me cobrar se eu não enviar! Estou até animado a embarcar em um mestrado na área de Engenharia de Software, e aceito recomendações!