terça-feira, 27 de setembro de 2016

Da importância de saber definir prazos

Certa vez uns vários anos atrás meu gerente (ou professor, não me recordo) conversava comigo sobre alguma implementação que eu tinha de fazer. De repente vem a pergunta:

- Mas quando é que você me entrega isso?
- Quando que entrego?
- É, pra quando é que eu posso esperar isso feito?



Eu não soube fazer esta data.

Na realidade isso é uma falha comum nos jovens desenvolvedores e até mesmo em analistas, pois as teorias sobre isso na computação ainda estão em ebulição.

Em outras engenharias esse problema não é tão grande. O artesão já fez muitos potes de barro na vida dele pra ser capaz até mesmo de dizer em quanto tempo um aprendiz dele ficará bom o suficiente para entregar tantos potes quanto ele. As fábricas, com seus processos otimizadas e enxutos, já sabem quantas peças são humanamente possíveis fabricar em sua linha de produção. Mesmo jornalistas, que precisam usar o intelecto pra produzir uma peça jornalística, são capazes de dar uma vazão mais ou menos previsível de conteúdo desde os primeiros dias de profissão.

Já o desenvolvedor de software vai sofrer por muitos anos neste tópico. Não por falta de excelência, mas pela natureza da profissão.

Após dominar bem uma primeira linguagem de programação, ainda na faculdade, ele terá de aprender outras linguagens para se tornar efetivamente produtivo. Essas mudanças de contexto prejudicam largamente a medição de tempo de execução de uma tarefa. Só com o tempo e a experiência, uns 3 ou 5 anos, é que a pergunta se tornará menos incômoda.

De todo modo, há certas técnicas que podem ser aplicadas para facilitar a vida dos jovens programadores na hora de responder algo do tipo, a saber:


  1. Divida mentalmente o problema. Quanto tempo você leva para fazer uma tela de cadastro? Não sabe? Mas pra fazer um campo na tela, quanto tempo leva? Quais os passos envolvidos nisso? Conseguir um número para isso é bem mais simples e, de quebra, repetindo isso para todos os outros componentes do problema maior você terá, por consequência, a expectativa para a tela inteira.
  2. Faça listas do que lhe foi pedido. Uma lista de requisitos. Listas são boas porque a partir delas você deduz não apenas os componentes de software a criar mas também protótipos de interface ou mesmo mapas mentais caso sejam mais aplicáveis. Faça listas.
  3. Use um sistema de pesos. Crie sua medida. Suponha que aquele um campo da tela de cadastro valha um ponto. A tela inteira somou 16 pontos. Se você puder traduzir um ponto em, por exemplo, meia hora, a sua tela de cadastro fica pronta em um dia. Com o tempo, você vai calibrando o peso dos seus pontos até chegar o mais próximo possível da realidade.
Como?! Você contou 40 pontos, disse que levava 20 horas e entregou em 30? Isso significa que um dos três passos apresentados foi subestimado.

Mas nada tema, pois errar um prazo não é ruim, ainda mais se você estiver aprendendo a fazer isso ainda. O ruim é errar muitos prazos.

Prazos são importantes porque tempo é literalmente dinheiro, grande parte dos projetos de software são na verdade prestação de serviços e se traduzem em contratação de horas de trabalho.

Talvez um dia te pressionem pra produzir um prazo. Talvez, após você apresentar o prazo, te peçam pra fazer mais rápido. Neste caso entra uma questão importante, que é a responsabilidade.

Se você mediu direito, as chances de o prazo que você estipulou conter grandes folgas é baixo. Em casos como esse, apresente o detalhamento que você fez, e explique que metade do que você fez é empirismo, mas a outra metade é matemática.

Saber medir, pelo menos, o tempo de suas próprias atividades faz de você um profissional mais completo e lhe prepara para, um dia, ser capaz de medir o tempo de trabalho dos outros.

Observe que, uma vez medido o volume de trabalho, isto é, quantas horas ou dias tal atividade leva pra ser feita, você pode fazer uso de ferramentas de planejamento de projeto pra distribuir este volume no tempo. Planner, Project Libre ou MS Project possuem ferramentas que lhe ajudam, por exemplo, a saber o que significa levar 40 horas para realizar uma atividade em um modelo de trabalho onde você trabalha 6 horas diárias e tem um feriado na semana de trabalho.

Ah, e nunca é demais relembrar: quando estamos definindo prazos, os dias tem 8 horas e as semanas 5 dias.

Pra concluir, mais valioso que um prazo audacioso e curto, é um prazo realista e bem embasado, pois enquanto o primeiro pode impressionar seu cliente e seu gerente, o segundo tem como produto secundário a construção de confiança, que é a moeda do mundo profissional.

Nenhum comentário:

Postar um comentário