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.
Tags: Agence, Agile, Agile Adoption, Agile Brazil, BDD, Campo Grande, CMMI, DDD, Evento, eXtreme Programming, MPS, MPS.br, OpenUP, Pair Programming, Porto Alegre, Scrum
Posted in
Agence, Agile, Drops, Eventos |
4 Comments »
February 10th, 2010
Venho estudando um framework para Behavioral Driven Development chamado Cucumber e me impressionado com a facilidade e clareza que a atividade de implementar testes automatizados vem se tornando. Para quem quiser saber mais sobre Cucumber, antes mesmo de continuar essa leitura, recomendo consultar esses links:
O foco deste, é apresentar minha experiência em usar o Cucumber integrado com o Selenium e mostrar um exemplo de como é simples implementar testes funcionais. Para começar, leia essa documentação que explica como configurar seu ambiente. Se você usa MacOS Snow Leopard (10.5) deve passar pelos mesmos problemas que eu tive e que encontrei a solução neste link.
A idéia central é escrever estórias para teste de telas (caixa preta). Disponibilizei no github o código-fonte da aplicação em Rails que está sendo testada e de outra aplicação, somente Ruby, usando Cucumber + Selenium. Para demonstrar o uso do Selenium, escolhi um cenário bastante simples, trata-se de um história de autenticação de usuários:
Perceba que nos preocupamos em escrever a história o mais “User Friendly” possível. Isso facilita bastante o entendimento sobre o que você está de fato testando e o que o seu usuário (ou cliente) acha que você deveria testar. E, como você já deve saber, as palavras-chave “dado”, “quando” e “então” representam ações que são implementadas em Ruby. Para começar, configuramos no arquivo support/env.rb o ambiente da API para Selenium em Ruby criando uma instância da classe Selenium::SeleniumDriver.
No arquivo support/paths.rb configuramos o mapeamento de nome de páginas para URIs e também de label de campos para o nome do campo no formulário HTML. Os métodos path_to, field_for e button_for fazem essas funções.
OK, concordo com vocês que essas funções não fazem lá muita coisa, mas lembre-se que estamos fazendo o nosso primeiro caso de teste, tenha certeza que serão úteis no futuro próximo. Um exemplo que eu já posso citar foram os testes que implementamos para testar uma aplicação, na verdade um portal, desenvolvido em Drupal, onde o “label” dos campos não era nem um pouco parecido com o nome (do componente HTML) do campo. Lembrando que as histórias tem de ficar o mais próximo possível da taxonomia (ou idioma) do seu usuário.
Agora, vamos à parte que interessa, de fato a implementação dos passos descritos nas estórias. Criei o arquivo step_definitions/common_steps.rb contendo os passos mais comuns que você deverá usar na maioria de suas estórias. Para passos específicos de determinada história, recomenda-se criar um outro arquivo no diretório step_definitions com o nome da estória.
O exemplo é bastante simples, e a aplicação Rails do github contém uma implementação bastante simples do que está sendo testado. Para executar, basta usar o comando “cucumber” na raiz do projeto de testes. Lembrando que você deve iniciar o servidor do Selenium usando o comando “selenium” (isso funcionou pra mim após instalar o Selenium RC).
Se você tiver dúvidas ou problemas na execução do exemplo, fique à vontade de postar nos comentários que farei o possível para tentar ajudar. E, por hora ficamos por aqui. Em breve devo postar alguns exemplos de passos mais complexos como uso de tabelas e/ou editores ricos. Estamos trabalhando nisso agora!
Tags: Agile, BDD, Cássio Marques, Cucumber, eXtreme Programming, Jefferson Girão, MacOS, RSpec, Ruby on Rails, Selenium, TDD, Teste de Software, Urubatan
Posted in
Agile, Artigos, Ruby on Rails |
No Comments »
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!
Tags: Agence, Agile, Engenharia de Software, eXtreme Programming, MPS, Scrum, UFLA
Posted in
Agence, Agile, Artigos, Engenharia de Software, MPS |
No Comments »
October 6th, 2009
Na semana de 29/09 a 05/10 a UNIDERP/Anhanguera promove a XII Semana da Computação. A Agence Educacional é patrocinadora do evento e está oferecendo um mini-curso de “Desenvolvimento Web com Ruby on Rails” com carga horária de 20 horas nos laboratórios da faculdade, ministrado por Rodrigo Toledo.
Além disso no dia 29/09 Saulo Arruda e Rodrigo Toledo ministraram a palestra “Desenvolvimento Ágil com Ruby on Rails” no auditório do evento. O vídeo contendo a apresentação na íntegra está disponível na internet no endereço: http://vimeo.com/6837182. Slides disponíveis em: http://www.slideshare.net/agenceeducacional/desenvolvimento-agil-com-ruby-on-rails.
[]’s
Na semana de 29/09 a 05/10 a UNIDERP/Anhanguera promoveu a XII Semana da Computação. A Agence Educacional foi patrocinadora do evento e ofereceu um mini-curso de “Desenvolvimento Web com Ruby on Rails” com carga horária de 20 horas nos laboratórios da faculdade, ministrado por nosso colega Rodrigo Toledo.
Além disso no dia 29/09 eu e Rodrigo Toledo (novamente) ministramos a palestra “Desenvolvimento Ágil com Ruby on Rails” no auditório do evento. O vídeo contendo a apresentação na íntegra está disponível na internet no endereço: http://vimeo.com/6837182. Slides disponíveis em: http://www.slideshare.net/agenceeducacional/desenvolvimento-agil-com-ruby-on-rails.
Tags: Agence, AgenceEducaional, Agile, Anhanguera, Campo Grande, eXtreme Programming, Mato Grosso do Sul, Ruby on Rails, UNIDERP
Posted in
Agile, Eventos, Palestras, Ruby on Rails, Treinamento |
No Comments »
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
Tags: Agile, eXtreme Programming, Judô, Martin Fowler, Scrum
Posted in
Agile, Artigos |
1 Comment »
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:
Tags: Agile, Engenharia de Software, eXtreme Programming, Henrik Kniberg, InfoQ, José Papo, Scrum, The Server Site
Posted in
Artigos, Engenharia de Software |
No Comments »
December 4th, 2006
O JustJava é o maior evento sobre Java promovido pela comunidade no Brasil. O evento conta com cerca de 70 atividades entre palestras, tutoriais, painéis e cases. O evento aconteceu de 30 de Novembro a 02 de Dezembro em São Paulo, no SENAC Santo Amaro. Eu vou relatar neste post as atividades das quais eu participei.
No dia 30 aconteceu a solenidade de abertura com um pequeno atraso por causa da chuva seguido do Keynote do SouJava que, comandado por Bruno Souza (o javaman) e convidados, falou sobre a tecnologia Java no Brasil, sobre Java 6 e 7, grupos de usuários, e anunciou a abertura de 160 vagas para desenvolvedor Java na IBM, inclusive com opotunidade de trabalho no modelo home office (em casa!). Logo após aconteceu o Keynote da IBM com a palestra “Enterprise Mash-up” por Flávio Bergamaschi. Essa palestra foi demais. O cara falou sobre sistemas situacionais e deu o link de um projeto que é uma proposta para criação de sistemas deste tipo relacionando dados de fontes e formatos diferentes (RSS, WebServices, Database, etc.), muito interessante. Logo após assisti “Conhecendo a nova versão das ferramentas Rational application developer” com Fernando Galdino. Essa palestra focou bastante em mostrar os recursos da ferramenta, que apesar de ser bastante parecida com o Eclipse + WTP, tem alguns recursos interessantes da Rational para modelagem UML e tudo mais. A tarde assisti “Transações de A a Z” com Felipe Leme que sempre fala com muita propriedade e explicou muito bem os conceitos de JTA e relacionados. Depois disso, assisti o tutorial da Yara Senger e do Kleber Xavier, ambos da Globalcode, sobre “Exemplos práticos de diagramas de classes, atividade, seqüência e casos de uso”. O início da palestra foi bom, mas depois do coffee break tornou-se muito cansativo e então fui embora.
No dia 01 assisti “Padrões de Design em Java” com Helder Rocha. Foi muito legal, apesar de ficar um pouco corrido explicar todos os padrões do GoF em 60 minutos, mas o Helder conseguiu priorizar legal e dar uma ótima noção sobre todos. Depois eu fiquei conversando com o pessoal da IBM e não assisti nenhuma palestra. Logo após, meu colega de especialização Givanildo do Nascimento deu o balão e acabei assistindo “JMX, JConsole no NetBeans 5.5 – Uma visão de profile” com Carlos Santiago. Ele falou de uma maneira bem simples sobre JMX e apresentou o uso do JConsole no Netbeans 5.5, o público fez várias perguntas, foi bacana. Depois do cofee break eu assisti a palestra “Desktop em minutos com genesis, Matisse, Java WebStart e JSR-296” com Allan Jones, Michael Nascimento e Raphael Winckler. Sem comentários, vou deixar pela opinião do Michael, e ele cumpre o que promete (mesmo que demore um pouquinho…
. Depois vi a palestra do pessoal da telefônica “Java para sistemas de missão crítica: mito ou realidade?” com Alberione Braz e Marcelo Martins. Essa palestra foi um case muito legal, os caras tinham que desenvolver um sistema para processar 500 milhões de CRs/dia e isso levou a um esforço enorme de otimização que eles apresentaram na palestra. Muito interessante e infelizmente não anotei nenhum link, se alguém tiver, deixe um comentário. Logo após assisti a palestra “Modelagem Ágil e Java” com Fábio Petrillo. Ele falou de uma forma bem informal sobre modelagem ágil de verdade usando ferramentas simples como quadro branco, papel e caneta. Ótimo case, também apresentou experiências de desenvolvimento usando XP e matou a pau, principalmente com as fotos do slide! Parabéns. Para terminar, assisti “Plataforma de Desenvolvimento IBM” com Giseli Consoline. Essa palestra foi meio sem foco, mas valeu pela simpatia, no final tudo fica mais difícil.
No último dia cheguei atrasado e infelizmente perdi boa parte da palestra que mais gostaria de ver, “Java finalmente livre, e agora?” com Sérgio Amadeu, Mario Teza e Bruno Souza. Foi uma bola muito fora mesmo. Por fim não vi nada direito nesse dia pois estava bastante cansado e fui embora antes do fim do evento
.
Mas posso dizer que o evento foi muito proveitoso, recomento a participação de todos, independente do nível de conhecimento da tecnologia Java, existem palestras mais básicas e mais avançadas, fica a gosto do freguês! Fico, por aqui. Os slides do JustJava 2006 estão sendo publicados no fórum do GUJ, confiram!
Tags: Alan Jones, Alberione Braz, Bruno Souza, Eclipse IDE, eXtreme Programming, Fábio Petrillo, Felipe Leme, Fernando Galdino, Flávio Bergamaschi, genesis, Giseli Consoline, GlobalCode, GUJ, Helder Rocha, IBM, Java, Java WebStart, javaman, JConsole, JustJava, Kleber Xavier, Marcelo Martins, Mario Teza, Mash-up, Matisse, Michael Nascimento, Mister M, NetBeans, Raphael Winckler, Rational, RSS, São Paulo, Sérgio Amadeu, SENAC, SouJava, UML, Webservices, Yara Senger
Posted in
Eventos, Java |
2 Comments »