Deveria haver mais estudos científicos sobre a eficácia de várias idéias sensacionalistas no desenvolvimento de software?

5

Todo mundo parece implicitamente supor que o livre mercado de idéias acabará por convergir para as soluções "certas" no desenvolvimento de software. Nós não assumimos que na medicina - nós reconhecemos que experimentos científicos são necessários lá - então por que devemos assumir isso no desenvolvimento de software?

Eu não estou defendendo a regulamentação de programadores. Ainda é muito cedo para falar sobre isso. Antes que a saúde pudesse ser efetivamente regulada, havia uma necessidade de experimentos científicos para estabelecer quais tratamentos funcionavam e quais não funcionavam.

A engenharia de software nem mesmo tem essa base de evidências científicas para fazer backup de metodologias elogiadas, como Scrum ou Agile, ou paradigmas de programação, como programação funcional ou MDA. Como

(a) grandes projetos de software são responsáveis por muitas falhas de projeto do governo (com o governo do Reino Unido sendo um bom exemplo)

(b) Agile e Lean estão sendo usados fora do desenvolvimento de software, inclusive no setor público [claro, o Lean foi originado fora do desenvolvimento de software]

isso é cada vez mais relevante politicamente. Falhas no projeto do governo podem ser influenciadas pelo fracasso em usar as melhores práticas, ou até mesmo pelo uso de algo que é considerado por algumas pessoas uma boa prática, mas que na verdade piora as coisas, ou apenas custa dinheiro sem realmente ajudar muito. / p>

A questão é, por que esta base de evidência científica (para todos os intentos e propósitos) é inexistente?

Existe uma grande comunidade de código aberto a partir da qual os participantes da pesquisa podem ser sorteados. Meu receio é que os desenvolvedores de software de código fechado e interno tratariam com desconfiança qualquer pesquisa baseada nessa comunidade, temendo (talvez com razão) que os resultados não se traduzissem. E as empresas que desenvolvem software interno e de código fechado provavelmente não estariam dispostas a que seus desenvolvedores participassem de quaisquer estudos científicos. Por um lado, provavelmente levaria tempo longe de fazer o trabalho; por outro, os resultados poderiam ser embaraçosos para a empresa ou para os gerentes seniores.

    
por Robin Green 17.03.2012 / 11:55
fonte

3 respostas

5

Existem bibliotecas decentes de pesquisa em projetos de desenvolvimento de software. Basta dar uma olhada na Biblioteca Digital da Ciência da Computação IEEE e no Biblioteca Digital ACM para dois exemplos. Mais especificamente, as IEEE Transactions on Software Engineering e Transações ACM em Engenharia de Software e Metodologia apresentam pesquisas acadêmicas e industriais sobre vários aspectos do desenvolvimento de software, desde ferramentas até metodologias e paradigmas. Além disso, o IEEE Software é mais um formato de revista que apresenta tópicos e informações relevantes de forma mais fácil de digerir. formato para profissionais "nas trincheiras", por assim dizer. Então, há pesquisas lá fora.

No entanto, um dos maiores problemas é a variação no setor de software. Os projetos dependem de muito - domínio, conhecimento e habilidades das pessoas envolvidas, metodologia do processo, as escolhas feitas nas várias fases do projeto (desde a tecnologia até a arquitetura do sistema e design - muitas vezes há muitas boas escolhas). Torna-se muito difícil olhar para os projetos e generalizar as informações de uma forma que seja cientificamente válida e útil na maioria dos projetos.

Seus comentários sobre custo e constrangimento provavelmente também são verdadeiros, pelo menos em algumas organizações. As organizações pagam seus engenheiros aos produtos que podem ser enviados pelo produto. Pelo que tenho visto, a maioria das pesquisas envolvendo produtos comerciais envolve três coisas: uma descrição da técnica antes de alguma mudança, uma descrição de alguma técnica após uma mudança e o impacto dessa mudança. Voltando ao constrangimento, algumas empresas não vão publicar relatórios que dizem que sua produtividade diminuiu ou que seus defeitos aumentaram e analisam por que isso aconteceu. Em vez disso, eles tendem a mostrar técnicas que melhoraram a organização e discutem o porquê. No entanto, na ciência, as falhas são tão importantes quanto os sucessos, especialmente quando algo que não funcionou em um projeto pode ser melhorado ou adotado e funciona muito bem em outro projeto.

    
por 17.03.2012 / 14:04
fonte
1

Isso não seria ótimo se houvesse. Isso provavelmente viria das universidades, mas eles estão lutando contra o problema de não produzir programadores que sabem o que estão fazendo quando se formam. Nós os vemos ensinando teoria e fazendo pesquisa ou fazendo treinamento técnico profissional. Se você não pode demonstrar que os graduados conseguem emprego, a matrícula / dinheiro cai. O dinheiro para pesquisa tem que vir de algum lugar. Você pensaria que os gerentes de negócios menos técnicos estariam interessados em financiar a pesquisa, para que pudessem usá-la para basear decisões. Aplicar pesquisa científica nos negócios é apenas arranhar a superfície.

A profissão médica é uma boa analogia. Quando alguém se forma na faculdade de medicina (teoria e pesquisa), não está preparado para ser médico. Eles fazem estágios e uma residência por vários anos e, possivelmente, entrar em especializações. Isso acontece nos hospitais. Empresas que contratam jr. Os desenvolvedores precisam entender que ainda estão "praticando" a programação e exigem orientação e treinamento. Isso poderia liberar os departamentos de computação gráfica para dedicar mais tempo à pesquisa do que há de melhor e mais recente.

Muitos programadores estão em empregos onde não conseguem considerar as tecnologias sensacionalistas se existem dados para suportá-las ou não. Ao contrário de mudar a perscrição de um paciente, a reconstrução de aplicativos legados pode não ser rentável. Quanto tempo um médico investe para aprender sobre o novo medicamento em comparação com o que seria necessário para um programador aprender uma nova plataforma ou linguagem?

O que esperamos que a pesquisa nos diga? Se você entende completamente uma tecnologia, aplique-a corretamente na situação certa, ela funcionará da melhor maneira possível. Estamos em uma indústria especializada. Sim, o seu produto é tão bom quanto você "empolgou", mas eu não posso contratar desenvolvedores suficientes que saibam como usá-lo e a maioria dos projetos não tem tempo suficiente para aprender coisas novas.

    
por 17.03.2012 / 13:17
fonte
1
Em geral, eu diria que é praticamente impossível tirar conclusões científicas significativas do mundo real, porque todo projeto de software (não-trivial) é único e o desenvolvimento de software é, por sua própria natureza, não-determinístico. Então, não acho que estudos científicos dariam muita informação útil.

    
por 17.03.2012 / 21:16
fonte