A arte de fazer cronogramas

A maioria dos projetos de desenvolvimento que falham tem prazos impossíveis. E, quando estes prazos são definidos por um departamento comercial ávido de ganhar sua comissão, a razão disso é óbvia. Infelizmente, porém, quando esta responsabilidade está com os desenvolvedores o resultado não é muito diferente. Como mudar isso?

A verdade é que, para que um cronograma tenha o menor desvio possível é necessário conhecer:

  • As funcionalidades a serem desenvolvidas a ponto de desmembrá-las em tarefas;
  • O cliente, de modo a saber a qualidade, nível de documentação e detalhes que o mesmo pode solicitar da sua aplicação, bem como a sua disponibilidade;
  • Os recursos que farão parte do projeto a ponto de saber a produtividade deles em cada tipo de tarefa, bem como sua freqüência de ausências (problemas de saúde, pessoais etc.);

Contudo, a maioria das pessoas diria que não é possível conhecer nenhum dos três. E isso explica por que os prazos quase sempre estouram :-) Na maioria dos casos, realmente não é possível ter essas informações no nível desejado para se elaborar um cronograma que funcione, mas a idéia é chegar o mais próximo possível deste cenário para que o desvio não seja tão grande ou ainda contornar cenários comuns.

Por exemplo, digamos que a documentação e/ou nível de informações a respeito das funcionalidades é escassa demais. Provavelmente, a melhor alternativa seria desmembrar o projeto em dois: um projeto de análise de negócio e outro de desenvolvimento, sendo que o segundo terá um cronograma apenas quando o primeiro for encerrado. Se isto não for possível, o ideal é mostrar ao cliente a necessidade de obter o máximo possível de informações para que o cronograma (e o orçamento) proposto sejam reais. Se nada disto for possível, a última alternativa é analisar outros softwares semelhantes ao que o cliente está solicitando, fazer as estimativas baseadas neles e deixar claro que o cronograma proposto baseia-se naqueles produtos. Isto talvez faça com que o cliente se expresse a respeito do que quer exatamente, reduzindo ou aumentando o escopo e, conseqüentemente, o cronograma.

É extremamente importante ter as funcionalidades divididas em tarefas, pois isso permite alocar horas ou poucos dias a cada “fração” da funcionalidade, gerando uma precisão muito maior da duração da funcionalidade como um todo, além de permitir entender melhor o que pode ser paralelizado ou agrupado de forma a otimizar o cronograma. Ao fazer isto, geralmente percebe-se que as coisas “simples” vão demorar muito mais do que se esperava inicialmente.

O conhecimento do cliente é importante para determinar a extensão das tarefas e da documentação, mas especialmente para duas coisas: restrições tecnológicas e disponibilidade do cliente. É essencial, para se ter uma estimativa correta, saber quais tecnologias poderão ser utilizadas, bem como que tipo de padrões de código e documentação o cliente possui. Esta pode ser a diferença entre o projeto de três meses e o que leva um ano porque os desenvolvedores têm que lutar diariamente contra limitações dos frameworks ou da versão do JDK que usam ou porque têm que produzir grandes quantidades de documentos que têm de ser quase que completamente alterados a cada vez que o código é modificado.

Em quase todos os projetos é necessário obter informações adicionais do cliente à medida que o desenvolvimento é feito ou para que as funcionalidades já implementadas sejam validadas. Isto costuma ser um problema, visto que o cliente normalmente não se considera parte da equipe do projeto nem acha que depende dele o cumprimento do cronograma. Metodologias como XP motivam o envolvimento contínuo do cliente, mas nem sempre o cliente concorda com este grau de comprometimento com o projeto. Nestes casos, é necessário especificar no cronograma em que pontos a participação do cliente será necessária, por quantas horas, bem como os “pontos de parada”, i.e., pontos em que se o cliente não estiver disponível o projeto fica parado e deixar claro que é responsabilidade do cliente compensar tais falhas.

Uma vez que as tarefas do projeto estão definidas e que sabe-se como o cliente irá influenciar o projeto, o próximo passo é determinar a alocação de recursos para que seja possível determinar o tempo de cada uma delas. O modo ideal de se fazer isso é explicar aos próprios recursos as tarefas que você pretende alocar para eles, a fim de verificar se são realmente capazes de executá-las, bem como solicitar deles o tempo previsto para cada uma delas.

Obviamente, muitas pessoas não tem a mínima noção de quanto tempo realmente levam para cada tarefa. Por isso, o papel de quem faz o cronograma do projeto é ter dois números para auxiliar nesta etapa: a estimativa de horas ideais e o fator de desvio do recurso. As horas ideais são as horas que um determinado recurso mais confiável em estimativas diz que são necessárias para realizar a tarefa. Normalmente, o recurso confiável acaba sendo a própria pessoa que faz o cronograma ou alguém mais sênior na empresa. O fator de desvio do recurso refere-se a quantas vezes mais tempo aquele recurso leva para executar uma tarefa. Isto se deve a diferença de conhecimento, grau de concentração, capacidade técnica, taxa de “compartilhamento” de recurso (quando a pessoa é utilizada em outros projetos/tarefas ao mesmo tempo que faz o seu projeto) e outras razões. Obviamente, ambos os números só podem ser obtidos com a experiência e/ou medição de projetos anteriores. Comparando a estimativa do recurso com a sua estimativa, chega-se ao número de horas ideais e, multiplicando-se esse valor pelo fator de desvio, obtem-se o total de horas que o recurso deverá gastar.

A explicação acima leva em conta algo que a maioria dos que fazem cronogramas esquecem: recursos são pessoas e pessoas são únicas. Não existe Recurso Jr, Pleno e Sr; existe sim o José, a Maria e o João, que mesmo sendo todos plenos, por exemplo, gastam tempos diferentes para a mesma tarefa e que, para tarefas diferentes, não mantém a mesma taxa de eficácia.

Uma vez que se percebe isto, percebe-se também o quão difícil é fazer cronogramas quando os recursos são desconhecidos. A técnica das horas ideais ainda precisa ser utilizada, mas o fator de desvio terá também de ser estimado. A melhor forma de determinar o fator de desvio a usar é calculá-lo com base na média do fator de desvio dos recursos que serão possivelmente usado para a tarefa e decidir se deve-se considerar o pior caso, i.e., que o recurso com o maior fator de desvio será utilizado.

Ao final de tudo isso, usando-se uma ferramenta como o GanttProject, você provavelmente vai descobrir que o projeto vai levar muito mais tempo do que você pensava inicialmente. Ótimo, isso provavelmente também significa que agora você chegou a um cronograma realista. :-) Por mais que este não seja o cronograma que você vai apresentar ao cliente, por medo de ele não aceitar o tempo – o que eu não concordo -, é com este cronograma que você tem que calcular os custos, pois é o real.

Espero ter ajudado em alguma coisa ou ter deixado vocês completamente desesperados… :-)

30 Responses to “A arte de fazer cronogramas”

  1. Renato de Mauro disse:

    Perfeito, e um detalhe importante, o cronograma geralmente não é feito para o projeto e sim pro cliente aprovar :p

  2. DENYA disse:

    gostaria de saber com fazer um cronograma de atividades escolares e pelo que eu li não entrendi nada, tem com ovcs me mandarem no meu e-mail um exemplo.???

    obrigada

  3. EDSON ALVES disse:

    Gostaria de saber como fazer um cronograma de uma empresa de prestaçao de serviços de portaria e limpeza e conservaçao.

    desde ja agradeço pelo esclarecimento.

    EDSON ALVES

  4. Michael Nascimento Santos disse:

    A menos que eu tenha entendido mal, tanto voce Denya como voce Edson querem montar uma ESCALA, que eh muito diferente de um cronograma.

  5. [...] Engraçado como é ruim ter um post bem colocado no Google para um assunto genérico. Se você pesquisar por como fazer cronogramas, o meu post “A arte de fazer cronogramas” aparece em segundo ou terceiro (varia de vez em quando). E, com isso, como vocês podem ver nos comentários do post, aparecem pessoas querendo saber como montar escalas ou coisa do gênero [...]

  6. Luiz disse:

    Estou estudando criação e gestão de ambientes de internet na Estácio, me parece muito complicado porque meu grupo não tem experiencia nenhuma antes! Existe alguns numeros que eu possa me basear?

    Obrigado!

  7. Michael Nascimento Santos disse:

    Caro Luiz,

    Como falei, os números dependem muito dos recursos alocados. Desta forma, mesmo que você encontre uma referência, haverá variações para o seu grupo.

    A melhor forma de obter números confiáveis nesse caso é a medição: façam um cronograma para uma parte pequena do projeto, meçam o que acontece na realidade e usem esses números como base para o restante do cronograma.

  8. Karla MAbele disse:

    gostaria de saber como faço um cronograma sobre a EJA, já fiz a fundamentação teórica, fala sobre aum pouco de tudo da educação de jovens e adultos

  9. simone disse:

    Poderia me enviar exemplos de como fazer cronograma, o que devo relatar, o que é importante colocar no cronograma. Poderia estar enviando para o meu email.
    Grata

  10. Leticia Dias Muniz disse:

    Ola! ainda continuo sem muita noçao de como fazer o cronograma do meu grupo. Preciso dividir as tarefas para cada integrante e estipular as datas a serem entregues, desde a montagem da equipe ate a entrega e apresentaçao final do trabalho, socorro…
    obrigada.

  11. anderson disse:

    gostaria que me enviasse um exemplo de um cronograma.. estou fazendo um trabalho universitario porem n estou sabendo fazer um cronograma

  12. juli disse:

    oi eu gostaria de um exemplo de cronograma pois tenho que faz o projeto de pesquisa de conclusão de curso e não sei fazer

  13. Raquel disse:

    Oi! Gostaria de ver o exemplo de cronograma porque estou fazendo um projeto de pesquisa e não sei fazer, se puder me mandar por email eu agradeço.

  14. [...] E alguns anos depois estamos aqui, no Blog do Mister M, falando geralmente de Java e de boas práticas no ciclo de vida do desenvolvimento (como no caso do CVS, de que pretendo falar em breve, ou de como fazer cronogramas). Eu acho que devo isso de certa forma ao Clipper e aproveito esse post pra prestar minha homenagem. Saudades… [...]

  15. Thiago disse:

    Oi, preciso urgentemente de um exemplo de cronograma pq estou fazendo um projeto da faculdade e preciso fazer isso.
    Quem tiver um exemplo de cronograma e puder me mandar, agradeço desde já Lysy_92@hotmail.com

  16. guinever disse:

    Poderia me enviar exemplos de como fazer cronograma, o que devo relatar, o que é importante colocar no cronograma. Poderia estar enviando para o meu email.

  17. guinever disse:

    vou fazer uma pesquisa sobre evasão escolar. como posso montar meu cronograma tenho trinta meses para realizar

  18. Sônia Regina Michelan disse:

    Vou prestar o concurso de PEB II ARTE, como posso elaborar um projeto
    de aula

  19. Sônia Regina Michelan disse:

    O projeto pode ser sobre Escola de Tempo Integral

  20. Daniela disse:

    Olá preciso urgentemente de um exemplo de cronograma porque estou a fazer um curso.

    Obrigada pela atenção

  21. simone disse:

    por favor,
    estou precisando de um exemplo de cronograma para um trabalho.
    se possível

    agradecida

  22. leite disse:

    gostaria de saber como fazer um cronograma de execução de tarefas,
    ditstribuição de pessoal etc.

  23. LUCIA disse:

    Preciso de um modelo de cronograma para educação infantil.
    Alguem pode me ajudar?
    Obrigada.

  24. Lucia disse:

    Aguardo um exemplo de cronograma.
    Na realidade nem sei como me basear.
    se puder mandar por email…
    luciagoncalvest@hotmail.com
    obrigada

  25. davison alessandro disse:

    Trabalho a muito tempo com cronogramas, atualmente tenho uma demanda de montar um que possui muitas interfaces. A questão é que não quero montar um fluxograma onde uma atividade fica aguardando a outra não realizada, mas gostaria de montar um cronograma que evidencie as interfaces. Vc tem algum exemplo? Obrigado

  26. samela disse:

    preciso de um modelo de cronograma para as obras e serviços a se realizarem em um predio comercial.
    gostaria de uma resposta o mais breve possivél

  27. Acctiva disse:

    Olá,

    A Empresa em que trabalho está precisando de um instrutor de GanttProject para ministrar curso de 8 horas. Caso possa indicar alguém por favor, entre em contato pelo email: rh@acctiva.com.br.

    Att

  28. link disse:

    Gostaria de saber fazer um cronograma de eventos de mágicos,o que é necessário para iniciar um evento.
    Desde de já agradeço.
    Por favor me mande um modelo por e-mail.=]

  29. Yara disse:

    Oi!To fazendo um trabalho acadêmico, um projeto de monografia, e ñ to sabendo como montar um cronograma, preciso de exemplo de um.

  30. denize disse:

    oi,gostaria de ex.de cronograma,estou fazendo um projeto de pesquisa e ñ sei fazer,se puder mandar fico agrata.