O pai de um amigo, gerente de engenharia de software, disse enfaticamente: "A principal causa de excedentes de agendamento é a pressão de agendamento".
Onde está a pesquisa? Uma quantidade moderada de pressão de agendamento é revigorante, ou o gerente que mencionei está certo ou errado, ou é uma questão de "quanto mais pressão de agendamento você tiver, maior o tempo de entrega e mais TCO?" É uma daquelas coisas em que a engenharia de software idealmente funcionaria sem agendar pressão, mas praticamente temos que trabalhar com restrições de situações do mundo real?
Quaisquer links para a literatura de engenharia de software serão apreciados.
management
scheduling
engineering
Christos Hayward
fonte
fonte
Respostas:
Discordo. A causa número um de excedentes de agendamento é um agendamento que não reflete a realidade e de uma maneira excessivamente otimista. A natureza humana determina que alguma pressão de agendamento seja uma necessidade absoluta. Apenas alguns dos problemas que surgem sem uma certa pressão de agendamento são problemas interessantes e "o melhor é o inimigo do bom o suficiente". Nós, técnicos, preferimos muito trabalhar nos problemas que nos interessam, em vez do problema que precisa ser resolvido para que o produto saia do mercado. Afaste os prazos (pressão do cronograma) e trabalharemos nesses problemas interessantes, em detrimento do produto.
Outro problema é que o produto precisa ser "bom o suficiente". Não precisa ser perfeito. Engenheiros e cientistas veem as suposições simplificadoras que não são bem válidas em algumas circunstâncias especiais de casos. Os designers gráficos veem problemas de alias que são invisíveis para todos os outros. Os programadores veem verrugas em suas arquiteturas que têm impacto nulo no comportamento do produto. "O melhor é inimigo do bom o suficiente", o que significa que às vezes temos que conviver com esses problemas que não são realmente problemas.
A falta de pressão de programação levará a um produto com um custo de propriedade muito alto. O que causa excedentes são agendas incorretas. Isso pode ocorrer de várias formas. Subestimar o esforço necessário, deixar de explicar as dependências e adicionar pessoas a um projeto já atrasado. Só para citar alguns.
fonte
Tempo, qualidade, recursos e número de recursos estão todos conectados. Você pode corrigir três deles e obter o último como o resultado do seu processo de agendamento.
A maneira como sua pergunta é formulada implica que o tempo é sua variável e as outras três (a qualidade, os recursos e o número de recursos) são todas fixas. A questão pode se beneficiar mudando um pouco a perspectiva, fixando o tempo * e deixando a qualidade flutuar.
Agora sua pergunta passa a ser a seguinte: "As restrições de tempo afetam negativamente a qualidade"? A resposta a esta pergunta é um retumbante "Sim": a pesquisa confirma que as pessoas se saem pior sob pressão sobre os problemas relacionados à matemática ** que não praticaram extensivamente antes (ou seja, tentaram cinquenta vezes ou mais), de modo que o pai de seu amigo está certo.
* Um gerente de uma das minhas empresas anteriores costumava dizer que o tempo é uma entrada para o processo de agendamento, não sua saída. Ele estava deixando o número de recursos flutuar, insistindo na alta qualidade uniforme dos resultados.
** Há uma suposição implícita aqui de que a programação é semelhante a fazer matemática; Eu acho que essa suposição é justa.
fonte
Bem, qualquer agendamento feito pelo gerente sem discuti-lo com o líder técnico é propenso a isso. É uma verdade muito óbvia que a programação ou estimativas que NÃO são baseadas em fatos são propensas a falhas .
Além disso, os gerentes que evitam o agendamento com base em evidências também estão caminhando para a próxima falha do projeto. Existem vários estudos sobre esse tópico e o agendamento baseado em métricas é o caminho certo a seguir.
fonte
Agendamento da direita para a esquerda.
Alguém na gerência sempre pensa que é Steve Jobs com sua famosa zona de distorção da realidade. Até que alguém no desenvolvimento de produtos os educe, os gerentes não técnicos podem ter uma visão tão sofisticada quanto o filme francês "Le voyage dans la lune" ("Uma Viagem à Lua"), para ciência de foguetes.
O problema existe há algum tempo. Fred Brooks fala sobre estimativa sem tripas no Mythical Man-Month . Barry Boehm fala sobre isso em suas propostas para uma abordagem da teoria-W ao gerenciamento. Mais recentemente, Steve McConnell (autor do Code Complete ) coloca o conceito de questão de negociação baseada em princípios em "Como defender uma programação impopular" .
O Agile leva o escopo dos projetos para um local em que ele é altamente visível. O Manifesto Ágil pede "Colaboração do cliente sobre negociação de contrato". Espero também que capacite as pessoas que são responsabilizadas. O jogo de planejamento evita que as partes interessadas não técnicas forcem os desenvolvedores a promessas feitas há muito tempo que foram invadidas por mudanças nos requisitos ou novas descobertas.
Se a sua organização rejeitar o ágil, existem ótimos métodos relacionados à calibração de estimativas para redefinir uma programação com base no valor agregado . Eu não acho que o valor agregado faça um ótimo trabalho com alguns dos problemas reais da previsão, mas pode ajudar a dissipar ilusões sobre a velocidade dos projetos e o impacto nas estimativas que temos, de alguma forma, como fatos.
Há um ditado que diz que quanto mais cedo você começar a codificar, mais tempo será necessário. A pressão do cronograma pode ter o efeito de forçar a alteração da metodologia. Às vezes, é da cascata para "codificar como o inferno". Isso pode ter um impacto negativo na qualidade, sem mencionar o moral quando os trabalhadores não conseguem dar o melhor de si e seus colegas e futuros mantenedores os veem no pior, não no melhor. Em um ambiente como esse, um certo grau de caos pode ser controlado com controle de origem, compilação e teste diários (ou integração e teste de unidade contínuos), revisão de códigos, usando uma equipe experiente e altamente qualificada, resistindo à tentação de adicionar pessoal no final o projeto e a velha espera, horas extras.
Outras vezes, a mudança na metodologia pode ser de cascata para incremental iterativo. Minha experiência foi que o gerenciamento demorou a adotar o Agile. Mas depois de um tempo, houve um novo gerenciamento que apoiava mais o Agile. O boxe no tempo pode ser como o orçamento - pode nos forçar a pensar no melhor uso de um recurso limitado. O Scrum tem duas caixas de horário - uma é diária para feedback entre os membros da equipe, a outra é mensal para o sprint na lista de opções.
Licença Creative Commons - consulte http://en.wikipedia.org/wiki/File:Scrum_process.svg
fonte
Você não precisa de literatura de engenharia de software. Probabilidade e estatística conceitual, de graduação, é tudo que você precisa.
Uma estimativa é apenas isso, uma estimativa. Não é preciso, não é garantido. Para qualquer estimativa, há alguma probabilidade de que você a atinja, ou bata no nariz, e alguma probabilidade de que você a supere.
Probabilidade 101: p (saturado ou atingido exatamente) + p (saturado) = 100%.
Um cronograma baseado em uma estimativa tem exatamente as mesmas características.
Você não pode eliminar completamente a incerteza. Sempre haverá alguma probabilidade de superação. Pode ser pequeno, a probabilidade de o Irã destruir seu prédio de escritórios, mas ainda está lá. O melhor que você pode fazer é olhar para tudo e reduzir a incerteza o máximo que puder. Depois de fazer isso, você terá, se tiver sorte, um cronograma com pequenas incertezas e 50% de probabilidade de cada lado.
Agora, pense bem: se você puxar o cronograma, a probabilidade de que você não cumpra ou cumpra exatamente o cronograma diminui. O total ainda precisa somar 100%. Para onde vai essa probabilidade? Resposta, entra na probabilidade de superação.
A General Dynamics / Fort Worth Division aprendeu isso da maneira mais difícil. Eles fizeram sua estimativa inicial para o desenvolvimento do F-16C / D e a enviaram para a cadeia alimentar. Alguém mais alto cortou arbitrariamente um ano e o enviou à Força Aérea. Como resultado direto, a GD / FW estava atrasada um ano para o teste de voo e a Força Aérea NÃO estava feliz. (Observe que "um ano atrasado" estava de acordo com o cronograma revisado, o que significa que o cronograma original estava CERTO NO ALVO.)
fonte
Eu acho que uma certa pressão em um projeto é boa porque ajuda a manter o foco.
No entanto, se a pressão não for realista, ou se a comunicação entre a gerência e o pessoal técnico não funcionar adequadamente, sim, existe o risco de o agendamento da pressão resultar em má qualidade e / ou atraso na entrega.
Um desenvolvedor experiente saberá que não se espera que ele / ela produza a solução perfeita, mas sim uma solução que seja boa o suficiente . Portanto, a estimativa fornecida por esse desenvolvedor já refletirá sua compreensão do que é bom o suficiente para um projeto em particular.
Existem muitos fatores que influenciam a definição de bom o suficiente.
Por exemplo, quantos meses o projeto dura? Se o projeto durar um ano, você poderá escrever rapidamente um protótipo desse módulo particularmente difícil no início do projeto e terá vários meses para testá-lo e depurá-lo como uma atividade secundária para o desenvolvimento de outros módulos mais rotineiros. (Você pode deixar esse módulo amadurecer por vários meses até que seja bom o suficiente, para que você não precise tentar acertar desde o início.) Acho essa estratégia muito eficaz, mas você precisa de um gerente que confie em você e permita que você mantenha um projeto aberto por meses. Outro gerente (desconfiado) pode pressioná-lo a concluir o módulo o mais rápido possível (não importa se você precisará corrigi-lo mais tarde e se essa abordagem acabará por custar muito mais tempo no total).
Outro exemplo: o projeto é para um produto que terá apenas um release. Depois, você pode tentar fazê-lo rapidamente e contar com extensos testes para garantir que o produto funcione conforme o esperado (rápido e sujo é bom o suficiente ). Por outro lado, se o produto tiver dois ou três lançamentos, dedique algum tempo a projetá-lo, para evitar a reescrita extensa do código para lançamentos posteriores. (Nesse caso, rápido e sujo não é bom o suficiente, porque o tempo total de desenvolvimento nos três lançamentos é maior.)
Resumindo, acho que a má comunicação entre a gerência e o pessoal técnico e a falta de um entendimento comum sobre o que é bom o suficiente para o projeto em questão podem levar a uma pressão de programação excessiva, resultando em má qualidade / atraso na entrega.
Nunca há tempo suficiente para fazê-lo corretamente da primeira vez, mas sempre há tempo suficiente para corrigi-lo mais tarde.
fonte