Era o meu trabalho freelancer na oDesk. Eu já fiz vários trabalhos mais cedo, mas foi a primeira vez que perdi o prazo. Foi um trabalho muito longo e eu tentei o meu melhor, mas ainda perdi o prazo. Agora estou com muito medo. Porque é minha culpa que eu perdi o prazo.
Minha pergunta é: essa é uma grande preocupação ou os prazos perdidos são comuns entre os trabalhos de programação, por isso não devo me preocupar muito com isso?
Respostas:
Sim. Prazos perdidos são comuns no desenvolvimento de software.
Muitos freelancers cumprem os prazos incorrendo em dívidas técnicas ou escondendo a sujeira debaixo do tapete.
Parafraseando o Mês do Homem Mítico de Frederick Brooks :
Muitas vezes, os prazos são perdidos porque os líderes de projeto continuam a estimar as tarefas de software da mesma forma que as tarefas de engenharia civil, o que é uma abordagem falha porque o software é uma indústria nova e artesanal, sem um corpo claro de normas. Isso é tão verdadeiro que você não pode revogar a "permissão" de um programador para codificar por negligência, nem processar alguém por programar sem título.
O desenvolvimento de software tem uma complexidade inerente que falta a outras disciplinas. Um grande programa pode ter mais componentes que um carro e esses componentes podem interagir de mais maneiras diferentes.
É difícil visualizar o software; portanto, diferentes tipos de diagramas são usados para ver diferentes aspectos de um projeto, e esses aspectos podem não ser ortogonais. A engenharia civil, por outro lado, possui projetos que permitem ver encanamentos, fiação etc. tudo no mesmo gráfico (ou camadas) de forma ortogonal.
Não é comum, após a construção de uma ponte ou construção, o cliente alterar completamente o escopo do projeto. Esse é geralmente o caso em projetos de software.
O estado da arte no desenvolvimento de software não chegou ao ponto em que os projetos de software são repetíveis e quase sem risco. Até as maiores empresas de software como a Microsoft podem perder prazos em meses ou anos.
A maioria dos vaporware nada mais é do que projetos de software que foram cortados por causa desses tipos de problemas.
Em conclusão:
Estimativas ruins e subestimação da complexidade, devido à natureza artesanal do processo de desenvolvimento de software, significam que ele permanece uma disciplina imatura.
fonte
make
ou o que for). O que é 'plano' na ciência da computação seria um 'plano' do plano 'na engenharia. A diferença é que,make
na ciência da computação, leva no máximo algumas horas enquanto a escrita do código-fonte (incluindo testes e integração) leva meses, enquanto na engenharia o planejamento pode levar meses (incluindo o cálculo estrutural), enquanto a construção leva anos. por último.Os prazos perdidos não devem se tornar uma prática comum se você quiser continuar a conseguir empregos.
Com isso dito, você normalmente deseja deixar um espaço extra de "mexer" em suas estimativas, caso as coisas aconteçam (e sempre acontece). Você não precisa divulgar que adicionou em tempo extra, apenas não o torne irracional. Talvez entre 5 - 10% do tempo total? A única maneira de descobrir é fazê-lo algumas vezes.
Para se tornar realmente bom em estimativas, você precisa saber quanto tempo leva para codificar um certo tipo de widget ... por exemplo, digamos que você precise criar um widget de rolagem infinito para o cliente X. Se demorar uma semana Para implantá-lo na produção sem erros, você pode usá-lo como linha de base para suas infinitas estimativas de rolagem.
fonte
A falta de prazos não é incomum no desenvolvimento de software. É quase impossível estimar com precisão quanto tempo levará um projeto de software.
O profissionalismo é mostrado em como você lida com isso. Quando souber que perderá um prazo, informe o seu cliente o mais cedo possível para que ele possa planejar adequadamente.
fonte
É bastante comum, mas você pode melhorar. Você pode querer avaliar usando algo abstrato, como pontos da história , e acompanhar sua velocidade para calcular suas estimativas reais. Esses conceitos são mais comumente associados ao scrum, mas podem ser usados mesmo que você não faça o scrum.
O incrível da velocidade é que ela abrange todas as coisas intangíveis, como interrupções e complexidade inesperada, pelas quais os desenvolvedores têm dificuldade em contabilizar suas estimativas. Todas as probabilidades atingem a média ao longo do tempo. Média em 10 semanas, nossas estimativas de velocidade foram precisas em cerca de 5%. No entanto, quando estimamos as mesmas tarefas em horas, a mesma equipe exata subestima de 30 a 50%.
fonte
Minha teoria (não comprovada) é que os humanos evoluíram para subestimar trabalhos complicados em dois ou três a um. Sempre que o Congresso pergunta à NASA algo como: quanto custará construir um ônibus espacial ou viajar para a lua, eles voltam dentro de uma semana com um número. Depois de esgotar todos os custos esperados, descobrem que custará três vezes mais.
Tivemos uma piada na década de 1970: pegue qualquer estimativa de programador, duplique o número e depois mova-o para a próxima unidade de tempo. Portanto, se um programador disser que isso pode ser feito em duas semanas, ele terminará em quatro meses.
Se alguém remodelou uma cozinha, geralmente pensa: 'Bem, eu vou fazer isso em duas semanas'. Eles terminam cerca de seis semanas depois.
fonte