sauloarruda.eti.br

…revirando até chegar do outro lado…

August 1st, 2010

Recentemente terminei um trabalho em um cliente* onde ministrei um treinamento sobre gerenciamento ágil de projetos e agora estou fazendo um trabalho de coaching ajudando-os na utilização das técnicas nos projetos. Eles têm uma equipe de cerca de 10 pessoas entre analistas de negócio, DBAs e desenvolvedores. Trabalham também um uma fábrica de software que atende a maioria das solicitações de desenvolvimento.

Inicialmente, para melhorar a visibilidade do processo e conseguir gerar e coletar alguns indicadores, montamos um Kanban contemplando todos os projetos e analistas de negócio responsáveis e organizando as atividades pendentes com os desenvolvedores.

A partir desse trabalho, participo semanalmente da retrospectiva da equipe onde avaliamos os pontos positivos e implementamos novas melhorias. Vou fazer esse trabalho com eles por mais umas cinco semanas com o objetivo de identificar os pontos que precisam ser melhorados em uma nova fase da consultoria.

Disponibilizei todo o material usado no treinamento no meu slideshare organizado por aulas:

  1. Abordagens Ágeis (Parte 1)
  2. Abordagens Ágeis (Parte 2)
  3. Casos de Uso
  4. Histórias do Usuário
  5. Planejamento do Projeto
  6. SCRUM e Kanban

* Infelizmente ainda não posso mencionar o nome do cliente, mas em breve pretendo escrever mais sobre o trabalho.

June 20th, 2010

Jera Software ÁgilÉ com muita satisfação que comunico o nascimento da Jera – Software Ágil! Somos um grupo de profissionais com determinação para fazer as coisas de um modo diferente. Desenvolver software fazendo uso das melhoras práticas Ágeis, buscando sempre a inovação e se espelhando naquilo que vemos de melhor no mercado. A partir de Julho estaremos todos 100% dedicados a esse novo negócio e de portas abertas para receber todos nossos amigos e parceiros (um de cada vez, pois o escritório ainda é pequeno! :P ) para tomar um excelente café.

A Jera é formada por Saulo Arruda, Adriano Bacha, Bruno Andrade, Bruno “PorKaria” Fernandes e Jefferson Moreira (JEFFMOR). Todos estamos juntos com o objetivo de oferecer soluções em produtos de software buscando sempre a melhor experiência para nossos usuários. Todos temos nossas habilidades individuais e acreditamos que a soma dessas competências traz os melhores resultados.

Estamos trabalhando no nosso novo blog, presença em redes sociais, visão, escritório, primeiros projetos, enfim, tudo aquilo que acreditamos ser necessário para começar com o pé direito. Conforme as coisas forem andando a gente divulga maiores informações no twitter e no site (ainda em construção) da Jera.

Por enquanto é isso! Esperamos que em um futuro próximo possamos fazer bons negócios com todos os amigos e parceiros que colecionamos ao longo do caminho!

[]‘s e boa semana a todos.

PS: Essa semana estarei em Porto Alegre junto com o Adriano e o Jefferson participando do AgileBrazil. Acompanhe meu twitter para “cobertura” do evento.

June 18th, 2010

Hoje foi publicado meu artigo de estréia no InfoQ Brasil. Falei sobre um post do Scott Berkun desta semana, daqueles que te deixam humilhado e com a sensação de que você está no caminho errado!

Confiram e comentem! http://www.infoq.com/br/news/2010/06/programador-artista

May 9th, 2010

Com uma pergunta dessas eu com certeza estou causando confusões nas mentes das pessoas que não entendem exatamente o que estou dizendo. Vou dar alguns exemplos de coisas que tenho visto ultimamente para que as conclusões possam fazer algum sentido…

Primeiro, o contexto: as experiências têm se passado no dia-a-dia do trabalho de imersão Ágil que temos feito na Agence. Segundo, não vou citar nomes de clientes ou coisas do tipo e tentarei ser o mais claro possível sem ofender ninguém. Terceiro, se alguém se ofender, sinta-se à vontade para expressar seus argumentos nos comentários, pessoalmente ou de qualquer outra forma. O que vou colocar aqui é apenas meu ponto de vista atual sobre desenvolvimento (ágil) de software.

Tenho visto uma tendência de empresas que tem mostrado um trabalho legal, de não atenderem grandes corporações multinacionais para dar preferências à startups. Com isso, refleti um pouco sobre como isso acontece no meu dia-a-dia, visto que tenho a oportunidade de atender tanto clientes abrindo um novo pequeno negócio ou dando uma “guinada” no seu pequeno negócio atual, quanto grandes corporações multinacionais ou governo.

Percebi algo interessante. Se falando de desenvolvimento ágil, mais especificamente SCRUM, temos a figura do Product Owner (PO). Esse é um papel bastante difícil de se assumir, visto que este cara visa o ROI como principal fator de sucesso de um projeto de software, pelo menos na cartilha. Fazendo um paralelo para o mundo real, nem com os cliente mais “engajados” que atendemos, tenho nutrido esperanças de ter um legítimo PO.

Vou mostrar o que geralmente acontece em dois cenários distintos: projetos para grandes empresas e para pequenas empresas.

Grandes empresas

Quando temos nosso “gerente de projeto” dentro das grandes empresas, esse cara geralmente tem uma formação em TI e pós-graduação/mestrado/MBA/cursos de extensão na área de Gerenciamento de Projetos. OK, ele entende um pouco de software e também um pouco de PMI. Infelizmente, ele não PAGA pelo projeto, mesmo havendo cobrança de seus clientes internos, o dinheiro não sai do bolso dele. Esse é o que considero nosso pior cenário de trabalho pois, a mentalidade cascata (ou cascateiro) é predominante (com raras exceções). Argumentos por parte do cliente:

  • Nossos analistas do departamento de TI vão levantar os requisitos para o projeto e abrir uma RFPRFQ ou outro nome novo para isso.
  • Temos um orçamento pré-definido para esse projeto.
  • A área (leia-se, quem solicitou o projeto/cliente interno) não tem disponibilidade de “homologar” o projeto em partes. E, como é de praxe, nós que estamos desenvolvendo o projeto não costumamos ter contato com “a área“.
  • Não faz o menor sentido o projeto “ir para o ar” antes de ser terminado.
  • Há um contrato a ser cumprido, que muitas vezes prevê multas para atrasos.

Como era de se esperar, não é um espanto haverem divergências de requisitos (e várias reuniões para discutir o assunto) no final do projeto. Mesmo tentando trabalhar de forma iterativa, isto é, apresentando o sistema em partes para esse gerente de projeto, no final, quem de fato vai usar o sistema, acaba por não participar dessas “entregas” parciais e acaba “mudando” de idéia quando vê o projeto terminado, meses depois que ele foi “concebido”. As palavras entre aspas nessa frase tem um significado muito relevante:

  • Concebido: O custo/prazo/escopo do projeto tem que ser fixo. Logo, antes de assinar um contrato, temos que entender muito bem o que vai ser feito, geralmente apresentando protótipos que são “assinados à sangue” pelo gerente de projeto e pelo pessoal que solicitou o projeto.
  • Mudando: naturalmente, você já entendeu que as reuniões no fim do projeto são para negociar mudanças que, é óbvio que acontecem.
  • Entregas: como são feitas para o gerente de projeto e obedecendo a especificação inicial (ou as datas de pagamento do contrato), é uma mera prova de que o cronograma está sendo cumprido.

Resultado final: na maioria das vezes o projeto sai mais caro e demora mais que o previsto. Lembre-se que o escopo mudou e até hoje não vi nenhum projeto que não tenha mudado. A não ser que seja algo muito pequeno (entenda-se, projetos com menos de 300 horas ou 2 profissionais durante 1 mês).

Pequenas empresas

Pequenas empresas por outro lado não tem árvore de dinheiro e por isso tem que otimizar ao máximo cada centavo “gasto” em software. Por isso, não é nenhuma novidade que consigamos fechar projetos de escopo aberto com duração e custo fixo. Neste caso, conseguimos à cada apresentação para o cliente, ter um feedback exato se estamos mesmo indo no caminho certo. E, acreditem, na maioria das vezes o projeto vai para o ar antes daquele prazo inicial previsto terminar.

Aqui, de fato, conseguimos aplicar a cartilha de desenvolvimento iterativo de forma eficiente. Conseguimos fazer menos software, reduzir o time-to-market, gerar valor para o cliente e cultivar um relacionamento muito bom com os clientes.

Para concluir, segue um paralelo sobre custos e prazos (esta informação é empírica e baseada apenas na minha observação dos projetos no último ano):

Perfil dos projetos analisados: o prazo geralmente é de 3 a 4 meses para um volume de cerca de 1.500 horas. Nesses projetos trabalhamos com equipes de 3 a 6 pessoas envolvendo uma pessoa que faz o atendimento ao cliente, dois desenvolvedores plenos, um ou dois desenvolvedores júniors e um designer.

Grande empresa Pequena Empresa
Tempo para primeira versão ir para o ar 6 meses 2 meses
Esforço para desenvolvimento da primeira versão 1500 horas (ou mais) 800 horas
Lucratividade para a consultoria (isto é, nós) Alto risco, já houveram casos de prejuízos Baixo risco, vários casos de sucesso
Fechamento de um contrato de “manutenção evolutiva” Nem sempre Quase sempre

Para finalizar… Nem sempre é fácil usar princípios básicos que norteiam desenvolvimento ágil como neste caso, desenvolver de forma iterativa. Muitas vezes os projetos já começam no modelo cascata e, como somos consultorias que prestam serviço para esses clientes, não temos muito o que fazer para alterar o cenário. Neste caso, posso afirmar que seu cliente não é Ágil!

Obrigado para quem leu até aqui!! Fico à disposição para trocar idéias sobre o assunto. []‘s e boa semana!

April 7th, 2010

Hoje recebi uma newsletter da Teamware que divulga um programa que achei bastante interessante. Chama-se Brasil Mais Ágil e prevê a realização de treinamentos gratuitos sobre tecnologias relacionadas ao mundo ágil. Já me inscrevi para participar e colaborar, e você?

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á!