Time de Desenvolvimento

Quais as características do DevTeam?

As abordagens tradicionais de desenvolvimento de software discutem vários tipos de trabalho, como arquiteto, programador, testador, administrador de banco de dados, designer de interface do usuário e assim por diante. O Scrum define o papel de uma equipe de desenvolvimento, que é simplesmente um conjunto diversificado e multifuncional desses tipos de pessoas, responsáveis ​​por projetar, construir e testar o produto desejado. A equipe de desenvolvimento se auto-organiza para determinar a melhor maneira de atingir o objetivo definido pelo proprietário do produto. A equipe de desenvolvimento normalmente tem de cinco a nove pessoas; seus membros devem, coletivamente, possuir todas as habilidades necessárias para produzir um software funcional de boa qualidade. Obviamente, o Scrum pode ser usado em esforços de desenvolvimento que exigem equipes muito maiores. No entanto, em vez de ter uma equipe Scrum com, digamos, 35 pessoas, seria mais provável que houvesse quatro ou mais equipes Scrum, cada uma com uma equipe de desenvolvimento de nove pessoas ou menos.

O Time de Desenvolvimento é um grupo multidisciplinar de pessoas, responsável por realizar o trabalho de desenvolvimento do produto. A partir das prioridades definidas pelo Product Owner, o Time de Desenvolvimento gera, em cada Sprint, um Incremento do Produto pronto, de acordo com a Definição de Pronto, e que significa valor visível para os clientes do projeto. O Time de Desenvolvimento gerencia o seu trabalho de desenvolvimento do produto. É ele que determina tecnicamente como o produto será desenvolvido, planeja esse trabalho e acompanha seu progresso. Para tal, tem propriedade e autoridade sobre suas decisões e, ao mesmo tempo, é responsável e responsabilizado por seus resultados.

O que faz o Time de Desenvolvimento?

Planeja seu trabalho

Na reunião de Sprint Planning, o Time de Desenvolvimento colabora e negocia com o Product Owner para decidirem o que será realizado no decorrer do Sprint que se inicia. Ou seja, a partir das prioridades definidas pelo Product Owner e a partir da capacidade de trabalho do Time de Desenvolvimento, eles decidem juntos quais e quantos itens estarão previstos para serem desenvolvidos nesse Sprint e definir a Meta do Sprint que o Time de Desenvolvimento irá se comprometer a atingir por meio desses itens selecionados.

Para auxiliá-lo com o planejamento, o Time de Desenvolvimento pode estimar o tempo necessário para o desenvolvimento de cada item do Product Backlog, e usar essas estimativas como parâmetros. Uma vez que se meça, a partir das estimativas, o quanto em média o Time de Desenvolvimento entregou nos últimos Sprints, esse valor pode ser utilizado como um balizador de sua capacidade. É importante notar que essas estimativas, quando utilizadas, são sempre feitas pelo Time de Desenvolvimento e nunca pelo Product Owner, ScrumMaster ou qualquer outra pessoa.

O Time de Desenvolvimento também planeja como irá desenvolver esses itens selecionados, o que em geral é feito quebrando-os em tarefas e, possivelmente, estimando-as. O conjunto formado pelos itens selecionados, suas tarefas correspondentes e o status delas é chamado de Sprint Backlog.

Realiza o desenvolvimento do produto

O Time de Desenvolvimento realiza, durante o Sprint, as tarefas necessárias para transformar cada item do Sprint Backlog em uma funcionalidade pronta do produto, de acordo com a Definition of Ready estabelecida em conjunto com o Product Owner. O Time de Desenvolvimento é responsável por garantir a qualidade dos resultados do seu trabalho, o que em geral é uma parte explícita da Definition of Ready.

É importante entender que, embora tenha a intenção de completar todo o trabalho planejado, o objetivo do Time de Desenvolvimento é o de atingir a Meta do Sprint, o que pode ocorrer sem que necessariamente tenham sido realizadas todas as tarefas de todos os itens selecionados do Product Backlog.

O Time de Desenvolvimento possui em seus membros todos os conhecimentos e habilidades necessários para realizar o trabalho de desenvolvimento do produto, evitando assim dependências externas. O Time de Desenvolvimento também possui autonomia para realizar seu trabalho da forma que considerar mais apropriada, planejando-o, acompanhando seu progresso e buscando suas próprias soluções para os problemas que surgirão pelo caminho.

Interage com o Product Owner durante o Sprint

Durante o Sprint, o Time de Desenvolvimento, sempre que necessário, comunica-se com o Product Owner para que ele esclareça ou tome uma decisão rápida sobre algum item do Sprint Backlog. Para tornar essa comunicação possível, o Product Owner coloca-se acessível e disponível no decorrer do Sprint. Caso contrário, o Time de Desenvolvimento pode ter que pausar o desenvolvimento do item enquanto aguarda por essa interação, o que se torna um impedimento. Outra possível consequência é que o Time de Desenvolvimento termine por tomar decisões sobre o produto que não lhe cabem.

O Product Owner ter acesso a uma prévia e poder dar feedback antecipado sobre o trabalho em andamento pode ser saudável e reduzir os riscos de um possível fracasso do Sprint. O Product Owner, no entanto, de forma alguma interfere no planejamento realizado pelo Time de Desenvolvimento sobre como transformar os itens selecionados do Product Backlog em um Incremento do Produto, pois essas decisões não lhe cabem.

Também é saudável o Time de Desenvolvimento e o Product Owner interagirem para refinar e preparar itens no topo do Product Backlog para o Sprint seguinte. Diversos Times de Scrum realizam essa atividade durante a reunião de Sprint Planning, no início do Sprint onde os itens serão desenvolvidos. Outra forma programada e mais efetiva de realizar essa atividade é utilizar sessões de Refinamento do Product Backlog no Sprint anterior e nelas preparar os itens do Product Backlog para a próxima reunião de Sprint Planning, de acordo com uma Definition of Ready.

Identifica e informa os impedimentos ao Scrum Master

Um impedimento é um obstáculo ou barreira que dificulta significativamente ou impede que o trabalho do Time de Desenvolvimento seja realizado, bloqueando um ou mais itens do Sprint Backlog de forma a ameaçar a Meta do Sprint. A resolução de um impedimento não está ao alcance do Time de Desenvolvimento, está fora do seu contexto de trabalho ou tomará muito tempo. Problemas do dia a dia que o próprio Time de Desenvolvimento pode resolver, sem que ameacem a Meta do Sprint, não caracterizam impedimentos.

O Time de Desenvolvimento busca proteger-se e prevenir-se de impedimentos em seu trabalho. Uma vez que o Time de Desenvolvimento encontra um impedimento que não pôde ser evitado, ele é imediatamente informado ao Scrum Master, que então toma as ações necessárias para removê-lo o mais rapidamente possível. Assim, os membros do Time de Desenvolvimento não esperam até a reunião de Daily Scrum seguinte para comunicar impedimentos ao Scrum Master, mas sim o fazem ativamente durante o seu trabalho.

Autogerenciamento

Ao contrário do que se espera de times tradicionais, não há gerentes de projeto dizendo para o Time de Desenvolvimento como ele deve realizar seu trabalho, nem pressionando ou cobrando informações sobre o andamento de cada tarefa. Com o Scrum, o microgerenciamento realizado por um agente externo dá lugar à auto-organização.

O Time de Desenvolvimento, por ser aquele que realiza o trabalho de desenvolvimento, é o mais indicado para planejar e gerenciar esse trabalho. Mas essa auto-organização não deve ser confundida com anarquia ou falta de controle. Ainda que de forma auto-organizada, os membros do Time de Desenvolvimento trabalham seguindo as necessidades dos clientes quanto ao produto a ser gerado, traduzidas pela Meta do Sprint, que negociaram com o Product Owner e com a qual se comprometeram. Além disso, o Time de Desenvolvimento está inserido no contexto de uma organização e, assim, deve estar alinhado com as regras e objetivos dessa organização.

Para facilitar a auto-organização, o Scrum possui pontos-chave onde o andamento do trabalho ou seus resultados são inspecionados, como as reuniões de Daily Scrum, onde o próprio Time de Desenvolvimento inspeciona seu andamento em direção à Meta do Sprint, e de Sprint Review, onde os resultados do trabalho no Sprint são inspecionados pelos clientes e partes interessadas. O Scrum também possui ferramentas que aumentam a visibilidade do andamento do trabalho, como o Sprint Backlog e gráficos que indicam o progresso ou o trabalho restante.

Para que a auto-organização torne-se possível, é imprescindível que o Time de Desenvolvimento realize o trabalho de forma colaborativa, maximizando a comunicação entre seus membros. Essa é uma das grandes justificativas do porquê o Time de Desenvolvimento deve se manter pequeno em número de membros. Além disso, é importante que o Time de Desenvolvimento possua o espaço necessário para criar e desenvolver, dentro de sua capacidade e ritmo, seus próprios meios para atingir as Metas estabelecidas para cada Sprint, tornando-se o principal responsável por essas Metas.

O Time de Desenvolvimento conta ainda com o apoio do Scrum Master para, entre outras coisas, remover impedimentos que atrapalhem seu trabalho, ensiná-lo a usar o Scrum e a se auto-organizar, e facilitar seu acesso aos meios necessários para realizar o seu trabalho.

Foco nas metas

Uma meta no Scrum é uma necessidade ou objetivo de negócio a ser atendido como resultado de um trabalho. Essas metas são estabelecidas pelo Product Owner e ajustadas em conjunto com o Time de Desenvolvimento. Nessa colaboração, o Product Owner sabe que forçar o Time de Desenvolvimento além de sua capacidade de produção não trará os resultados que ele almeja e que um Time de Desenvolvimento comprometido buscará dar o melhor de si para entregar valor para os clientes do projeto.

Cada Sprint possui uma meta, chamada de Meta do Sprint. Além dessas metas, pode-se definir uma Visão do Produto e uma Meta para cada Release ou marco do Roadmap do Produto. Essas metas provêm foco e direção para o trabalho do Time de Desenvolvimento, incentivando a auto-organização. Além disso, elas motivam e oferecem ao Time de Desenvolvimento alguma flexibilidade sobre as entregas correspondentes.

O Time de Desenvolvimento mantém seu foco de trabalho nas metas estabelecidas, e assim dedica o máximo do seu tempo útil ao projeto. Um Time de Desenvolvimento que pratica multitarefa, ou seja, trabalha em mais de um projeto ao mesmo tempo ou em outras atividades além do projeto, encontra grandes desafios para conseguir manter seu foco nessas metas. Para ajudar a manter seu foco na Meta do Sprint, o Time de Desenvolvimento se compromete formalmente com a mesma na reunião de Sprint Planning, tornando-se responsável por atingi-la e sendo responsabilizado por conseguir ou não tal resultado.