Páginas

Mostrando postagens com marcador Empresa Ágil. Mostrar todas as postagens
Mostrando postagens com marcador Empresa Ágil. Mostrar todas as postagens

09 março 2010

Ricardo Semler - Precisamos de Gerentes?

Vou levantar a lebre aqui :

Já ouvi várias pessoas comentando contra o auto-gerenciamento. Até mesmo durante uma palestra no Scrum Gathering Brasil falando sobre como o PMI está próximo do Scrum, Ricardo Vargas ficou de calças curtas após uma pergunta simples do Bernabó: estaria o PMI preparado para um mundo sem gerentes? Foi muito interessante ver o palestrante se contradizer completamente ao afirmar que não acreditava em auto gerenciamento, deixando claro que as pessoas precisam ser "observadas", "cobradas" e vigiadas... vai entender neh.

Você já ouviu falar no outro Ricardo, o Semler? Pois deveria! Impressionante como o cara é conhecido fora do Brasil! Bem, pra encurtar a história, ele "gerencia" uma empresa com projetos que chegam a 3 bilhões de dólares. Coloquei entre aspas o termo gerencia pois inclusive no video abaixo ele comenta que não toma decisões na própria empresa, pois quase tudo é decidido pelas equipes (que são auto gerenciadas e formadas de forma ad hoc)... difícil de acreditar? Vou colocar a tradução de alguns trechos do video:

Nós mandamos nossos filhos para qualquer lugar do mundo para morrer pela Democracia... Mas eu nunca vi um ambiente de trabalho democrático. Estão ela é muito importante para nossa vida, menos para o lugar em que passamos 60% de nosso tempo. Deve haver algo de errado nisso tudo.

Como é verdadeira essa afirmaçao! É como se toda a nossa evolução como seres humanos(e por que não, sociedades), fosse jogada fora todas as vezes que batemos ponto...

Todas as nossas reuniões são volutárias. Por que se começar a ficar chato, vá embora... Se não sobrar ninguém, será mesmo que precisamos dela?

Seria esta uma solução à desculpa de vários gerentes? "Não consigo mais trabalhar, passo o dia em reuniões!"... pense nisso!

O processo típico para contratações e seleções em empresas é basicamente um processo de paquera na internet. Você diz que sua empresa é o Brad Pitt e ela diz que é a Angelina Jolie. Vocês se encontram em um bar... ficam juntos em dois rápidos encontram e decidem se casar esperando que dê certo...

[Ao invés disso], nós pegamos os candidatos qualificados, que se encaixam na vaga, e pedimos a eles a virem juntos. Então encontramos qualquer um que queira estar envolvido entrevistando estas pessoas. Isto pode levar horas. Então os entrevistadores anotam as duas pessoas que eles gostariam que ficassem. Os dois que pontuarem melhor voltam para passar um dia inteiro por aqui e conversar com qualquer um que queiram... O resultado é um turnover de menos de 2% ao ano.

Fico feliz em saber que várias empresas legais no Brasil já fazem isso! Claro que turnover não é a principal preocupação de várias empresas (afinal, pessoas são substituíveis, não é mesmo?!)... mas lembre-se você também de que Empresas também são substituíveis! Ainda mais na área de software...

Sem mais enrolações... ai vai o video (sim, ja deve ser conhecido de várias pessoas!):



Fonte: MIT World

08 março 2010

Anti patterns para Gerentes

anti pattern gerencimanto
Tenho lido vários posts sobre as "boas práticas" para gerentes de software (O @akitaonrails vive escrevendo sobre isso [1, 2], já li um livro inteiro a respeito e até mesmo na China se fala disso!).

Mas antes de falar sobre boas práticas, gostaria de ressaltar alguns anti padrões que podemos observar (alguns já vivenciei... outros tenho a sorte de não ter visto ainda):

O Gerente desmotivador


Conhece profundamente a arte de desconsiderar qualquer idéia que seja diferente de sua própria percepção do mundo. Pronto para contradizer qualquer sugestão, assumindo normalmente o papel de "Desculpator Master" (sempre existe algum problema para ser resolvido em que a sugestão não se aplica). Normalmente este anti padrão vem acompanhado de outros, principalmente o "Muita boca e pouco ouvido". As implicações de tal comportamento estão intimamente ligadas ao descaso dos funcionários e à falta de credibilidade dos gerente junto ao grupo.

O Gerente muita boca e pouco ouvido


Muito influenciado pelo background do gerente que, inconscientemente ou não, acredita que já sabe todas as soluções para os problemas da empresa, e por isso deve estar numa posição superior aos demais. O comportamento padrão é: falar muito, normalmente repetindo-se a todo instante, como se estivesse falando para si mesmo um discurso, justificando o próprio raciocínio, distante dos demais. Dificilmente aborda funcionários para um conversa franca, pedindo opinião e sugestões sobre problemas. Os funcionários tendem a evitar a conversa, já que não existe nenhuma abertura para expor idéias e opiniões.
gerente alpinista control freak

O Gerente Alpinista


A escória dos gerentes, alcançando a glória através do resultado dos outros e assumindo todos os louros para sí em detrimento daqueles que realmente apresentam resultados. O gerente possui uma eloquência envolvente e por vários momentos lhe fará duvidar de que esteja agindo de má fé. Atua intimamente ligado às esferas superiores de gerência, apresentando idéias roubadas de terceiros e atribuindo a si mesmo a "capacidade" e "liderança" para alcançar resultados. Tem vida curta nesta posição pois facilmente arrumará inimigos, e é por isso que está sempre disposto a novos desafios, novos projetos. É comum também que este gerente não assuma responsabilidade quando erros ocorrem.

O Gerente Control Freak


Este é um padrão de trabalho para profissionais que não confiam nas pessoas com quem trabalhar para realizar uma tarefa. Estão sempre à frente de todas as decisões, inclusive as mais simples, pois acreditam que os demais não são capazes de fazer nada sem que estejam supervisionados. O comportamento padrão é o autoritarismo. Funcionários podem descrever sentimentos de repulsa ou indiferença e já que não lhes é dado poder de decisão,, erros são comuns devido à falta de zelo pelas próprias atividades.

O Gerente detalhista


Gerentes nesta categoria pensam que todos os detalhes dos resultados apresentados por seus subordinados devem ser escrutinados e dissecados dos pés à cabeça. Sentindo que sua autoridade será menosprezada se as pessoas não apresentarem todos os problemas nos mínimos detalhes (até as coisas mais estúpidas). Entre os comportamentos comuns existe sempre um "checklist sobre como resolver o problema" seguido de pouca preocupação com os resultados.


Sugestões sobre mais anti padrões?

07 junho 2009

Uncle Bob e o dilema do profissionalismo

Acredito que seja um video não apenas para a comunidade Ruby / Rails, mas para a comunidade mundial de desenvolvimento de software...


07 outubro 2008

Por que projetos de Software falham?

Saudações!

Estes últimos tempos estive estudando um pouco, e encontrei um post bastante interessante do Kelly Waters descrevendo alguns motivos, pesquisados por ele, que são as razões para que projetos falhem... resolvi traduzir e disponibilizar... pq não?

Fonte: Most IT projects fail! Will yours?

Problemas em Inicialização de Projetos & Planejamento

  • Foco do Negócio não claro ou não convincente
  • Processo de aprovação Insuficiente ou não existente
  • Definições pobres sobre escopo e objetivos do projeto
  • Tempo ou dinheiro insuficiente para o projeto
  • Projetos com falta de responsabilidades
  • Planejamento insuficiente ou otimista demais
  • Estimativas pobres
  • Prazos irreais; forçar datas finais do projeto em detrimento de melhores estimativas
  • Falta de preocupação e consciência nas fases iniciais do projeto

Problemas Técnicos & de Requisitos

  • Falta de envolvimento do usuário (resultando em problemas de expectativa)
  • Product Owner não determinado, ou não disponível
  • Inchaço de escopo; falta de controle de mudanças adequado
  • Definição de requisitos pobre ou inexistente; requisitos incompletos ou mutáveis
  • Escolhas tecnológicas erradas ou inapropriadas
  • Falta de familiaridades com tecnologias; falta de habilidades técnicas necessárias
  • Problemas de integração durante a implantação
  • Testes pobres ou insuficientes antes do nascimento
  • Falta de Quality Assurance para entregas chave
  • Fase de correção de bugs imprevisível ou longa demais no final do projeto

Problemas na Gestão de Stakeholders & Equipes

  • Atenção não suficiente aos stakeholders e suas necessidades; falha ao gerenciar expectativas
  • Falta de suporte de um gestor/executivo sênior; patrocinadores do projeto não comprometidos completamente; falta de compreensão do projeto e sem envolvimento ativo
  • Visibilidade do estatus projeto inadequada
  • Adoção da negação em detrimento de duras verdades
  • Pessoas não dedicadas ao projeto; tentativa de balancear prioridades de mais
  • Equipe do projeto com pouca experiência e sem habilidades neessárias
  • Falta de autoridade da equipe ou falta de capacidade de tomar decisões
  • Pouca colaboração, comunicação e trabalho em equipe

Problemas em Gestão de Projetos

  • Nenhuma boa prática na gerencia de projetos
  • Gerenciamento contínuo fraco; gerentes de projetos treinados inadequadamente ou sem experiência
  • Relatórios e acompanhamento inadequados; sem revisar progresso continuamente ou com a atenção necessária
  • Gestão de prazos e custos inadequadas
  • Falta de liderança e/ou habilidades de comunicação



É triste, mas estes itens acima são confirmados pelo Gatner e Standish Group...


E o seu projeto? Já Falhou? Está fadado ao fracasso?? Descreva seu martírio nos comentários... =)

15 abril 2008

Lean: Como maximizar o feedback?

Maximizar Feedback


Adaptado do livro: Lean Software Development: An Agile toolkit.

Passo a passo para ampliar o feedback



1) Escolha o seu problema mais difícil e encontre uma maneira de ampliar o feedback

a. Amplie o feedback das equipes de desenvolvimento à gerencia perguntando a cada equipe ao término de uma interação as seguintes perguntas:

  • A equipe possuiu todos os conhecimentos necessários para esta iteração?

  • Algum recurso necessário faltou?

  • Como podemos modificar nosso trabalho de forma a tornar o desenvolvimento mais rápido e melhor?

  • O que está atrapalhando o caminho?


b. Aumente o feedback dos clientes e usuários para a equipe de desenvolvimento mantendo um grupo com foco no usuário final. Encontre as respostas para as perguntas:

  • O quão bem esta sessão do software resolverá o problema para o qual ela foi criada?

  • Como pode ser melhorado?

  • Como esta última iteração afetou a sua percepção sobre as suas necessidades?

  • O que você precisa para colocar este último incremento de software em produção?


c. Ampliar o feedback do produto para a equipe de desenvolvimento pode ser feito através de:

  • Ter os desenvolvedores escrevendo e executando testes de código à medida que o código de produção é escrito

  • Ter analistas, clientes ou testadores executando e criando testes de aceitação à medida que os desenvolvedores trabalham no código. Permita que os desenvolvedores auxiliem nestes testes com o intúito de automatizar tudo.

  • Permita que desenvolvedores tenham acesso aos testes de usabilidade de cada uma das funcionalidades próximas de serem finalizadas, para que eles possam verificar como os usuários reagem à implementação


d. Amplie o feedback dentro da própria equipe através de:

  • Torne os testadores em parte integrante da equipe

  • Incorpore todos os envolvidos no projeto desde as primeiras fases

  • Estabeleça a política de que a equipe de desenvolvimento deverá manter o produto



2) Inicie iterações com sessões de negociação entre clientes e desenvolvedores. Clientes devem indicar quais funcionalidades possuem a prioridade máxima, e os desenvolvedores devem selecionar e comprometerem-se somente com aquelas que eles acreditam realmente serem capazes de completar no período fechado da iteração

3) Insira os gráficos de progresso para seu projeto em uma área comum para que a equipe(s) possa visualizar sem problemas o que precisa ser feito e que todos possam ver para onde o projeto está convergindo

4) Se você dividir um projeto através de múltiplas equipes, faça um esforço a mais para dividir a arquitetura de maneira a permitir que elas possam trabalhar o mais independentemente possível. Encontre maneira dos times sincronizarem o próprio trabalho o maior número de vezes possível (build contínuo do sistema todo)

5) Equipes independentes devem considerar também a interface do usuário de forma independente

6) Encontre o seu problema mais complexo e faça sua equipe conseguir três soluções viáveis para resolvê-lo. Ao invés de escolher apenas uma das soluções, permita à equipe experimentar todas as três opções ao mesmo tempo.

[]s

06 março 2008

Business Value - você sabe o que é?

O que é valor de negócio para sua empresa?

Para alguns:
  • Os números que vão para os cartões de história
  • É só um valor que alguém estimou para conseguir aprovar este projeto
  • É coisa que só o povo do comercial consegue entender. E eles ficam competindo para ver quem tem o maior

Entretanto, buscando sobre o assunto, verificamos que é um significado carregado de conteúdo. Quando falo em valor de negócio, estou tratando de:

  • Uma definição do que "valor" significa; tenha à mão uma ou mais definições de VN para seu projeto
  • Reconhecimento de que comunicação e motivação são chaves
  • É um tema completamente pragmático e simples, e ao mesmo tempo difícil de obter um compreensão total
  • Pode ser definido como a capacidade de responder à mudança e aprender através da experiência


Por que nos importamos com Business Value?

"É necessário ser extremamente cuidadoso quando você não sabe para onde está indo, porque você pode não chegar até lá" Yogi Berra

Nossa ciência, infelizmente, não lida com com axiomas matemáticos e verdades incontestáveis (como as leis da física). Tudo o que produzimos está diretamente ligado a fatores motivacionais e a satisfação das pessoas que influenciamos. Criar um definição real "do que" é valor para sua organização tenta focar suas equipes em produzir esforço no mínimo possível para alcançar tal definição.

Nunca cessará o ciclo de mudanças em nossas vidas. Em nossas empresa: clientes mudam, requisitos deixam de existir, o entendimento sobre os requisitos muda e as tecnologias sempre se tornarão ultrapassadas. Assim, valor de negócio deve tornar-se um guia, fornecendo melhores insights para responder às mudanças. Construimos produtos não para atingir sucesso técnico. Os contruimos para entregar valor a outras pessoas, então devemos adaptar nossos modelos a esta mudança.

Tenho visto uma preocupação imensa em se definir processos de desenvolvimento sem a preocupação efetiva de onde se quer chegar. "Controlar por controlar", transformando processos na real preocupação dentro do desenvolvimento de produtos.

No meu entendimento, a construção de um produto está completamente alinhada ao alcance de expectativas da empresa e principalmente dos clientes. Sendo assim, é necessário preocupar-se "no quê" produzir, deixando o "como" (processos, ferramentas e definições arbitrárias) ser guiado pro premissas adaptáveis:
  • compromisso com a qualidade
  • feedback contínuo
  • satisfação do cliente
  • ciclos curtos de desenvolvimento
Qualquer processo que tenha em mente estes valores (nesta ordem), poderá evoluir para um nivel de excelência mundial.


Quatro idéias de Kitty Hawk

Em sua teoria, Kitty tenta apresentar o conceito de BV (business value) sobre esta ótica:

Análise de Custo/Benefício: Forneça a maior satisfação possível que o dinheiro de seu cliente pode comprar

Regra do 80/20 de Pareto: Encontre os 20% de esforço que lhe trarão 80% de seus resultados. Meça os 200 requisitos de seu caso de uso através através de sua criticidade. Forneça rapidamente o que for imprescindível. Deixe que a experiência do usuário também guie seu produto. "when in doubt, leave it out".

Criação de conhecimento: Uma equipe pode mais facilmente aprender/descobrir novas coisas do que uma pessoa sozinha. Entenda que o conhecimento se transforma através de ciclos de conversão em tácitos e explicitos. Motive a criação de conhecimento em suas equipes definindo um propósito. Cada vez mais, a criação de conhecimento é o principal fator para a competência.

Métodos de Aprendizado: Pense no ciclo PDCA de Demin (Plan-Do-Study-Act). Tecnologias podem ser copiadas e produtos serem esquecidos pelo mercado. Foque-se na forma com que sua empresa aprende. Aumente a capacidade de sua empresa experimentar e avaliar possbilidades. Uma equipe deve ser capaz de fazer experiências da forma mais rapida,barata e frequente possível.


Abordagem "engenheirística"

Transforme o entendimento e a busca por valor de negócio em sua empresa num "processo":
  • tenha uma definição clara e de alto nível do que é valor de negócio(pode tomar várias dimensões)
  • tenha um definição clara e operacional do que significa valor de negócio para um contexto específica
  • crie um caminho específico para determinar quando uma hipótese é correta, ou de que forma ela não é
  • influencie o comportamento de todos através desta definição (ex: programadores querem alcançar o sucesso através do caminho proposto). Permita ajustes "on-the-fly" por um bem maior
  • encontre um conjunto de praticas que possa ser utilizado no decorrer de um projeto para atingir sua definição de valor de negócio
  • defina uma forma clara de modificar tais práticas, para que melhores práticas possam surgir com o tempo
  • um entendimento comum sobre prazos entre análises, e um questionamento contínuo sobre em que momento as práticas deixaram de ser efetivas, para que possam ser modificadas. (ciclos contínuos de feedback)

Entenda "efetividade" como sendo: mais rápido, mais barato, melhor qualidade, etc. Tente transformar estas definições para aumentar a velocidade de entrega de suas soluções.

[]s

22 janeiro 2008

Transitioning To Agile Process



Yeah! Eles atacam novamente... a edição deste mês do Agile Journal está excepcional! Com o título de Transitioning To Agile Process, a revista traz uma compilação de artigos do tema... tornando-se mais um referência nas leituras obrigatórias...

Um resumo:

Patterns of agile adoption

Mike Cohn descreve dúvidas comuns sobre como prosseguir na adoção do desenvolvimento Ágil: "Começar pequeno" ou seguir o famoso "Arrastão" na empresa? Seguir para práticas técnicas ou conseguir transformar o desenvolvimento em um modelo iterativo?

Entre as vantagens e desvantagens podemos citar:

- O custo de utilizar projetos piloto para testar o movimento Ágil pode ser ótimo para minimizar custos, mas pode não trazer a real visão da aplicabilidade do modelo em um nível macro.
- Um projeto bem sucedido e um equipe satisfeita por ser o empurrão necessário para que novas e vitoriosas iniciativas iniciativas

- Introduzir algumas práticas pode não trazer os resultados esperados, já que todas as práticas são complementares. (nota pessoal: não iniciar refactoring sem testes automatizados)
- É muito mais fácil iniciar no projeto um modelo iterativo de desenvolvimento. Faça o teste: diga para sua equipe: daqui a 4 semanas eu quero uma versão instalável do software...

Mais informações: leia artigo completo

Ainda sobre Patterns in agile, recomendo a leitura do livro: Agile Patterns: A techinal Cluster (leitura obrigatório número 3323)


The Dichotomy of Change

Para mim já é um dos melhores textos do tema... indubitavelmente. Ross Pettit descreve a evolução das fases na adoção Ágil, e resume um processo Ágil para a sua empresa como sendo:

The path of Agile adoption is well trod, but poorly lit. Each organization, each project, presents unique challenges and obstacles. Agile work processes must be specific enough to be understandable, defined enough to be repeatable, malleable enough to change with experience, and flexible enough to accommodate a wide range of operating realities. A sufficient breadth of Agile practices must be brought to bear on a situation or the practices will yield few benefits. The people performing them must master these new practices quickly or the process change will be perceived as providing little value.
(desculpe a falta de tradução, não quis perder o real significado do texto)


Topicos desta edição:
Building an Agile Organization
Patterns of Agile Adoption
The Dichotomy of Change
Moving to Agile: TO DOs for your Pointy Haired Boss
The Challenge of Enterprise Requirements Management: Boosting Business Value with Index Cards
Resolve to Increase Agility
The Shiny New Agile Architect
FEATURED BOOK: The Art of Agile Development by James Shore and Shane Warden

24 novembro 2007

The Enterprise Scrum



Saudações! Eis a minha mais nova aquisição, o novo livro do Ken - The Enterprise Scrum. Seguindo a indicação do próprio Ken Schwaber, na lista scrumDevelopment (sim, ele respondeu um email meu!!! hahahahah que merda).
Os questionamentos que me fizeram comprar o livros estão relacionados à formas de extrapolar a utilização do movimento Ágil, deixando o ambiente de software e TI para uma visão mais ampla e estratégica da empresa. Talvez tenha encontrado uma pequena introdução neste livro...

Estou no início do livro, mas algumas coisas são interessantes:
- Afirmação clara: Scrum não resolverá seus problemas. Pelo contrário, ele os tornará mais explícitos e será difícil não encará-los. Portanto, se você não está pronto para resolver seus problemas, utilizando o scrum, você apenas vai deixá-los mais expostos.
E tenho visto esta a afirmação realmente ocorrer em nossa utilização do Scrum na Audaces. Conflitos sempre ocorrerão. E realmente, este é o maior sinal de que a mudança que propomos com o Desenvolvimento Ágil está acontecendo...
- O livro é mais uma tentativa de vender inúmeros livros e cursos para formação ScrumMasters... como não poderia deixar de ser...


Está sendo interessante a leitura...

[]s

09 novembro 2007

Scrum at Yahoo and Google AdWords.



O vídeo abaixo foi retirado do site AgileSoftwareDevelopment, e conta a história de como Yahoo! e o projeto Google Adwords passaram a utilizar Desenvolvimento Ágil apresentada por Jeff Sutherland (pai da criança)...

Uma aula excepcional... ASSISTAM!

Resumão PIV (pra inglês ver):

Yahoo
1. Yahoo já foi uma empresa "organica". Existiam vários pequenos grupos com a capacidade de realizar qualquer coisa com o mínimo de disciplina.
2. Houve a necessidade melhorar a estrutura da empresa. Assim, os consultores entregaram 300 páginas de um processo Pesado e complexo. Todos odiaram a iniciativa, e não trouxe reais benefícios para aempresa
3. Viram scrum como a possibilidade de retornar às origens, enquanto ainda teriam alguma estrutura. Atualmente o desenvolvimento de produtos é realizado utilizando Scrum (Mais informações: aqui )


Google AdWords
1. Em 2001 existiam inúmeros gerentes no Google. Eles costumavam a dizer a pessoas inteligentes o que elas deveriam ou não fazer. Então a empresa livrou-se deles.
2. Então tornou-se comum inúmeras equipes orgânicas de três pessoas com liderança rotativa. Em torno de 160 equipes se reportavam para uma única pessoa - sem problemas uma vez que os times não necessitavam instruções. Ainda assim aplicações b2b precisavam de muitos retornos do cliente.
3. Scrum tornou-se uma opção bastante promissora. Sua hierarquia é bastante próxima do que eles já possuiam, mas ainda assim possui alguma estrutura e permite facilmente a apresentação de prioridades de forma mais clara.

Com vocês, o vídeo:

Fonte

05 novembro 2007

Em busca de uma Empresa Ágil


Success, particularly today, is a function of a team's ability to react to change, not its ability to plan and follow that plan. How teams are measured affects their adaptiveness. Adaptation—rather than adherence—brings success.

Fonte:The Measure Of A Management System


Tenho pensado muito sobre métricas e formas de mensurar progresso em equipes ágeis, e a forma que estas informações se alinham às informações necessárias para a tomada de decisão dos diretores de uma empresa Ágil.
Num post anterior, trabalhei a questão mundana deste tema, isto é, apresentando ferramentas de medição condizentes com o Processo Ágil. Danilo Sato, em sua teste de mestrado, apresenta de forma detalhada outras ferramentas. Vale a pena a leitura!

Mas gostaria de ir além...

A revista Better Software Magazine, apresenta um artigo mostrando de que maneira métricas de progresso devem ser aplicadas para garantir a real avaliação de desempenho para equipe de Desenvolvimento Ágil. Leia o artigo completo.


Fonte: Wikipedia


Dentro Balanced Score Card(BSC), existem 4 perspectivas bem definidas: Financeira, Cliente, Processos Internos e Aprendizado/Crescimento. A figura apresentada inlustra bem a forma como tais perspectivas se comunicam, numa relação de causa-efeito. Empresas privadas que visam o lucro que somos, é natural imaginar que a perspectiva financeira venha à frente de decisões estratégicas. Gostaria de tratar sobre a perspectiva do cliente.

Cliente
Medidas claras focadas a segmentos específicos devem ser apresentadas a toda a organização. Compartilhar a informação em todos os níveis da empresa, e garantir que indicadores de progresso estejam disponíveis é uma forma bastante clara de alinhamento entre decisões estratégicas e iniciativas.
O Feedback contínuo dos representantes destes segmentos é uma maneira de garantir alinhamento e progresso. Como nos Princípios do Desenvolvimento Ágil, software em funcionamento é a primeira medida de progresso. E sendo assim, transformar a satisfação do cliente em um indicador é um grande passo.
Na lista xpRio, Clavius Tales, da Fortes Informática, apresentou os resultados obtidos utilizando XP. Uma ótima medida de progresso utilizada pela equipe do Clavius foi "satisfação do cliente". Os resultados:


Alguns números que podem não dizer muito, mas que me impressionaram: amanhã finalizamos, com vinte dias de adiantamento, um projeto daqui da empresa, que tinha originalmente um prazo previsto de quatro meses e meio. A equipe era formada por onze colaboradores. Monitoramos a satisfação do cliente através de uma nota semanal entre 0 e 10. Na última semana, a nota ficou em 9,88 - chegou a estar em 7,8. Também monitoramos com uma nota entre 0 e 10, só que diariamente, o moral da equipe. A nota atual está em 9,8 - chegou a estar em 7,9. Estamos trabalhando com um nível de 75% de todas as práticas de XP (versão 2).

Um abraço.

Clavius Tales


Para tomar proveito da ligação entre cliente e desenvolvimento, gerando informações válidas para a empresa, é necessário uma intervenção branda através de medidas de desempenho que alimentarão indicadores do BSC.
Uma forma de se fazer isto é através da Análise de Valor Agregado (do inglês EVA), que pode ser adaptado para auxiliar analistas de negócio e diretores a garantir o ROI mais adequado na utilização do Desenvolvimento Ágil.
Nota Importante:Não estou tratando o ponto de vista do patrocinador de um projeto (o cliente), mas da empresa que utiliza o desenvolvimento Ágil como forma de garantir Qualidade, flexibilidade e menor custo.
Definição: "Earned Value Management (EVM) is a method for integrating scope, schedule and resources, and measuring project performance.” Fonte: APM with Scrum
Um artigo muito interessante (e complexo) que trata desta informação foi publicado pelas empresas SolutionIQ e InfoTech: acesse o artigo.
No documento, os autores concluem que a adaptação da técnica de EVM para o Scrum pode trazer resultados semelhantes à análise do Burndown, e deve ser utilizado em conjunto com as ferramentas do scrum, gerando informações importantes sobre releases e adequação orçamental.

Trabalhar com valor de negócio e agregação de valor ao cliente é uma postura bastante diferente do que estamos acostumados em nossos projetos. Para a maior parte das empresas, um projeto no prazo e debtri di orçamento é mais importante do que garantir que os clientes estejam realmente satisfeitos com as soluções promovidas. Isto é preciso ser alterado para que se possa atingir maiores benefícios relacionados ao Desenvolvimento Ágil.

Measurement systems are crucial to creating an agile enterprise, particularly for those projects that implement new products, services, or processes that will create your future company. If you are creating the future, an extra month or a few extra dollars will be insignificant. If you don't deliver value or you don't deliver innovation, that will be significant. We cannot continue to ask teams to be innovative, flexible, and adapt to changing competitive conditions and then measure their performance by forcing them into narrow expectation alleys. We have to be as innovative with our measurement systems as we are with our methodologies.

27 setembro 2007

Tem certeza que não serve para sua empresa?



Saudações!

Bem, o Clavius Teles, da Fortes Informática, indicou na lista xpRio um documento muito interessante falando sobre a aplicação de práticas Ágeis no Google. Sim, como a própria apresentação diz: "Práticas Ágeis em Projetos Reais"...

Engraçado o título da apresentação, talvez para que as pessoas passem a dar algum crédito para o que está acontecendo no mundo, e como nós estamos avançando na utilização de modelos de desenvolvimentos mais próximos da realidades das empresas. (Desenvolvimento Ágil está mudando o mundo!)

Pontos Importantes sobre a apresentação:

- Existe uma influência muito forte de prática de XP na forma de trabalho das equipes. Praticamente todas as práticas são listadas na apresentação.

- Preocupação em manter o desenvolvimento sobre o olho atento da qualidade, através de métricas e Feedback (Métricas em Desenvolvimento Ágil)

- Desenvolvimento Ágil escalável com certeza!
Num dos exemplos que me chamou a atenção, em que a equipe deveria trabalhar com código legado, vê-se a preocupação com testabilidade, com ciclos de refactoring para possibilitar a criação de testes e ainda a utilização de TDD para qualquer código novo que fosse inserido...

- "Plans are nothing; planning is everything" - Dwight D. Eisenhower

Lembre-se disso:

We do Agile at Google in response to real need, to provide real results, not because someone thought it would be a cool thing to do.


Veja a apresentação na íntegra


Outro exemplo interessante: Yahoo!

Results From Scrum
The benefits of Scrum reported by teams come in various aspects of their experience. At Yahoo!, we have migrated nearly 90 projects to Scrum in the last 30 months, totaling almost 900 people, and the list of teams using it is quickly growing. These projects have ranged from consumer-facing, design-heavy websites like Yahoo! Photos, to the mission-critical back-end infrastructure of services like Yahoo! Mail, which serves hundreds of millions of customers; they range from entirely new products like Yahoo! Podcasts, which used Scrum from concept through launch (and won a Webby Award for best product in its category that year), to more incremental projects, which included work on new features as well as bug fixes and other maintenance; and we’ve used Scrum for distributed projects, where the team is on separate continents. Several times each year we survey everyone at Yahoo! that is using Scrum (including Product Owners, Team Members, ScrumMasters, and the functional managers of those individuals) and ask them to compare Scrum to the approach they were using reviously.


Veja o texto na íntegra


Dúvida: você ainda se acha grande o suficiente para dizer que Desenvolvimento Ágil não serve pra você?


Um abraço

12 setembro 2007

Métricas em Desenvolvimento Ágil



Saudações!
Estive atrás de informações sobre métricas aliadas ao desenvolvimento Ágil, já que é necessário mensurar o desempenho e validar o estado atual de um projeto.
A pesquisa foi muito melhor do que eu imaginava. Além de regras e fórmulas, encontrei um material bastante pertinente a respeito, inclusive uma edição inteira do Agil Journal falando sobre o tema
Farei uma pequena contextualização antes de continuar:

Deviado ao custo elevado em se manter um departamento de TI (profissionais caros e equipamentos mais caros), são necessários métodos de mensurar o desempenho e garantir que o dinheiro investido não está indo para o ralo. Infelizmente à medida que nos aprofundamos no assunto, seguindo modelos tradicionais de desenvolvimento e desempenho, verificamos que falta clareza na utilização de ferramentas de mensuração, e que estamos a todo momento medindo aquilo que não é importante, deixando de lado o que realmente justifica a utilização da TI: a agregação de valor ao negócio. Ao invés disso, o foco das medidas está em atributos de software e quantidade de dinheiro dispendido. Entre essas medidas podemos citar: pontos de função criados, horas trabalhadas, número de linhas de código por desenvolvedor ou ainda orçamento gasto. Aliado à falta de estrutura para receber tais dados esse relatórios fazem que os itens tenham seu valor superestimado, criando uma visão míope do projeto.

Medidas como linhas de código por desenvolvedor ou horas trabalhadas sempre levam a problemas muito maiores para o projeto. Um programador, quando cobrado em linhas de código, evitará qualquer tipo de reutilização ou refactoring que aumente a qualidade do código para que possa parecer produtivo. Ou ainda ele poderá degradar-se completamente ao trabalhar a mais do que o necessário, criando dificuldades de relacionamento e de participação no projeto (lembrem da prática: Semana de 40 horas). Perceba a complexidade que é criar e fomentar tais medidas.

Tradicionalmente atribuimos uma medida de produtividade aos indivíduos do projeto. É pior ainda! Uma equipe deve possuir uma identidade única, que é projetada ao mundo externo como reflexo de seu comprometimento com o projeto, e não como uma série de indivíduos que trabalham por si em detrimento do grupo. Pois é isso que acontece ao medir produtividade individual das pessoas da equipe. Uma equipe deve competir para ser a melhor dentro de toda a organização. Não acredito que gerentes queiram uma equipe que disputa para ver quem é o melhor dentro dela mesma.
Mike Griffths apresenta sua visão sobre isso de forma bastante interessante em seu artigo. Baseado no Efeito Hawthorne, que demonstrou a mudança de produtividade de trabalhadores através do simples fato deles terem conhecimento da medição de produtividade, Mike apresenta a idéia de que uma medição efetiva não deve em nenhum momento atrapalhar a qualidade do projeto (medir linhas de código não é o caso), e deve estar direcionado a elementos chave para o desenvolvimento. Ele cita também um modelo de seleção de métricas definido por Donald Reinertsen:
Primeiro, deve ser simples, métricas ideais são geradas automaticamente no sentido de que não é necessário esforço extra para serem produzidas. Segundo, elas deve ser relevantes. Isto é, o controle deve ser feito pelas mesmas pessoas que estão sendo medidas. Psicólogos já descobriram que quando as pessoas acreditam que podem controlar alguma coisa, elas estarão mais motivadas para controlá-la. Mensurar uma equipe por algo que ela não tem controle apenas causará estresse, insatisfação e alienação. Terceiro, deve ser focado em indicadores de condução. Meça olhando para o futuro, e utilizando tais dados para relatar o passado. É mais fácil medir o tamando de uma fila de testes do que é medir o tempo de processamento dos testes individuais pelo fato de que o tamanho da fila é um indicador de condução para futuros atrasos no processamento do teste.


Modelos ágeis em sua concepção já promovem um jogo completo de métricas que podem ser coletadas de forma trasparente. Testes unitários, análise da qualidade de código e outras medidas técnicas podem ser automatizadas no processo de Integração Contínua. A unidade comum de trabalho - o história - é o fundamento para medidas de gerenciamento de projetos e qualidade de alinhamento de negócio. É importante lembrar que todo o ferramental existe para dar suporte a isso, e que se deve encarar este modelo de métricas com uma visão global.

Ross Pettit, em seu artigo, propõe a seguinte categorização:

  • Excelência em desenvolvimento: Consolidando objetivos para medição de código. Não deve ser analizado em separado, pois causará distorções graves.

  • Qualidade: medidas de defeitos que possam escapar ao desenvolvimento bem como o alinhamento entre desenvolvimento e especificações funcionais.

  • Sensibilidade ao negócio: para os modelos ágeis, requisitos são assumidos como user stories, tornando-se a real expressão do valor de negócio. Podem ser medidas como o grau de valor objetivado e o grau entregue.



Exemplos reais de métricas e relatórios

CFD - Cumulative Flow Diagrams
Bastante Interessante! Ele seria o complementar ao BurnDown Chart do Scrum, trazendo a relação de requisitos completos, requisitos restantes e requisitos em desenvolvimento.

No exemplo acima, o progresso é indicado pela completude da faixa verde no decorrer do projeto. Importante notar a mudança de proporção relacionada à faixa superior, indicando aumento de user stories no decorrer do projeto. Esta mudança pode indicar um problema relacionado à comunicação entre produto e desenvolvedores.

Parking-Lot Chart
Ouvi falar a primeira vez desse gráfico com Mike Cohn no livro Agile Estimating and Planning, e achei extremamente interessante! A ideia é utilizar agrupadores para reunir requisitos com o mesmo domínio e montar um grafico contendo Dominio, Numero de historias em cada dominio, numero de pontos de historia e a completude. A coisa fica mais ou menos assim:


Retirado do site Feature Driver Development

Pode-se ter uma visão bastante real do estado atual do projeto.

Ambiente Informativo
Apresentado na xpRio, na discussão a respeito de um Ambiente Informativo, Alisson Vale mostrou um modelo muito claro para trabalhar com a equipe:

Acredito que a imagem seja suficientemente auto explicativa.

RTF: Running, Tested Features
Representa a quantidade de requistos estão passando em todos os testes de aceitação. É facilmente gerado utilizando ferramentas automatizadas de teste e Teste de aceitação. Idealmente deve parecer com a imagem abaixo:

Também conhecido como Burn-Up chart. Qualquer anomalia no comportamente desta imagem deve ser encarada como um problema, já que, teoricamente, os requisitos implementados devem passar em todos os testes sempre.
Uma ótima referência para este tipo de teste pode ser encontrado aqui.


Outras medidas

Satisfação do Cliente: Determinada nos encontros entre de definição das iterações, podendo ser feita com um questionário simples de satisfação e representada através de imagens/cores. Medida interessante de ser trabalhada, pois deixa a equipe com o real estado de aceitação que o cliente se encontra.

Code coverage (quantidade de código coberto por testes)

Builds feitos com sucesso (por sprint, por semana, por dia)

Builds não realizados (por sprint, por semana, por dia)




É isso senhores... espero que tenha sido proveitoso.