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.

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!

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

March 12th, 2007

Você já praticou Judô? Jigoro Kano idealizou o Judô a partir da combinação dos conceitos do Budismo, Xintoísmo, Confucionismo e Taoísmo – estes, parte da cultura religiosa e filosofia de vida do povo Japonês [1].

Os seus objetivos são fortalecer o físico, a mente e o espírito de forma integrada, além de desenvolver técnicas de defesa pessoal.

Com isso, nove dizeres foram nomeados como princípios do Judô, além de duas máximas – pressuposto básico da prática – sendo [1]:

  • SEIRYOKU-ZENYO, que significa a máxima eficiência com o menor gasto de energia;
  • JITA-KYOEI, que significa bem estar e benefícios mútuos;

Aplicando esses conceitos ao desenvolvimento de software, chegamos a boas práticas como [2]:

  • Desenvolver a menor quantidade de código personalizado possível;
  • Maximizar o reuso;
  • Utilizar com sabedoria o poder de processamento;
  • Minimizar distribuições desnecessárias;
  • Unificar as arquiteturas;
  • Simplificar o processo de desenvolvimento;

Pode parecer um pouco sem contexto, mas quanto mais eu vivo, mas percebo que existe muito desperdício na atividade de desenvolver software. Desperdício de dinheiro, traduzido em: funcionalidades que nunca são usadas, cronogramas irreais obrigando que o famoso banco de horas cresça, desenvolvedores inexperientes (e pior, sem treinamento) assumindo grandes responsabilidades, contratos mal feitos, entre outros fatores.

Logo, existe o grande descrédito da nossa atividade que é “muito cara” e “muito arriscada”. Atualmente tenho estudado muito formas de Desenvolver Software de forma ágil e gostaria de recomendar alguns materiais que ando lendo:

Boa leitura! E deixem seu comentário…

Referências:

[1] DOS SANTOS, Saray Giovana. JUDÔ: ONDE ESTÁ O CAMINHO SUAVE?
[2] BEGOLI, Edmon. Software Judo.

Foto: Is Time Really Money de Ricardo Saffi Marques

December 8th, 2006

Essa semana acessei uma sugestão de artigo no blog do José Papo e fui conferir. O artigo fala sobre experiências do mundo real usando Scrum e XP. Chama-se Scrum and XP from the Trenches. O artigo tem 90 páginas e o autor (Henrik Kniberg) explica basicamente como ele utilizou metodologia ágil no desenvolvimento de software com uma equipe de 40 pessoas e vários projetos. As experiências relatadas são muito legais, recomendo fortemente a leitura.

Links para o artigo: