Programadores sabem estimar?

Nesta última semana fui convidado por um colega a trocar algumas experiências sobre métricas de software, em uma empresa de TI localizada no interior do estado de SP. Durante a visita conversei com vários programadores, nota: todos formados em instituições de renome da região. Durante a conversa perguntei a eles: – Como vocês realizam estimativas de custo e prazo em projetos de software? Desculpem-me o trocadilho: “Um silêncio ensurdecedor veio à tona”. Após alguns minutos fiz outra provocação: – Alguém aqui já realizou alguma estimativa em algum projeto de software? A maioria respondeu que não. De posse desta resposta, convidei a todos a realizar a seguinte experiência:

Distribui aos profissionais dois cartões, cada um deles contendo o enunciado de um algoritmo. Nada muito complexo. Solicitei a eles que implementassem os algoritmos em uma linguagem de programação qualquer. Enfatizei: – Todos devem estimar o tempo (em horas) para o desenvolvimento de cada programa. – É necessário validar as entradas dos dados.

Ressalto que todos estimaram que em uma hora os cartões estariam implementados. Vejam só os resultados da experiência:

·          Foram distribuídos 20 cartões para 10 desenvolvedores.

·          Tempo orçado para o desenvolvimento do projeto: 10 horas.

·          Após uma hora, recebi 9 cartões implementados, 45% do projeto estava concluído.

·          Restavam ainda 55%.

·          Em nossa simulação, cada programador foi contratado a R$ 50,00 a hora.

·          O lucro estimado com o desenvolvimento do projeto estava orçado em 60%.

·          Valor total cobrado pelo projeto: R$ 800,00.

·          Necessitávamos ainda de 12,22 horas de trabalho para terminar o projeto.

·          Enfim, o custo total do projeto deveria ser de R$ 1411,00. (nota: o calculo só levou em consideração o custo da mão de obra)

Com base nos números apresentados é possível afirmar que um projeto de 2 horas resultou em um prejuízo de R$ 611,00.

Questionei a todos: – Como ficaria a situação da empresa em um projeto de 1000 horas?

Aproveitando a situação, fiz a mesma experiência com os alunos da disciplina de Sistemas e Tecnologias da Informação III, sexto semestre do curso de Analise de Sistemas e Tecnologias da Informação da Faculdade de Tecnologia de Ourinhos, neste caso o erro era esperado. Na turma A o prejuízo, em um projeto de 7 horas, foi de R$ 4000,00. Na turma B, o prejuízo foi de R$ 6000,00 em um projeto de 8 horas.

Analisei, superficialmente, algumas ementas das disciplinas de engenharia de software de alguns cursos de graduação em computação, pude verificar que muitos deles não abordam, ou pelo menos não citam, conceitos relacionados a métricas de software. Será que isto acontece mesmo? Será que tal fato refletiu na experiência efetuada na empresa?

Com base no contexto apresentado, acredito que parte dos profissionais de TI que trabalham, diretamente, com a produção de código não conhece a sua capacidade de produção. Realize uma experiência semelhante e confira.

 

José Augusto Fabri

Faculdade de Tecnologia de Ourinhos

Fundação Educacional do Município de Assis

 

Recursos utilizados na experiência:

 

modelo de um cartão

Folha de calculo desenvolvida pelos alunos João Aparecido Ribeiro e José Santiago Moreira

13 Responses to “Programadores sabem estimar?”

  1. Muito interessante a pesquisa, isso mostra que os profissionais de informática ainda estão na era da “crise do software”, tudo que já foi passado e melhorias desenvolvidas na engenharia de software não está sendo utilizada. De quem será a responsabilidade? Será que é melhor fazer sem planejar? Acredito que é responsabilidade do mercado, que trata os profissionais de TI como máquinas e esquecem do fator humano. Técnicas de estimativas já existem a muito tempo e é utilizado apenas por Gerentes, mas é um pensamento errôneo. Todos os profissionais deveriam saber qual é a sua capacidade de produção, investir em treinamentos de estimativas, isso vale para tudo na vida. Planejar é a melhor saída, mas infelismente a preguiça e comodismo ainda está vencendo.

  2. Parabéns pelo post, realmente é isso que acontece em muitas empresas e as instituições de ensino (nem todas) preparam o profissional para trabalhar e não para saber ganhar dinheiro…
    muito bom este post…

  3. Realmente é percebivel esta dificuldade em estimar o tempo de entrega de projetos principalmente quando tem que ser cotado em horas. No meu curso pelo menos ainda, não vi nenhum professor aplicar um treinamento parecido apesar de alguns já o terem citado. Com isso dificilmente quando o aluno sair da faculdade terá uma ampla visão do negocio ao qual se meteu, correndo assim o perigo de somente ser um programador,
    sem visão de empreendedor.

    Obs: Guto agradeço pelos seus textos que estão sendo de grande valia em reflexões sobre como se deve produzir não somente software mas qualquer coisa.

  4. A maioria dos profissionais de informática realmente não sabem como estimar o tempo de entrega de um projeto.
    Por isso algumas pequenas empresas produtoras acabam fechando as portas por não conseguirem manter as dispesas por essa falta de planejamento.
    Por experiência própria posso dizer que os programadores geralmente não sabem como são calculadas as horas de um projeto. A atividade de produção é liberada e o programador deve desenvolver o produto no tempo estipulado, mas como saber como foi calculado aquele tempo? Como saber se o tempo disponibilizado vai ser suficiente? Não se sabe, por isso muitos não levam a sério e acabam estourando o tempo e, conseqüentemente, acabam tendo prejuísos.
    Portanto é muito importante que todos que trabalham no ramo saibam pelo menos como é feito esse cálculo, mesmo que não o utilizem.

  5. A maioria dos profissionais de informática realmente não sabem como estimar o tempo de entrega de um projeto.
    Por isso algumas pequenas empresas produtoras acabam fechando as portas por não conseguirem manter as dispesas por essa falta de planejamento.
    Por experiência própria posso dizer que os programadores geralmente não sabem como são calculadas as horas de um projeto. A atividade de produção é liberada e o programador deve desenvolver o produto no tempo estipulado, mas como saber como foi calculado aquele tempo? Como saber se o tempo disponibilizado vai ser suficiente? Não se sabe, por isso muitos não levam a sério e acabam estourando o tempo e, conseqüentemente, acabam tendo prejuísos.
    Portanto é muito importante que todos que trabalham no ramo saibam pelo menos como é feito esse cálculo, mesmo que não o utilizem.

  6. João Ribeiro Says:

    Como participante desta experiência posso confessar que foi um aprendizado impar e que a minha principal dificuldade foi realmente estimar a minha capacidade produtiva. Quando recebi o cartão para iniciarmos a programação percebi que era realmente uma tarefa simples, e como estávamos programando em pares eu realmente acreditei que iríamos conseguir programar testar e entregar até mesmo antes do prazo. No decorrer da programação vimos que não é bem assim, vimos às dificuldades surgirem e o tempo foi passando e o prazo se esgotando. Após uma breve reflexão sobre o assunto eu logo coloquei a culpa no tempo que era muito curto, que a tarefa não era tão simples assim e não vi realmente a nossa limitação em estimar a nossa capacidade produtiva em reconhecer minhas limitações e então comecei a refletir sobre o assunto: Será que estamos realmente preparados para o mercado? Será que conhecemos nossa capacidade de produção? O que estará faltando para nos tornarmos um profissional realmente capacitado e preparado para o mercado? De que forma o mercado pode colaborar para o desenvolvimento desse profissional? Em fim muitas questões surgiram…, e de quem será ou serão as responsabilidades para que possamos mudar e que realmente o Brasil possa mostrar todo seu potencial na produção de software?

  7. Maurício Rodrigues Says:

    Um outro fator que influência no erro de cálculo do prazo do projeto é o fato da pressão o programador sofre ao passar uma quantidade de horas para que tenha um fôlego e consiga entregar o projeto.

    Quem já não passou um prazo, mas se sentiu pressionado a diminuí-lo, como se isto fizesse-o programar mais rápido, e ao contrário, teve que trabalhar acima do horário.

  8. José,
    muito interessante a experiência, de fato a maioria dos profissionais que trabalham diretamente na “linha de produção” de software, não conhecem suas capacitações (ou falta delas) e suas limitações (tanto físicas quanto mentais). Entretanto, a questão de mensurar a quantidade de esforço necessária para a realização de determinada atividade, nunca foi das mais fáceis, muito menos das mais precisas. Acredito que algumas questões que dever ser levadas em consideração quanto à estimativa de custo e prazo, são: Tipo de projeto (escobo aberto ou fechado), número de stakeholders e suas características (comportamentais, técnicas e inovativas), data alvo (a qual pode não ser informada pelo cliente), perfil técnico e comportamental dos desenvolvedores, capacidade gerencial do gerente de projeto coordenar todas as etapas de projeto interfaceando as comunicações com as demais áreas da empresa e stakeholders além de melhor alocar os recursos e promover um ambiente de trabalho que propicie a alta produtividade, análise de pré-requisitos, mapeamento do processo (e/ou problema) descrito pelo cliente, e as atividades (e tipos de atividades) envolvidas.
    Levando estas questões em consideração, e pedindo sempre que cada desenvolvedor estime o prazo de entrega, teremos um histórico das estimativas dos desenvolvedores, que no início, poderá apresentar uma grande distância com relação a realidade. No entanto, com este histórico e o desvio padrão médio, o gerente de projetos poderá estimar de forma mais acertiva o prazo e custos de novos projetos.

  9. Cristiane Leme Says:

    Estou no último ano de Sistemas de Informação e posso dizer que hoje já existe uma preocupação das faculdades e até mesmo por partes de alguns professores em deixar os alunos desta área muito bem informados sobre este assunto.
    Durante o quarto semestre, todos os alunos da Metrocamp (Campinas) tiveram a oportunidade de estudar com bastante detalhe “Estimativa e Métricas”, com um profissional extraordinário “Cristiano Portella”, na minha opinião foi extremamente importante, pois é difícil medir o que é difícil de ver.
    Pode ser que um dia eu também erre, mas terei entre os meus aprendizados acadêmicos uma boa referência para me apoiar, isso é importante.
    Acredito que informativos como este pode alertar todos os futuros profissionais a saber da importância deste tópico, para que cobrem este aprendizado das Instituições de Ensino e seus professores, até que chegue um dia que todos já tenham esta consciência.

  10. Acredito que em muitos casos, a responsabilidade dessas estimativas caem sobre os programadores, mas acho interssante avaliar a qualidade do material que está sendo apresentado a eles. Um projeto bem especificado, com requisitos bem descritos, faz com que o programador tenha uma visão mais detalhada do projeto, podendo assim, estimar melhor seu tempo.
    Sou analista de sistemas e tenho como experiência que quanto melhor a documentação do projeto, mais exata é a medição de tempo.
    Métodologias para estimativa de tempo também acho válido e tenho acompanhado bons resultados, a literatura traz algumas bem interessantes.

  11. Almiro Alves Says:

    Ótimo artigo…vejo o problema como sempre na raiz, ou seja, na formação dos profissionais, depois um pouco mais nas empresa, pois pensam que o profissionais são máquinas, e sempre apertam o prazo estimado pelos mesmos.
    É uma pena que todo trabalho da engenharia de software ainda continua se dissiminando lentamente, enquanto a tecnologia voa na velocidade da luz.

  12. Sinceramente, não me surpreende esse resultado.
    Afinal, a maioria dos programadores só pensam em programar, programar e programar… não se interessam por estudo de métricas ou gerência, mesmo que seja por curiosidade. Acredito que um bom programador deveria ter noções básicas nesses assuntos.

  13. […] figura apresenta o mapa mental de um dos post post materializado nesse blog. Seria interessante que você analisasse o mapa e posteriormente fizesse […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: