Eu tenho lido o livro " A caminhada dos bêbados: como a aleatoriedade governa nossas vidas ", de Leonard Mlodinow, e é uma leitura verdadeiramente esclarecedora. O livro lida com probabilidades e raciocínio humano. E digamos, apenas para constar, que enquanto algumas coisas às vezes funcionam, há uma chance de que as coisas que você pensou que fizeram funcionar não estejam relacionadas ao que realmente fez funcionar.
As probabilidades não são intuitivas.
No entanto, isso me deu uma ideia. Já deveria haver estudos sobre isso, que tentaram quantificar os resultados dos esforços de engenharia de software (o que, é claro, é um problema difícil por si só). E esses estudos devem apontar para que tipo de práticas de engenharia de software são realmente importantes em termos de sucesso quantificável.
ie
- Uma equipe que emprega TDD tem
this
muito menos probabilidade de terthis
algum tipo de problema. - Uma equipe que emprega os princípios do SOLID tem
this
muito menos probabilidade de ter umthis
tipo de problema. - etc etc.
O que estou procurando aqui são práticas de engenharia de software que mostram forte correlação entre implementação e sucesso. Estou confiante de que essas coisas existem, mas são difíceis de encontrar e é por isso que faço essa pergunta.
Quais estudos ou práticas que você conhece têm forte correlação entre implementação e sucesso (onde o sucesso é um tanto arbitrário, mas acho que você entendeu)?
Se vamos vender a ideia de que a engenharia de software é melhor do que a codificação de cowboys, acho que precisamos de provas.
fonte
Respostas:
O problema com esse tipo de quantificação é que é quase impossível obter dados suficientes sobre a eficácia das práticas de engenharia de software para tirar qualquer conclusão significativa.
Mais importante, a correlação não implica causalidade - por exemplo, pode ser que bons programadores sejam rápidos em adotar novas idéias, para que você veja uma correlação geral entre o sucesso do projeto e a adoção de novas técnicas de engenharia de software. Mas isso não prova nada sobre a eficácia das próprias técnicas, pois todo o efeito pode ser explicado pelo maior nível de talento dos programadores que as adotam.
E então é difícil controlar as variáveis independentes . Como você garante uma experiência justa, a menos que seja capaz de controlar os seguintes itens?
Mesmo se você decidir resolver o problema acima, dando a várias equipes cuidadosamente selecionadas o mesmo problema sob as mesmas condições cuidadosamente controladas, é provável que sua experiência seja proibitivamente cara se você quiser criar dados suficientes para ser estatisticamente significativo.
E, finalmente, é quase impossível medir o sucesso :
Concluindo: tentar quantificar o impacto das tarefas de desenvolvimento de software é uma tarefa extremamente difícil e, apesar de muitos anos após o tópico, ninguém ainda apresentou uma abordagem realmente eficaz. Como resultado, a avaliação das metodologias de desenvolvimento de software continua sendo mais uma arte do que uma ciência e provavelmente permanecerá assim por muitos anos.
Curiosamente, há uma abordagem que acho promissora: aplicação de princípios enxutos . Isso não é uma panacéia e não resolverá diretamente o problema de avaliar as metodologias de desenvolvimento de software, mas possui um insight importante: um processo com um elemento específico de desperdício é inequivocamente menos eficiente que o mesmo processo sem esse elemento de desperdício, todas as outras coisas são iguais . Portanto, se você se concentrar na eliminação de desperdícios no processo de desenvolvimento de software, pode ter certeza de que está seguindo na direção certa. Além disso, o desperdício é frequentemente quantificável, portanto, você também deve ter uma idéia de quanto mais eficiente está obtendo, pelo menos em termos percentuais aproximados.
fonte