Wednesday, October 23, 2013

Decisões difíceis de se tomar!!!!

Bom galera.

Hoje foi necessário eu tomar uma decisão que acredito que todos que um dia forem se aventurar em aplicar SCRUM vão se deparar em algum momento.

O mercado está repleto de bons profissionais mas infelizmente não existe tantos que realmente sabem como trabalhar em um time.
Precisei tomar uma decisão de dispensar um desenvolvedor.

Tive alguns problemas anteriores a adoção do SCRUM que também impactaram na decisão.
Mas no geral estava tendo bastante report negativo do time e eu mesmo estava percebendo as disparidades.
Uma falta de comprometimento com o time que estava prejudicando o andamento dos trabalhos.
Após a retrospectiva os pontos foram ajustados mas não resolveu.

Eu imaginava que isso poderia acontecer e infelizmente minhas impressões se concretizaram.

Quero deixar claro que tecnicamente era muito bom, mas em um Dev Team isso não é o mais importante. Precisa ter muita transparência e comprimento com o time....

Well,
E a vida segue e que venha o próximo....

Thursday, October 17, 2013

Sprint Review e Retrospectiva

Salve...

Sexta passada dia 11/10  e dia 16/10  tivemos nossas primeiras reviews e  retrospectivas.

Quanto aos sprints ,na review , tudo OK. As metas foram cumpridas.

Na retro já tivemos calorosas discussões que foram muito bem pontuadas pelos times. A grande maioria estão diretamente ligadas a falta de organização do time, afinal foi o primeiro Sprint de ambas as equipes e isso era mais que esperado.

Com certeza o próximo sprint já será diferente e o percentual de foco vai aumentar.
Nesse primeiro momento o percentual ficou em aproximadamente 60% e o ideal seria de 70 a 80% mas também era esperado nesse momento.

Algumas falhas foram identificadas e algumas documentações necessárias para nosso processo já emergiram e alguns processos foram adicionados ao Framework.

Já tive um feedback positivo da Diretoria que já enxerga que logo logo vai ficar bem interessante o processo mas os POs ainda estão um pouco apreensivos e um pouco perdidos em organizar o famoso status report e como ainda não conseguimos diminuir o CAOS que está sendo tratado por uma equipe específica ainda estamos com atrasos em alguns projetos.

Hoje vejo times comprometidos , com vontade de trabalhar e bater a meta com qualidade e todos só temos a ganhar com isso.

Estou pensando em um game entre os times para que após alguns sprints completados todos tenham uma parte do Sprint para trabalhar em algo que ajude todos os times a melhorar a performance ou automatizar alguma coisa ,algo assim, para depois apresentar para os outros times.
Acho que isso vai trazer um benefício muito grande para todos e é um trabalho para distrair e mudar um pouco o foco do trabalho pesado do dia a dia.

Bom. . Por hoje é isso.


Até a próxima. ..

Thursday, October 10, 2013

Primeiro Sprint Planning da equipe FÊNIX

Bom.
Here we go again..

Na Quarta dia 09/10 aconteceu o primeiro planning da equipe Fênix..
Definitivamente para minhas equipes pontos de dias ideais funcionaram melhor, portanto vamos seguir assim...

Framework explicado e estimativas feitas.
Pela primeira vez fiquei realmente cansado no Planning, resultado do trabalho duro para colocar tudo em ordem nesses últimos dias.
Quase usei o cafezinho do baralho...
Mas deu tudo certo..



Estou muito contente com o resultado que conquistamos até agora.
A primeira funcionalidade de todos os times atrasaram um pouco, mas nada que não fosse esperado já que estão aprendendo a trabalhar em equipe.
O Orion terminou o sprint antes do dia como previsto, então juntos colocamos mais algumas funcionalidades que caberiam no sprint para completa-lo até a review de amanhã.

É muito importante que os membros do time se dediquem para aprender a trabalhar em equipe já que isso é um pré requisito para ser trabalhar em um dev team scrum juntamente com a auto-organização.

Vejo que meus times estão se esforçando para se adaptar a todas essas mudanças e estou escutando muitas discussões dentro dos times que estão sendo muito produtivas para os projetos e para o crescimento profissional dos integrantes dos times.

De repente olhei pela manhã e vi o time Orion, que foi o primeiro a entrar no sprint, fazendo o Daily Scrum sozinhos e com uma boa organização.
Não me envolvi apenas fiquei de longe observando.



Estou vendo o Canis começar a se organizar também e em alguns momentos interrompo para volta-los para o foco que deve ser discutido na daily. .
Já estou tendo trabalho para barrar as interferências e infelizmente nunca iremos agradar a todos ,mas sempre vamos fazer o máximo possível...
Espero que as outras áreas entendam que é preciso manter o controle sobre as interferências afinal isso é um dos principais papéis do Scrum Master, mas quem for se aventurar em desempenhar o papel de Scrum Master se prepare para enfrentar problemas nessa esfera..

Amanhã dia 11/10 teremos nossa primeira review e retro. 
Tomara que o time tenha anotado muitas coisas durante o sprint para discutirmos e refinarmos o processo...
Até a próxima...



Saturday, October 5, 2013

Primeiro Sprint Planning da equipe Canis

Olá galera..
Na quinta-feira dia 03/10 aconteceu mais um sprint planning. O primeiro da Equipe Canis.
Bom dessa vez cometi alguns erros que preciso me policiar para não ocorrer novamente.
Acabei atrasando o sprint planning por alguns motivos.

1 - Um dos integrantes do time atende o suporte 24 hrs da empresa 1 semana por mês e calhou de exatamente na madrugada anterior ao planning precisar atender um cliente..  Ou seja chegou mais tarde um pouco.

2 - Pela manhã ainda existiam algumas pequena pendências para eles fecharem e preferi esperar um pouco.

3 - Quando estávamos prontos um colega entrou em reunião na sala que iríamos utilizar então tivemos que adaptar e fazer na mesa de algumas pessoas que não estavam lá.. 

Bom é claro que isso atrapalhou...
O planning não acabou antes do almoço e tivemos que voltar após o almoço acabando por volta das 15 hrs..
Mesmo assim o planning foi bom e novamente usando a estimativa com pontos de dias ideais se mostrou mais adequada para a maturidade da equipe.
Não quis forçar a barra para o time pegar a quantidade de tarefas que acredito que eles tenham capacidade de fazer pois é o primeiro sprint e precisam se adaptar a esse novo processo de desenvolvimento.

Metodologia explicada e tarefas quebradas...
Go Canis...

E que venha o planning do time Fênix na próxima quarta.




Monday, September 30, 2013

Primeiro Sprint Planning do Time ORION

Pessoal, conforme prometido, após muito trabalho no final de semana consegui deixar o Backlog pronto para o nosso primeiro Sprint Planning...

Eu acho que nesse primeiro momento o time sub-estimou a capacidade do time, mas eu não interferi e deixei-os confortáveis para assumir aquilo que eles realmente podem entregar como DONE.

Tentamos fazer as estimativas utilizando Story Points, mas foi meio complicado esse método.
Como esses desenvolvedores já trabalham na empresa a bastante tempo fica muito subjetivo estimar por story points. Eles acabavam fazendo a relação com horas e isso acabava não funcionando.

Percebi que era mais fácil mudar o método que ficar batendo nos Story Points, então mudei a estratégia para pontos de dias ideais, que para quem não sabe, consiste em dizer em quantos dias ideais , ou horas ideais é possível implementar a funcionalidade. Lembrando que horas ideais corresponde ao time sem nenhum tipo de interferência. Eu falei da seguinte forma para deixar isso claro ...  Imagine vocês trancados em 1 sala com comida, água, café... Quantas horas fariam o item, sem nenhuma interferência .

Isso para nossa experiência funcionou melhor, mas vou fazer o mesmo exercício com os outros times.

Depois de +- 2 horas de Planing fechamos o Plano e a Meta (menor que o plano) + detalhamento das tasks..

O exercício de quebrar as tarefas foi bem produtivo e consegui mostrar a possibilidade de quebrar o item em pequenas atividade menores que 1 dia para que todo o time trabalhe no mesmo item até matá-lo.

Essa alteração para colocar auto-organização no time e todos trabalharem em cima do mesmo item já foi uma grande mudança na forma que eles estão acostumados a trabalhar. Acho que por esse motivo não quiseram se comprometer com mais coisa.

Bom, é isso, nos próximos dias escreverei mais sobre essa implantação conforme for tendo o feedback do processo.

Segue a foto do time feliz pelo trabalho feito e é isso que mais importa. Todos motivados...!!!

Estamos usando o JIRA com o Plugin Agile aqui na empresa, mas para o planing nada melhor que o velho quadro e post-its.






Saturday, September 28, 2013

Onde e como tudo começou...

Onde e como tudo começou...


Bom Galera, meu nome é Hermes e nesse primeiro post vou falar um pouco da minha trajetória na empresa onde trabalho, colocar o blog exatamente no ponto que estou hoje e contextualizar um pouco para que seja possível entender e evoluir na minha tentativa de implantação do Scrum. Esse post será um pouco longo, mas acredito que será interessante saber um pouco do passado.

Trabalho na DWCS (nome fictício) a 8 anos. Entrei em Dezembro de 2005 para trabalhar como Desenvolvedor Java e já tinha 3 anos de experiência com desenvolvimento de sistema na linguagem Java.
Em Agosto de 2009 foi necessária uma divisão na equipe de desenvolvimento para separar em duas equipes que iriam trabalhar com o produto base da empresa, que chamamos de Kernel, e a equipe que desenvolve os projetos de customização do produto que na sua grande maioria são necessários em cada nova venda do produto. Eu fui escolhido para ser o Gerente dessa nova equipe, que na verdade seria formada por alguns dos colegas que eu já trabalhava junto.

Eu sempre gerenciei a equipe do meu jeito, nunca me apeguei em estudos e métodos, sempre fiz isso com o coração, pois faço o que amo. Nunca deixei de programar e Arquitetar Software pois essa também é uma paixão, mas como o tempo comecei a gostar desse lado da gestão. Sempre fui uma pessoa tranquila, que não se estressa facilmente, que tenta ajudar a equipe o máximo possível e sempre procurei ser um "chefe" legal e parceiro e acho que no geral eu consegui.

No inicio de 2011 eu consegui um projeto Home Office (isso, eu pego alguns trabalhos extras pois na DWCS não consigo utilizar tecnologias novas pela características do Kernel) em uma empresa Canadense que não tinha escritório no Brasil pois estava querendo por em prática todo o esforço que estava fazendo para aprender a língua inglesa.
Essa empresa era uma StartUp e nasceu com conceito de Agile na veia. Integração continua, revisão de código, testes unitários, liderança servidora, etc . Quando comecei a trabalhar com eles a primeira coisa que me chamou a atenção foram as ferramentas que eles usavam para trabalhar, que eram as ferramentas da Atlassian (JIRA, Bamboo, FishEye, Crucible e Confluence), Sonar (analise de qualidade de código) , Nexus (repositório central do maven) e o próprio Maven que eu tinha usado bem pouco e dessa vez aprendi até a parte avançada de configurações.

Bom, quando eu me deparei com essa estrutura toda, a primeira coisa que eu fiz foi comparar a minha forma de gestão, bem manual, com a forma que eles faziam a gestão. Com isso pensei.. Eu preciso disso...
Esse projeto pessoal foi importantíssimo para eu ver o mundo fora da minha equipe e então eu comecei a montar uma estrutura interna na DWCS assim como era nessa empresa Canadense.
Suguei o máximo possível de conhecimento deles e em alguns meses e varias noites mal dormidas, no caso meados de Junho de 2011 eu já tinha um novo modelo de projeto de customização todo baseado no maven e uma estrutura de ferramentas igual a dos Canadenses.
Hoje usamos bem o JIRA e o Bamboo, e junto com o Nexus e o fonte no Maven melhorou muito o controle sobre o desenvolvimento que está sendo feito e com isso consegui maximizar o trabalho na equipe que era praticamente somente de projetos novos(outra equipe fazia o desenvolvimento das melhorias) e agora atende todo o ciclo de desenvolvimento de projetos novos e de melhorias evolutivas de todos os clientes da empresa.

Esse ano me deparei com outros problemas. Entraram alguns projetos grandes e percebi uma grande acomodação de toda a equipe.
Estavam praticamente todos em uma grande zona de conforto e senti a necessidade de mudança novamente.
Os projetos em cascata estão entrando em colapso de falta de qualidade, atrasos frequentes, falta de comprometimento da equipe, falta de união e eu ficando louco com tanto problema resolvi procurar alternativas. Foi aí que lembrei de coisas que eu já tinha lido e voltei a olhar o Scrum e metodologias ágeis como uma alternativa.

Estudei novamente o framework e entrei no árduo trabalho que todos os Scrum Masters(não me considero um ainda, estou em processo de aprendizado) encontram em algum momento na carreira de encaixar o Scrum em uma organização.

Vou falar um pouco da estrutura organizacional para que seja possível vocês entenderem onde está a dificuldade de implantar o framework.

Temos hoje 8 Gerentes de Projetos, que na DWCS precisam atuar como Gerentes e também com toda a parte do negócio, já que na empresa os GPs precisam conhecer muito bem o produto conseguir propor as melhores customizações para o Cliente, ou seja, nossos GPs conhecem intimamente o que o cliente precisa e o que agrega valor para ele. E para ajudar esses GPs nas tarefas de levantamento e documentação uma equipe de A&D que tem hoje 5 pessoas.
Temos a equipe de desenvolvimento com 12 desenvolvedores Java, e uma equipe de testes de aceitação , chamada de QA, com 5 analistas que não fazem testes automatizados e ainda não tem essa expertise.
Basicamente a metodologia da DWCS (a empresa adotou uma metodologia própria de gestão para conseguir atender a prazos cada vez mais curtos) utiliza essa estrutura em um modelo Waterfall.
A DWCS vende projetos de escopo fechado ainda, então a implantação do Scrum 100% poderá ser prejudicada por uma possível resistência na mudança da gestão de contratos, mas vou tentar chegar o mais perto possível de ter um bom Scrum.

Conhecendo muito bem toda essa estrutura e metodologia da empresa meu primeiro desafio foi tentar ajeitar isso tudo no Scrum então tomei uma decisão de fazer por partes.
Primeira estratégia.. ?
Fazer um curso de Scrum Master...
Escolhi fazer um oficial que me daria o direito de fazer a prova de certificação Foundation da ScrumAlliance de Scrum Master.
Existe muita desconfiança nessa certificação por parte da comunidade Agil, mas a galera não entende que essa certificação é apenas para mostrar que o individuo sabe a base do Scrum e não se ele trabalha e tem experiencia profissional com isso. Para isso existe a Certificação Professional e esse é um dos motivos que eu estou aqui hoje escrevendo, pois para conseguir essa certificação precisa enviar um dossiê com a sua experiencia para que após a aprovação você possa fazer a prova.

Aprendi muita coisa legal no curso ,por exemplo o que é e o que não é Scrum.
Burndown Chart não faz parte do framework scrum por exemplo.
Aprendi também que sem problemas se na sua empresa você não conseguir usar Scrum, só de usar uma parte dele já vai trazer muitos benefícios.
Que toda implantação de Scrum passa por vários níveis assim como o CMMI.
Scrum nível 1 - Acha que usa Scrum mas usa Waterfall
Scrum nível 2 - utiliza o Scrum But.. (Scrum mas o time de qualidade está separado por exemplo)
Scrum nível 3 - Utiliza Scrum mas ainda com algumas poucas falhas.
Scrum nível 4 - Utiliza o Scrum muito bem, já acertou todos os processos e já tem um Scrum evoluído.
Scrum nível 5 - Pasmem... Deixa de utilizar o Scrum.. Pois já está tão bem que já tem maturidade para fazer os processos da forma que mais seja interessante.

O Scrum é um framework para processos empíricos em sistemas complexos. Ele existe para te tirar de uma posição e te levar para outra posição. Quando você já estiver do outro lado ele não te serve mais.
Poucas empresas tem esse grau de maturidade.



Primeira reflexão e muito importante.
Complexidade não está ligada a dificuldade.
Complexidade está ligada a previsibilidade.
Se uma coisa é complexa ela é imprevisível e não difícil.

O Scrum existe para tratar problemas que estão em ambientes complexos. Não tente usá-lo em outro tipo de ambiente que ele não vai ajudar. Só vai te levar a desordem.




Bom, agora sabendo mais sobre o Scrum que meu trabalho realmente começou...

Quem é quem no meu Scrum...

Primeira barreira. O instrutor me disse que eu não poderia ter mais de 1 Product Owner por equipe de Scrum. Eu considero que meus GPs são os Product Owners, pois eles que sabem exatamente o que meu cliente final quer e ele que tem a autonomia de mudar coisas no projeto. Ele conhece e escreveu os requisitos.
Mas tenho 8 GPs e 1 equipe de 12 desenvolvedores...
Bom vamos devagar quero pular o Scrum nível 1(não quero me enganar)... Então vou para o 2, Scrum But..
Scrum, mas tenho mais de 1 PO por equipe...
Vou dividir a equipe em 3 equipes de 4 desenvolvedores mais 1 Tester que sairá da equipe de QA e se incorporará a equipe Scrum, 1 para cada uma..

Hummm, hoje tenho muitas situações de caos.
Meu cliente final homologa com as áreas usuárias o sistema antes de entrar em produção e isso acontece na hora que ele achar que deve fazer. Muitas vezes não segue o planejado.
Pela nossa falta de qualidade voltam itens de erro nessa homologação.
Pela falta de qualidade ocorrem erros na entrada em produção, portanto por questões de justiça não passamos o cliente para a equipe de Suporte (outra área da empresa que não é gerenciada por mim) enquanto não passar um período sem que nenhum bug seja encontrado em produção.

Até eu resolver a falta de qualidade preciso ter alguém para apagar o incêndio.

Fui até meu diretor pedir os Testers para a equipe e mais um problema..
Ele me falou que nesse momento não é possível ser dessa forma.
A área de testes tem outras atividades.
Fazem testes integrados no cliente, em alguns momentos participam da homologação, testam as releases do produto, etc. , e eu aprendi no curso que para os Testers estarem dentro da equipe do Scrum o tester precisa saber de Agile Testing, caso contrario vamos fazer mini waterfalls dentro da equipe e vai acabar prejudicando o final da Sprint.

Outra coisa que fechei com o Diretor foi..
Hoje temos propostas de melhorias evolutivas e atividades que precisam ser colocadas no backlog em prioridade maior e não podem demorar muito para iniciarem.
Portanto decidimos que os times irão ter os sprints iniciados de forma intercalada com isso não passaremos mais de 4 dias sem iniciar 1 sprint nova em algum time.

OK. Meus desenvolvedores precisam se Auto-Organizar e testarem o que estão fazendo para garantir a qualidade.

Enquanto eu estava no curso ocorreu uma situação que me fez parar e pensar novamente.
Um cliente ligou para a empresa e pediu que um desenvolvedor da equipe que estava desenvolvendo as customizações dele ficasse de prontidão para qualquer alteração que ele quisesse fazer durante 25 dias corridos, pois eles estavam homologando com a área usuária e com certeza coisas precisariam ser alteradas.
O projeto já estava finalizado.
Se eu já tivesse rodando Scrum na equipe como faria..? Não posso tirar uma pessoa da Sprint do nada...
Mais um motivo para eu ter uma equipe que vai tratar o CAOS.

A equipe de QA da empresa está com muito trabalho atrasado, muita coisa já foi entregue para eles a muito tempo e eles ainda não testaram (temos muitos projetos atrasados). A hora que eles começarem a testar, pela nossa falta de qualidade anterior, bugs serão encontrados e podem comprometer muito os sprints que estejam em andamento..
Mais um motivo para eu ter uma equipe que vai tratar o CAOS...

Ta bom caramba... Já entendi, preciso de uma equipe que batizei de CHAOS...
Vou formar 3 times de 3 pessoas que vão trabalhar nos Sprints e 1 equipe de 3 pessoas que vai resolver o CAOS para o resto do time não desfocar.

Por que 3 para o time do CAOS?
Por que 1 deles foi "vendido" para aquele cliente que quer que ele pare o que ele estiver fazendo para corrigir ou desenvolver alguma coisa para ele...
2 para corrigir listas de homologação , listas antigas de QA, erros de pós produção e o que mais aparecer de problemas.

Minha equipe já tem um pouco da multidisciplinaridade que o Scrum pede.
Todos fazem modelagem de dados, todos desenvolvem código, todos precisa sabem testar, todos tem algum conhecimento de infra-estrutura, alguns mais outros menos, todos conhecem banco de dados, alguns conhecem Performance Tuning, alguns conhecem muito bem o Kernel do Produto e outros nem tanto.
Já rodei uma pesquisa e hoje tenho um mapeamento do que cada um conhece e o nível de cada um e sei quem tem alguma restrição para trabalhar com alguém, afinal não quero equipes desunidas..
Eu atuarei além de Scrum Master como um guru dos 4 times.
Eu rodei comigo a pesquisa que passei para o time e em uma escala de 0 a 5 meu menor conhecimento é 4 então posso ajudar em muita coisa e é um papel que já tenho hoje.
Se ninguém conseguiu resolver falam com o Hermes :)..

Bom pessoal, como disse no início, esse post foi bem longo e agora estou alinhado no tempo.
Estou exatamente nesse ponto.
Próximo passo para o final de semana...
Separar as equipes deixando-as multidisciplinares ao máximo e colocar no JIRA algumas atividades que já estão programadas para deixar o backlog pronto pra segunda-feira..
Vocês podem estar se perguntando... Mas o Backlog não é responsabilidade do PO?

Sim, mas cada PO prioriza suas atividades e tenho 8 POs e as listas precisam se juntar em algum momento para a equipe "pegar" na ordem correta.
Eu estou fazendo isso até achar outro jeito.
Lembrem-se, estou entrando no Scrum nivel 2 agora e ainda sou um Canivete Suíço.

Bem vindos a vida real na implantação do Scrum.

Vou tentar postar o máximo possível do meu dia a dia.