Em vários projetos para a implementação de sistemas corporativos, me deparei com a tarefa de planejar e controlar tarefas difíceis de prever. Imagine que você precisa executar muitas tarefas semelhantes, e um grande número de pessoas está envolvido nelas, enquanto você não sabe exatamente em que sequência elas serão executadas e quanto tempo elas levarão.
Os diagramas de Gantt, familiares no gerenciamento de projetos, funcionam mal neste caso. Um exemplo típico é o desenvolvimento de extensões para o CIS.
Abaixo, mostrarei qual método usamos em projetos para controlar um grande número de tarefas paralelas com custos administrativos mínimos.
1. Planejamento do trabalho
Cerca de cinco anos atrás, escrevi
um artigo - recomendações aos gerentes de projeto sobre programação. Os princípios foram testados pelo tempo, e eu ainda os adiro.
No entanto, para alguns tipos de tarefas, é praticamente impossível elaborar um cronograma detalhado e consistente. Em uma situação em que muitas tarefas são realizadas em paralelo, e a duração e a complexidade de cada uma só podem ser estimadas com um grande erro.
Um exemplo clássico é o desenvolvimento. Cada desenvolvimento passa por várias etapas, pelo menos - design, codificação, teste. Como regra, várias iterações são necessárias quando a tarefa passa para o estágio anterior. O desenvolvimento passou da codificação para o teste, o desenvolvedor assumiu outra tarefa. O desenvolvimento retornou à codificação, o desenvolvedor conclui a tarefa anterior ou retoma imediatamente a correção dos erros. Dependendo da situação e das prioridades, pode haver uma ordem diferente de trabalho em equipe no pool de tarefas. O processo parece caótico e incontrolável. Apresentar isso na forma de um gráfico de Gantt puro, com o qual os gerentes de projetos estão acostumados a controlar tudo é extremamente trabalhoso e pouco útil, se possível.
Como ser Como controlar o progresso do trabalho? Como entender - a tempo ou não; onde estão os gargalos; Existem recursos suficientes? quem trabalha bem e quem não funciona? Como, no final, reportar à gerência?
Abaixo está uma das opções que me parece ótima e, em algumas condições, a única.
2. Usando um sistema de gerenciamento de trabalho
É importante mencionar imediatamente que, sem usar um sistema de gerenciamento de tarefas que permita que cada um dos participantes receba tarefas, transfira-as para outros participantes e marque sua conclusão, é impossível criar um processo normal.
Na minha prática, usei ferramentas diferentes e publiquei um artigo de revisão sobre esse tópico (consulte o artigo sobre Habr:
ferramentas de gerente de projetos ). Aqui, descreverei com mais detalhes a experiência do uso do JIRA, que configuramos para o gerenciamento de desenvolvimento, usando a funcionalidade padrão, com o uso mínimo de plug-ins adicionais.
O JIRA é o sistema de gerenciamento de tarefas (solicitação) da Atlassian. O custo de uma licença, dependendo do número de usuários, começa em US $ 10 por 10 usuários. Existem opções para instalar por conta própria ou usar o aplicativo na nuvem. Os preços para todas as opções podem ser encontrados
aqui .
O JIRA se distingue por uma interface um pouco antiquada (este é um sistema de idade muito respeitável, que já passou por um longo caminho de desenvolvimento), confiabilidade, um sistema flexível para configurar tudo o que é possível (fluxo de trabalho, tipo de telas, acesso, sistema de notificação), um grande número de plug-ins, pagos e gratuitos, e a possibilidade de desenvolvimento profundo.
Não precisávamos de revisão, configuramos e melhoramos constantemente o fluxo de trabalho (o processo de trabalho é o conjunto e a ordem dos status da tarefa e das transições entre eles), além do acesso de participantes e painéis para controlar o trabalho.
Não me proponho a tarefa de descrever de alguma maneira detalhadamente os recursos e as possibilidades de uso do aplicativo, mas para uma apresentação mais aprofundada é importante ilustrar alguns pontos.
3. Fluxo de trabalho de gerenciamento de tarefas
O fluxo de trabalho reflete o ciclo de vida da tarefa, em nosso exemplo - design, teste de codificação. Na verdade, o processo é muito mais complicado. Dependendo das características da organização do projeto, recrutamento de participantes, requisitos de controle, o número de estágios pode variar bastante.
Por exemplo, um dos projetos tinha o seguinte fluxo de trabalho para rastrear uma tarefa de desenvolvimento.

Muitas etapas de coordenação, distribuição do trabalho, testes em todas as instâncias do sistema ... Mas isso tornou possível confirmar todas as etapas do sistema, rastrear responsabilidades e saber exatamente quem e em que estágio está a tarefa.
4. A complexidade da tarefa
A complexidade da tarefa foi dividida em dois componentes: design e construção. Design é o trabalho de um analista para preparar documentos e testar o desenvolvimento. Construção é o trabalho do desenvolvedor para o desenvolvimento de projeto técnico, codificação e testes próprios antes de passá-los ao analista.
Avaliar a complexidade de uma tarefa antecipadamente sem se aprofundar nos detalhes é bastante difícil, especialmente se houver milhares de tarefas, como foi o caso em nosso caso. Mas é necessário avaliar para entender a quantidade total de trabalho, a quantidade necessária de recursos e determinar o tempo.
Para uma avaliação aproximada, é utilizada uma calculadora que, dependendo do tipo e da complexidade da tarefa, lhe é atribuída a complexidade planejada.
A complexidade da tarefa é determinada dependendo do objeto e da quantidade de trabalho com ele. Por exemplo, para desenvolver um formulário no Oracle eBS, os critérios de complexidade são descritos a seguir:
- Muito simples - formulário de bloco único com 8 ou menos colunas. Não requer lógica funcional especial.
- Simples - forma de bloco único e multi-bloco (2-3 blocos) com 20 ou menos colunas. É necessária lógica funcional simples (edição simples, edição cruzada (edições cruzadas), cálculos simples, totais e subtotais).
- etc.
O tipo de tarefa reflete o conteúdo da tarefa, os detalhes específicos da tecnologia, aplicativo ou parte dela.
Por exemplo:
- Formulários novos ou alteráveis.
- Relatórios novos ou revisados.
- Programas de banco de dados novos ou alteráveis.
- scripts SQL * Loader.
- sinais (alertas).
- personalização.
- etc.

Com base na complexidade e no tipo de desenvolvimento, a calculadora calcula a complexidade planejada.
E embora o erro de estimativa possa ser significativo, em grande número, estatisticamente, esses erros são nivelados e uma ideia geral da quantidade de trabalho pode ser usada para fins de planejamento do projeto.
5. Monitorando o desempenho da tarefa
Portanto, tendo o status da tarefa e sua complexidade, como podemos avaliar o progresso do trabalho?
A opção tradicional é planejar quantas tarefas você precisa executar por um determinado período e acompanhar a conclusão das tarefas periodicamente. O problema é que algumas tarefas levam muito tempo e se estendem por vários períodos de planejamento. E, em alguns períodos, muitas tarefas são concluídas, em outros, poucas. Isso não fornece uma compreensão da situação, especialmente no início e no final do projeto.
Você pode tentar planejar a conclusão de estágios individuais da tarefa. No exemplo acima, usamos 21 estágios, cada um impossível de planejar. Nós escolhemos os principais - conclusão do projeto, conclusão da codificação, conclusão de toda a tarefa. Planejamos uma data para cada tarefa, controlaremos os desvios. Parece viável. No entanto, ao trabalhar em um grande número de tarefas ao mesmo tempo, é bastante difícil ver algo com várias centenas de desvios e tirar as conclusões corretas. Para cada desvio, haverá uma explicação, uma razão objetiva. Algo será feito tarde, algo mais rápido.
Em um dos projetos, tentamos usar o método de controle de data. A data planejada foi definida pelos artistas. O fato foi registrado automaticamente no sistema após a transição do status correspondente.

A figura mostra um histograma de desvios até a data em que o design funcional (DF) está pronto. Valores positivos mostram um avanço, valores negativos indicam um atraso no gráfico. Pode-se observar que o maior número de DP é entregue pelos executores com um atraso de 3,8 a 1,7 dias. Nesse caso, os valores extremos são de 43 dias para 67 dias antes do previsto.
Nessa situação, vemos que, na grande maioria dos casos, os artistas violam os prazos estabelecidos por eles. Vale a pena ponderar sobre esse erro sistemático. No entanto, desde que a equipe esteja motivada e todos trabalhem de boa fé, isso significa apenas que as pessoas não podem indicar o tempo real; os artistas não levam em consideração os fatores complicadores que, na maioria dos casos, surgem durante o trabalho.
Tempo extra é gasto no planejamento, mas na verdade ninguém é responsável por cumprir os prazos. Se você introduzir sanções por violação, elas definirão datas com uma grande margem e a situação de desempenho ficará ainda pior.
Se você deseja controlar algo, pense no que fará com os resultados do controle, que decisões você pode tomar com base nos dados coletados?
6. Método de volume ganho
As tentativas de gerenciar em um nível detalhado centralmente, para um grande número de tarefas com um alto grau de incerteza, estão fadadas ao fracasso.
Você pode dividir essas tarefas em grupos, delegar planejamento detalhado a grupos. Várias pessoas, várias dezenas de tarefas podem ser organizadas em cadeia, respondem rapidamente às mudanças, tomam decisões sobre a mudança de prioridades. Porém, no nível do projeto, outros métodos são necessários.
O método de volume utilizado vem para o resgate. Sem entrar em teoria, descreverei como esse método é implementado para o controle de fatos planejados do desenvolvimento.
Já determinamos o ciclo de vida da tarefa e a complexidade planejada de cada uma delas. Agora, atribuímos a porcentagem de conclusão da tarefa de cada estágio. No nosso caso, porque houve uma divisão da entrada de trabalho no design e na codificação; uma porcentagem é atribuída a cada um dos valores.
A atribuição de interesse é feita por um especialista, avaliando quanto consideramos a tarefa concluída, quanto mais trabalho resta nesta fase.

Após a compilação dessa tabela, para cada tarefa, é possível determinar quantos dias-pessoa do planejado já foi dominado e, assim, medir o progresso de cada tarefa.
Por exemplo, uma tarefa tem uma entrada de mão de obra planejada de 10 horas para o design e 20 horas para o desenvolvimento. Então, na fase de teste, acreditamos que seja 80% concluído em termos do trabalho do analista (outros 20% da mão de obra necessária para concluir o teste) e 50% em termos do trabalho do desenvolvedor. Estamos prontos para admitir que o design funcionou 8 horas e no desenvolvimento - 10 horas. No total, dos 30 dias-homem, 18 já foram concluídos.
Ao mesmo tempo, não levamos em conta que, de fato, outro tempo pode ser gasto. Para os fins declarados, isso não importa.
7. Relatório do Projeto
Tendo uma tabela na qual, para cada tarefa, temos uma complexidade planejada e um volume masterizado, é fácil entender como estão as coisas.
É possível dividir tarefas em direções, componentes e marcos do projeto para poder analisar em um nível mais detalhado e criar tabelas de resumo em todas as seções necessárias.
A imagem geral do projeto se torna conveniente para apresentação no nível de liderança:
Tabela de resumo de upload do JIRA

controle do fato do plano para todo o projeto

Este método nem sempre encontra entendimento. Os dias míticos do homem são menos compreendidos do que peças de desenvolvimento. E ele não cancela o planejamento detalhado no nível do grupo e dos artistas individualmente. No entanto, este é o método mais objetivo de avaliar a situação atual e prever a conclusão do trabalho.