código Ágil

Agile, Scrum, Extreme Programming , Java e mais

Posts Tagged ‘equipes’

Trabalhe em paralelo de verdade

Posted by Luciano Félix em 20 outubro, 2008

Na maioria das equipes em que o gerente, ou chefe, atribue e direciona o trabalho do time, nomalmente o que vemos é o chamado “trabalho em paralelo” em que cada membro do time desenvolve sozinho uma funcionalidade prevista no escopo do projeto. Esse tipo de organização dá ao gerente a sensação de que várias funcionalidades estão sendo desenvolvidas ao mesmo tempo, o que deve garantir que o projeto não atrase. Bem, se analisarmos esse arranjo com um pouco mais de cuidado veremos que o que ocorre é exatamente o contrário.

Veja a figura:

Quando cada membro do time recebe uma funcionalidade para desenvolver sozinho, o trabalho na verdade será serializado e não paralelizado como se acredita, uma tarefa será executada após outra ser concluída e assim por diante, esse modelo, como vemos na figura, aumenta o risco de não termos nada de fato pronto para entregar e sim uma coleção de funcionalidades quase prontas. O que acontece é que quanto mais a data da entrega se aproxima, cada membro do time começa a trabalhar de forma apressada, sem preocupação com a qualidade, apenas com o objetivo de entregar a “sua parte” pronta. Além disso esse tipo de organização acaba com a colaboração dentro do time, já que o que interessa para cada um é entregar o que lhe foi passado, por que assim é que ele será cobrado.

Vamos analisar essa outra figura:

Aqui o time inteiro trabalha em conjunto na mesma funcionalidade e quando esta é completada o time passa a trabalhar na funcionalidade seguinte. Serialização!! Dirão alguns, nada mais incorreto. Desse jeito, todas as tarefas necessárias para concluir o item serão desenvolvidas de fato em paralelo pela equipe, e aí sim, estaremos diminuindo muito o risco do item não ser entregue. Além do que, esse modelo privilegia a colaboração e a comunicação do time, todos tem o mesmo objetivo, todos estão alinhados e o cliente receberá funcionalidades que estão verdadeiramente prontas.

De agora em diante, quando o seu gerente quiser “paralelizar” o trabalho do seu time, desenhe essas figuras para ele.

Anúncios

Posted in Uncategorized | Etiquetado: , | Leave a Comment »

Dilbert e a confiança na equipe

Posted by Luciano Félix em 29 agosto, 2008

Nada como trabalhar numa empresa que confia na capacidade de seus funcionários !

dilbert-team-trust.gif

Posted in Uncategorized | Etiquetado: , | Leave a Comment »

A culpa é de quem ?

Posted by Luciano Félix em 25 agosto, 2008

Gerentes mandões, chefes burocráticos, coordenadores sem visão. Muitas vezes colocamos a culpa do fracasso da implantação do Scrum apenas nas pessoas que fazem parte das esferas mais altas de gerência das empresas e muitas vezes eles tem mesmo, mas será que os chefes e gerentes são sempre os culpados ? A equipe não tem nenhuma parcela de responsabilidade no processo de implantação? Apontar o dedo para os chefes virou desculpa padrão para as dificuldades do processo, mas muitas equipes não estã preparadas para a mudança que o Scrum traz para o dia-a-dia de cada uma delas.

O Scrum prega que as equipes devem ser auto-gerenciáveis, infelizmente esse conceito é confundido com liberdade total, cada um pode fazer o quer e pronto, nada mais errado. Esse má interpretação leva a idéia errônea de que Scrum ou Agile é bagunça, muito pelo contrário, os processos ágeis exigem das equipes uma disciplina e um comprometimento ainda maior do que no processos tradicionais, este assunto estava sendo discutido ultimamente na lista scrum-brasil. Muitas pessoas não estão familirizadas com a mudança de paradigma exigida pela agilidade, não estão acostumadas a tanta liberdade e responsabilidade ao mesmo tempo, muitos preferem permanecer como “Code Monkeys”, mantendo o cerébro desligado e fazendo tudo exatamente como mandaram fazer, sem compromisso com a qualidade, prazo, etc. O problema não se resume apenas as práticas do Scrum, quando se fala em práticas ágeis de engenharia a coisa fica ainda mais complicada, quem não conhece alguem que faz cara feia quando ouve falar em TDD ou Pair Programming.

Para atingirmos um nível mais alto de qualidade, colaboração e comunicação é necessário sair da nossa zona de conforto para que possamos de fato aproveitar os benefícios que as práticas ágeis podem trazer.

Posted in Uncategorized | Etiquetado: , | Leave a Comment »

Como anda o humor da sua equipe ?

Posted by Luciano Félix em 5 agosto, 2008

O Niko Calendar ou Smile Calendar criado no Japão é uma forma simples e interessante dos membros da equipe reportarem diariamente como eles estão se sentindo durante o trabalho.

Como funciona ?

Uma linha para cada membro da equipe.

Ao final do dia cada membro reporta seu humor na sua linha no dia correto.

O humor é representado por etiquetas com smiles (feliz/motivado, normal/neutro, infeliz/desmotivado) que são colados no calendário pela equipe. Não podendo usar etiquetas a equipe pode desenhar seus smiles no calendário.

Para a quantidade de dias no calendário, gosto de utilizar o tamanho da sprint (iteração).

O calendário deve estar visível a todos.

Para que serve ?

O Niko Calendar é uma forma muita simples de feedback da equipe sobre o seu estado motivacional e mais do isso que faz com que todos os dias cada membro da equipe reflita um pouco mais sobre como foi o dia de trabalho e pense em como melhorar no dia seguinte. Além da função óbvia de servir como um termômetro de quão confortável e motivada está a equipe, por isso é importante que todos usem o calendário de forma correta, reportando de fato seu estado de espírito real ao fim do dia.

Quando implantamos o calendário na Solver, para a coisa ficar mais divertida ainda, pedimos ao nosso designer, Fradique Filho que criasse pequenas caricaturas dos membros da equipe nos 3 estados de humor, ficou realmente muito legal.

Mais informações sobre o Nike Calendar podem ser encontradas aqui

Posted in Uncategorized | Etiquetado: | 3 Comments »

Integrando novos membros ao time – Parte 2

Posted by Luciano Félix em 2 agosto, 2008

Pair Programming

Essa prática originada no Extreme Programming (XP) é sem dúvida excelente para acelerar o processo de integração. Os novos participantes do time terão a oportunidade de rapidamente participar do ciclo de desenvolvimento e de fato colocar a mão na massa. Por mais que sejam feitos treinamentos das ferramentas e processos da equipe, o conteúdo só será de fato assimilado quando for aplicado na prática e vivenciado no dia-a-dia. Quando um novo membro trabalha junto com alguém mais experiente poderá entender muito mais rapidamente o que é fazer parte da equipe. Peça a ajuda do restante da equipe para essa tarefa, pessoas com mais facilidade de comunicação e que sejam pacientes serão as melhores escolhas para trabalhar com os novatos no início, mas não se acomode com esse arranjo, tente fazer com que todos participem.

Incentive a participação

Os novos membros trarão para equipe diferentes experiências e conhecimentos, permita que eles possam mostrar o que sabem, dar sugestões, ensinar algo para os membros antigos. Crie um ambiente em que essas trocas de conhecimento possam acontecer.

Mantenha a integração ativa

Quando as pessoas se conhecem melhor, criam-se ligações interpessoais mais fortes que geram uma equipe que trabalha mais unida, portanto incentive a integração em ambientes longe do trabalho, almocem juntos quando possível, promova algumas reuniões em lugares diferentes, como por exemplo, numa cafeteria. Essas coisas podem não parecer muito importantes mas sem dúvida fortalecem o senso de equipe e união das pessoas.

Pessoal, por enquanto é isso, se vocês tiverem mais sugestões, por favor, enviem.

Posted in Uncategorized | Etiquetado: | Leave a Comment »

Integrando novos membros ao time – Parte 1

Posted by Luciano Félix em 31 julho, 2008

Seja acessível

Sendo o líder de uma equipe, sua participação é importantíssima no processo de integração de novos membros. Você será a principal referência, o ponto de contato com o resto da equipe e é seu dever fazer com que a integração aconteça da melhor forma possível. Portanto esteja sempre disponível para ajudar os recém-chegados, mostre-se acessível, deixo-os confortáveis para tirar dúvidas (There are no dumb questions!!). Mesmo que você esteja super ocupado, não os deixe sem assistência, afinal quanto mais rápido eles começarem a produzir, menos carga haverá sobre o restante da equipe e mais rapidamente a correria vai diminuir.

Explique o domínio da aplicação

É bastante comum que os novos membros não tenham experiência com o domínio da aplicação dos projetos em que estão embarcando. Se o projeto trata de finanças a equipe deve conhecer os termos do mundo financeiro, se trata de varejo ou saúde ou construção, idem. Não há como uma equipe desenvolver um projeto sem conhecer os conceitos envolvidos na sua criação, portanto tenha um cuidado especial nesse quesito, prepare algum material de apoio que possa ajudá-los, recomende textos ou livros sobre o assunto, se possível tenha esse material disponível na empresa.

Apresente os Processos e as Ferramentas

Logo no início explique aos novos membros como a equipe trabalha, quais processos e práticas foram escolhidos, quais ferramentas utiliza, etc., por exemplo: “A equipe está desenvolvendo um projeto em Java e aplicando o Test Driven Development utilizando o JUnit” ou, “Implantamos a integração contínua com o Cruise Control”, etc. . Não faça isso apenas com as práticas formais mas também todos os rituais que a equipe pratica, por exemplo: “A cada 15 dias um membro da equipe apresenta um workshop sobre um tema ligado ao trabalho” ou “Quem não estiver presente ao Daily Scrum pagará um multa de R$ 1,00”. Quanto mais rápido os novatos entenderem a dinâmica da equipe, mas rapidamente poderão se integrar. Se possível prepare uma lista de referências onde eles possam aprender mais sobre esses assuntos, mais uma vez, se possível, tenha algum material disponível na empresa.

Posted in Uncategorized | Etiquetado: | 1 Comment »

Integrando novos membros ao time – Intro

Posted by Luciano Félix em 21 julho, 2008

A entrada de um novo membro numa equipe é sempre um momento delicado tanto para a equipe quanto para quem está chegando. Para a equipe é uma mudança no status quo, uma possível mudança na dinâmica do time e para o novo membro é um terreno desconhecido, essa situação pode gerar certo desconforto se não for tratada com atenção. O sucesso na integração de um novo membro ao time é fator determinante na qualidade do ambiente e da produtividade do time daí em diante.

Infelizmente esse assunto não é tratado com a devida importância pela grande maioria das empresas que colocam seus novos profissionais em situações bastante difíceis até que eles mesmos possam caminhar com as próprias pernas. Quanto mais complexo for o projeto, mais atenção deve ser dada aos novos membros para que eles possam sentir-se a vontade para contribuir o mais rápido possível com sua nova equipe.

Lendo o blog do Patick Kua vi que ele também se interessa bastante pelo tema e isso me inspirou a escrever sobre algumas coisas que acho de grande importância no processo de integração de um novo membro ao time.

Nos próximos posts falarei mais sobre essas técnicas. Até mais!

Posted in Uncategorized | Etiquetado: | Leave a Comment »

Daily Scrum eficiente

Posted by Luciano Félix em 18 julho, 2008

O Daily Scrum sem dúvida é uma das reuniões mais importantes do Scrum, porém é a mais subestimada e negligenciada de todas. O Daily Scrum sincroniza toda a equipe, estimula a colaboração e faz com que todos percebam imediatamente quando algo começa a atrasar.

O blog ScrumLabs publicou uma lista de 10 dicas para um bom Daily Scrum.

1. Comecem o mais cedo possível, sempre no horário, sem esperar por ninguém. Definam a agenda do dia.
2. Limite a duração da reunião em 15 minutos – use algum tipo de alarme se necessário.
3. Levantem-se! Isso encoraja a brevidade entre os participantes e mantém todos acordados.
4. Mesmo lugar e horário todos os dias, de preferência na sala da equipe.
5. Organizem-se em formato de U em torno do taskboard, isso ajuda no contexto de quem estiver falando.
6. Jogue uma moeda para definir a ordem. Cara no sentido horário, coroa no sentido anti-horário.
7. Apenas os membros da equipe e o Scrum Master podem falar.
8. Não é necessário fazer as “3 perguntas”. Apenas criem a rotina de respondê-las.
9. Não comecem a resolver problemas durante a reunião. Façam isso após a reunião.
10. Anotem os impedimentos no taskboard para que o Scrum Master possa resolvê-los.

Além desses itens eu acrescentaria mais 2.

11. Se necessário, utilizem um token. Apenas quem estiver de posse do token poderá falar.
12. Criem penalidades para quem não estiver presente à reunião, algo que beneficie a equipe como um todo.

Todos os membros da equipe devem estar preparados para responder as 3 perguntas:

O que você fez desde a ultima reunião ?
O que você fará até a próxima reunião ?
Existem algum impedimento para a realização do trabalho ?

Imediatamente após a reunião a equipe atualiza o taskboard com o novo status das tarefas e os gráficos de burndown. Além disso os membros da equipe discutem os itens que foram levantados durante a reunião e que ainda precisem de mais esclarecimento.
Lembrem-se o Daily Scrum não é um Status Report para o Scrum Master, e sim uma reunião de sincronização e planejamento da equipe.

Get Up! Stand Up!

Posted in Uncategorized | Etiquetado: , | 5 Comments »

Comunicação e Colaboração em equipes

Posted by Luciano Félix em 27 junho, 2008

Ontem (26/06), convidado pela minha amiga Rebeka Maia, estive presente a um evento sobre design de interação com o usuário, organizado pelo UXrecife na Faculdade Marista.No fim do evento surgiu uma discussão sobre a necessidade de um programador aprender as atividades de um designer e de um designer aprender sobre as atividade de um programador. Isso me remeteu imediatamente a como as equipes Scrum devem se organizar. Os processos ágeis em geral valorizam a comunicação, ou seja, numa equipe multidisciplinar: designers, programadores, testadores, analistas, precisam interagir, precisam se comunicar e se todos não tiverem o mínimo de vocabulário comum, o trabalho pode se complicar. Durante o evento isso ficou muito claro no depoimento de todos.

Outra questão muito importante é que quando uma equipe tem seus papéis extremamente definidos e ninguém se envolve como nada fora da sua área de atuação, o que se vê é uma falta de colaboração dentro do time, onde cada uma faz o seu trabalho e passa para a frente sem se preocupar muito com o trabalho seguinte. Hum…, isso parece familiar, alguém falou Waterfall ?? Quando especializamos demais os membros de uma equipe, o que acontece é que criamos um pequeno waterfall onde não há colaboração entre as partes, onde cada “setor” da equpe faz seu trabalho e o “joga por cima do muro”, isso sem dúvida não é uma forma sadia de se trabalhar.

Toda a equipe deve ter o mesmo objetivo, entregar o produto, e não somente, “entregar o design” ou “entregar o código” ou “testar” e cada membro da equipe deve fazer o possível para que o objetivo maior seja atingido e não se limitar apenas ao seu título.

Posted in Uncategorized | Etiquetado: , | 1 Comment »

Waterfall Teams vs Agile Teams

Posted by Luciano Félix em 19 maio, 2008

Nesse pequeno vídeo uma empresa de consultoria mostra a diferença entre um equipe waterfall e um equipe ágil de forma muito legal. Assistam !

Posted in Uncategorized | Etiquetado: , , | 1 Comment »