Pesquisar este blog

sexta-feira, 25 de junho de 2010

Um produto por semana


Para atender a demanda de um cliente decidimos aplicar uma técnica de criação rápida de um produto. Ele precisava de uma ferramenta de otimização de feeds e widgets, permitindo encontrar novos parceiros – indo um passo a mais de distância que o Urchin ou Analytics.
Duas semanas depois, o Probe estava no ar atendendo as requisições internas e gerando estatísticas importantes sobre parceiros de qualquer empresa. Mas o que permitiu entregar um produto tão rápido?
Fugindo do brainstorm
A idéia do produto já havia sido discutida internamente na Caelum entre diversas pessoas, o que amadurece a mesma, permitindo cortar idéias não triviais que seriam danosas a uma primeira entrega. Esse período não foi um brainstorm onde determinadas pessoas sentam numa mesa e discutem ao máximo determinado assunto, tentando chegar na visão ótima do que seria seu produto. Pelo contrário, isso não seria nada ágil.
Não existe e consequentemente é impossível alcançar algo perfeito, adaptamos o que temos para chegar o mais próximo do idealizado.
Discutir no dia a dia a idéia com diversas mentes que entendem um pouco ou muito do assunto amadurece aos poucos a visão que temos do produto.
A interface
Por mais que alguns projetos com os quais os usuários interagem possam ser tocados sem wireframe, para evitar dúvidas pontuais de CSS, usabilidade etc, utilizamos um design pronto (simples, intuitivo e direto), economizando tempo de pesquisa e encaixe pois as lógicas já eram criadas no design final.
Fazer o mínimo possível
Com o design em mãos e uma visão razoável do que queremos, escolhemos as funcionalidades mínimas para ter um produto que entregue algo que os produtos similares (Feedburner, Analytics etc) ainda não fazem. Essas funcionalidades, um subconjunto de histórias, foi definido como o objetivo ideal de entrega: o que deixaria o produto um passo a frente dos concorrentes.
Além disso, o PO possuia uma data de entrega, quando o sistema deveria estar no ar, que só ele conhecia. E aí entra a questão: se a data e o escopo estão fixos, perderemos qualidade.
Excluindo funcionalidades
Para fugir da perda de qualidade, o escopo era ideal, mas não fixo. Se fosse possível entregar tudo o que o PO desejava, ótimo, se não, ele deve estar pronto para lidar com o que foi entregue. Durante essa fase, o PO é capaz de rejulgar o escopo.
Após poucos dias, algumas funcionalidades foram cortadas, pois ficou claro que a ferramenta já entregaria valor suficiente com menos do que originalmente pensado para o primeiro release.
Excluindo funcionalidades
Mais alguns dias e novamente outras funcionalidades se apresentaram desnecessárias, junto com a maior importância na data de entrega do que no escopo a ser entregue. Com isso, menos funcionalidades (menos valor) seriam feitas, mas teríamos um produto que retorna valor em breve.
Priorizando o backlog
Priorizar o backlog adequadamente foi outra ação fundamental para entregar o máximo de valor possível no produto desenvolvido.
Excluindo funcionalidades
A equipe não possui um comprometimento com um escopo em uma data específica, portanto é responsabilidade do PO escolher o que é melhor ser entregue nesse período, isto é, priorizar corretamente.
Foram mais de duas vezes durante o período de desenvolvimento que cortamos funcionalidades. Em todas elas ganhamos tempo pois entregaríamos algo usável antes do planejado.
Equipe mínima
Em um início de produto tão rápido, é necessário manter uma equipe pequena pois qualquer burocratização do dia a dia de desenvolvimento levaria tempo demasiado para encaixar-se nas poucas horas. No nosso caso, existiam dois desenvolvedores e sentimos que em um grupo de até três, talvez quatro, seria possível fazer um trabalho similar.
Qualidade
Apesar de usar as práticas mais educadas possíveis, houve uma queda na qualidade, algo que o PO teve que pesar: após as 64 horas de desenvolvimento (2 pessoas, 4 dias úteis), tivemos mais 60 horas para investir somente em testes e refatorações.
A partir daqui, o desenvolvimento deve ser feito seguindo todas as práticas que acreditamos, sem margem para entregas rápidas como essa primeira pois a complexidade desse trabalho aumenta muito.
Pareamento e isolamento
A equipe se manteve razoavelmente distante de outras equipes de desenvolvimento e combinou pareamento com programação não pareada. Houve um equilíbrio de forças, misturando a propriedade coletiva do código com a produtividade que foi necessária. Novamente, após essa primeira entrega, abrir mão do pareamento se torna inviável.
Cliente ao lado
A qualquer instante os desenvolvedores tinham acesso ao PO e o cliente, tomando alguns cuidados. Esse é um ponto a ser defendido a todo custo se a entrega de uma versão inicial seguirá esse padrão. A qualquer instante o cliente poderá remover histórias desnecessárias ou solucionar problemas.
Na continuidade do projeto, isso já se torna diferente, uma vez que não esperamos re-priorizações dentro de sprint ou um cliente 100% liberado para os desenvolvedores.
Outros
Existem daily meetings, feedback rápido etc, como as práticas ágeis defendem.
A entrega
Após ter entrado em produção notamos que o tempo todo de desenvolvimento, o foco estava voltando na entrega de algo utilizável, algo com valor para o cliente, que no dia seguinte já poderia colocar em produção.
Deixamos um front end aberto da aplicação para quem desejar visualizá-lo, apesar do back end envolver funcionalidades ligadas com REST, feeds, widgets etc que não estão visíveis no mesmo.
Resumindo
O primeiro release de um produto pode ser feito com práticas ágeis que fujam um pouco da qualidade máxima que tentamos atingir, viabilizando uma entrega rápida – mas não necessariamente ágil a todo instante – e valiosa.
Mas nada disso serve como desculpa para manter o desenvolvimento do produto dessa maneira posteriormente: a preocupação com a qualidade deve voltar ao máximo e a partir desse instante um método de desenvolvimento mais formal (como Scrum, Lean etc) deve ser seguido.

sexta-feira, 18 de junho de 2010

Gestão Ágil de Portfólio de Projetos: A nova fronteira da produtividade estratégica nas organizações

Nós, agilistas e engenheiros de software, estudamos muito acerca de como organizar e gerenciar um projeto, desenvolver o software, testá-lo, implantá-lo, etc. Focamos bastante em como maximizar o retorno e o valor dos requisitos e fuincionalidades geradas em um projeto de software. Mas será que estamos perguntando se o projeto em si gera valor para a organização? E mais que isso: será que esse projeto em particular gera mais valor que um outro projeto, que pode estar sofrendo problemas por falta de recursos?

A próxima fronteira para aumentarmos a otimização de valor para as organizações é subir um degrau acima: tratar sobre a gestão ágil de portfólio de projetos e sua ligação com a estratégia da empresa.

Alguns números muito interessantes (e impressionantes) ajudam a mostrar a realidade do mercado de TI:

- Gastos de TI podem representar até 70% dos investimentos de capital em algumas companhias fortemente dependentes de TI
- 84% das organizações não montam um business case profundo e realista para seus projetos de TI
- 89% das organizações estão voando às escuras, com poucas ou nenhuma métrica financeira relevante e cruzada com aspectos estratégicos
- 83% das organizacões não conseguem ajustar seus orçamentos com as necessidades de negócio em períodos menores que um ano
- 40% dos projetos de software entregues provaram-se não econômicos e não geraram um retorno positivo sobre o investimento. Resumindo: pagaram mais para desenvolver o software que receberam por ele.
- Em torno de 23% dos projetos de software são cancelados sem entregar valor nenhum.
- Segundo Maizlish e Handler, em média apenas 1 dólar de cada 14 dólares gastos pelo orçamento de TI conseguem ser correlacionados com benefícios claros de negócio.
- De acordo com Tockey, 54% de todos os projetos de software são contraprodutivos do ponto de vista financeiro e econômico. Isso significa que em mais da metade do tempo, organizações que pagaram para desenvolver software estariam melhor financeiramente sem eles! 

Esses números impressionantes mostram que muitas organizações estão sofrendo uma hemorragia geral em seus gastos de TI. Muito disso se deve a:

- Vários projetos "pessoais" - isto é, realizados porque são favoritos pessoais de alguém e não porque foram analisados e aceitos como importantes dentro de um portfólio
- Relutância em matar projetos iniciados, mas percebidos posteriormente como de valor negativo ou baixo para os acionistas
- Muitos projetos ativos e um backlog gigantesco de projetos
- Miopia e foco na tecnologia pela tecnologia dentro dos departamentos de TI
- Critérios inexistentes, inconsistentes e incompletos para avaliar investimentos em TI
- Falha em estimar o Total Cost of Ownership, entre outras variáveis de custos
- Governança inadequada

Outro dado fundamental, analisado e estudado por Preston Smith no capítulo 11 (Preventing Overloads) do livro "Developing Products in half the time": sobrecarregar o portfólio de projetos dilui diretamente o esforço e cria filas, o que aumenta os prazos e os custos dos projetos. Isso significa que a falta de controle do portfólio de projetos é uma das causas-raiz do estouro de custos e prazos em projetos.

Esses dados e números reforçam um aspecto que muitas vezes negligenciamos: a disciplina da gestão de portfólio de projetos (preferencialmente ágil) é tão ou mais essencial para o sucesso dos projetos de uma organização do que apenas o uso de um processo ágil de desenvolvimento de software focado em melhorar a produtividade e qualidade dentro de um projeto.

Devido à relevância e amplitude do assunto project portfolio management tratarei sobre ele em vários outros artigos nesse blog. Aproveito para conceituar já aqui os objetivos da gestão de portfólio de projetos, alguns temas que apóiam essa disciplina e listar alguns livros iniciais para direcionar aqueles que perceberam a necessidade dessa disciplina em suas organizações.

A gestão de portfólio de projetos é um processo dinâmico de decisão em que a lista de projetos ativos e novos é constantemente revisada. Novos projetos são avaliados, selecionados e priorizados a partir de técnicas, métodos e critérios definidos pela organização. Projetos existentes podem ser acelerados, eliminados ou despriorizados. Recursos podem ser alocados e realocados pelos projetos.

Podemos resumir que a falta da gestão de portfólio de projetos em médias e grandes organizações significa que: há muitos projetos na organização, uma falta de foco, nenhum ou poucos critérios de seleção (projetos são selecionados na emoção ou por jogos políticos) e nenhum critério estratégico para a seleção de projetos. Esses pontos resultam em: maiores taxas de falhas em projetos e prazos mais longos de término de projetos, poucos produtos e softwares vencedores do ponto de vista de valor e falta de alinhamento estratégico nos projetos (o que gera efeito metralhadora: atira-se para todos os lados para ver se alguns dos projetos acertam!).

Algumas das ferramentas que serão tratadas nessa série de artigos:
- Ferramentas financeiras para avaliação de projetos de investimento e orçamentação de capital (capital budgeting)
- Pensamento sistêmico (Systems Thinking)
- Pensamento enxuto (Lean Thinlking)
- Ferramentas de pensamento da Teoria das Restrições (Theory of Constraints)
- Teoria das Filas

Relembrando: o gerenciamento pró-ativo do portfólio de projetos de uma organização pode trazer tantos ou até mais benefícios que apenas focar no processo de desenvolvimento e gestão de um único projeto. A gestão ágil de portfólio de projetos, juntamente com a gestão ágil de projetos com práticas técnicas, maximizará ainda mais o valor de cada dólar ou real investido e trará uma maior produtividade nos projetos certos. Isso transformará a TI da organização num centro de lucros e valor e não em um centro de custos e em uma commodity.

Por que Agile e Lean funcionam? Ou como explicar para seus executivos e líderes a hiperprodutividade que esses tais de agilistas conseguem!

Analisando as pesquisas sobre sucesso de projetos encontramos números interessantes. De acordo com o Chaos Report de 2009, em torno de 30% dos projetos de TI são bem sucedidos. Enquanto isso, surveys sobre Agilidade mostram que em torno de 80% dos projetos Ágeis terminam com sucesso. E mais que isso: empresas como a SalesForce.com obtiveram uma melhoria de quase 400% no valor gerado após a adoção da cultura Ágil, em torno de 70% de redução nos defeitos e 50% de redução no time to market para lançamento de novas versões de seus produtos.

Será mágica? Será Bala de prata? Não. Então como explicar os números impressionantes acima?

Vou tratar um pouco dos 'segredos' do Agile / Lean funcionar tão bem quando ocorre uma mudança de paradigma real dentro da organização.

Os dois pilares do Lean (e que podem ser encontrados também embutidos no Manifesto Ágil) são:
- Respeito pelas pessoas
- Melhoria contínua

Podemos resumir esses dois pontos nessa frase: "A raiz do Lean/Agile é ser um eterno insatisfeito com o status quo. Você tem que se perguntar continuamente: 'Por que estamos fazendo isso?' ". Portanto é possível compreender que o princípio de Eliminar desperdícios do Lean está umbilicalmente relacionado com o pilar positivo da melhoria contínua e da eterna insatisfação com a mesmice.

Mas vocês devem estar se perguntando: Como isso explica a hiperprodutividade Agile? Vamos explicar agora, mas lembre-se de não tirar de sua cabeça os pilares: Respeito pelas pessoas e melhoria contínua com eliminação de desperdícios.

Quando ocorre uma mudança de paradigma para o Lean, as pessoas da organização voltarão seus esforços para eliminar tudo aquilo que não agrega valor na cadeia produtiva. O livro dos Poppendieck levanta uma série de elementos para identificar os geradores de desperdícios na área de desenvolvimento de software. Mas eu vou focar nos dois mais importantes e que geram o maior impacto inicial na produtividade da empresa:

- Projetos desnecessários
- Requisitos desnecessários

A adoção estratégica de Lean deve iniciar pelo esforço de Gestão Ágil de Portfólio de Projetos. Pela elaboração de business cases enxutos e continuamente avaliados para cada projeto da empresa. Conforme descrito por Donald Reinertsen em seu livro Desenvolvendo Produtos na Metade do Tempo: eliminar projetos com baixo retorno vai gerar mais velocidade no time to market dos projetos restantes. Apesar de contra-intuitivo, quando você corta projetos você entrega mais projetos num time to market menor! Esse nível mais estratégico do portfólio de projetos é pouco tratado em processos ágeis como Scrum, XP, OpenUP, etc. Porém é fundamental para a busca da hiperprodutividade.

O próximo nível é o de requisitos desnecessários. É aí em que os processos ágeis possuem práticas e mecanismos orientados para que o desperdício de criar requisitos de pouco valor não ocorra. Aí também entra a necessidade de boas pessoas e bom time. Um bom product owner (desgraçado ganancioso, como meu amigo Yoshima gosta de resumir) é fundamental para que o desperdício (quase uma hemorragia, já que segundo o Chaos Report quase metade dos requisitos não agregam valor maior que o custo para produzí-los) estanque.

Além disso, a filosofia e práticas da Agilidade/Lean focam na auto-organização do time, na responsabilidade conjunta pelos objetivos de negócio do projeto e na produtividade com qualidade e com ritmo sustentável. Todas elas são práticas de administração consagradas e evidenciadas por Peter Drucker para liderar trabalhadores do conhecimento. Nas palavras do próprio Peter Drucker: "Knowledge workers must take responsibility for managing themselves".

No tocante à gestão de projetos também temos efeitos benéficos. O PMBOK já fala sobre o clássico ou quadrante mágico de variáveis do projeto. Ele é composto por escopo, custo, prazo e qualidade. Há também uma lei em relação a esse quadrante: das quatro variáveis, você só pode fixar três... uma irá variar.

Num projeto tradicional cascata e com preço fixo (ainda no Brasil esse é o modelo mais usado, portanto o chamo de tradicional por causa disso) é fixado o custo, o prazo e o escopo. Acho que é fácil entender agora porque a maioria dos projetos de TI falha do ponto de vista dos stakeholders: o que varia é a qualidade... e ela varia lá pro fundo do buraco!

Uma empresa Ági/Lean, entendendo que defeitos são o terceiro grande gerador de desperdícios, muda isso. Ela fixa o prazo, o custo e a qualidade(a qualidade é fixada quando usamos as práticas de engenharia Ágil. Sem elas você não será hiperprodutivo) e deixa variar o escopo. Essa mudança fundamental também ajuda a resolver o segundo desperdício: requisitos desnecessários. Quando o prazo e o custo são fixos, o product owner e os stakeholders terão que se esforçar ao máximo para atingir os objetivos de negócio almejados pelo projeto realizando apenas os requisitos importantes e de maior valor agregado, despriorizando ou eliminado requisitos de baixo valor. Veja como é exatamente isso que o cara que paga (sponsor) e outros stakeholders querem: um resultado (produto) de alta qualidade contendo o mínimo necessário de funcionalidades que resolvam seus problemas e necessidades de negócio, e ainda com a facilidade de mudar de idéia no decorrer do projeto.

Algumas pessoas orientadas ainda pelo paradigma preço fixo costumam imediatamente perguntar o seguinte: isso significa que um projeto Ágil entrega menos escopo que um cascata? E respondo: Muito pelo contrário, ele entrega um escopo de maior qualidade e valor agregado para o negócio. E é isso que o faz ser visto como bem sucedido pela organização.

Em resumo: Por que Agile / Lean funciona? Porque o respeito pelas pessoas e a busca da melhoria contínua levam à hiperprodutividade. Mas como essa hiperprodutividade ocorre quando ocorre a mudança de paradigma? Ela ocorre porque eliminam-se desperdícios das mais variadas formas e devido ao foco no resultado com ritmo sustentável. Os principais itens que geram isso no início são:
- Eliminação ou redução de projetos de baixo valor agregado.
- Eliminação ou redução de requisitos de baixo valor agregado.
- Em relação ao quadrante de variáveis do projeto: fixar custo, prazo e qualidade e deixar variar o escopo.

Não é fácil resumir o segredo do sucesso de algo, mas precisamos tentar. Esses segredos é que explicam a executivos e stakeholders porque adotar a filosofia Ágil os levará a outro patamar e também esclarecerá que só o 'processo' Ágil e suas práticas não resolverão o cerne do problema. A organização precisa de um choque cultural para que a hiperprodutividade se torne uma realidade, assim como ocorreu na Salesforce e em outras empresas que precisam do desenvolvimento de software e sistemas para manter seus negócios.


Um breve pensamento para fechar: "O Modelo tradicional cascata é errado e perigoso. Nós temos que superá-lo." - Frederick Brooks, autor do livro 'The Mythical Man-Month', em seu novo livro 'The Design of design'