La réponse la plus simple à votre question, c'est que les domaines de l'informatique et développement de logiciels sont à la fois très nouveau, et pas très bien compris. Bien que tous les scientifiques et les disciplines de l'ingénierie progressent plus rapidement dans les temps modernes, d'autres domaines ont beaucoup plus d'expérience et il est beaucoup plus large compréhension commune de la façon dont ils travaillent.
Par exemple, en dépit de progrès récents de la science des matériaux, les ingénieurs ont connu de près de 2000 ans, la façon de construire une arche de ne pas tomber, et c'est quelque chose qui peut être enseigné et appris à l'université avec relativement peu de controverse. Même si je suis entièrement d'accord avec vous sur les techniques que les développeurs de logiciels doivent apprendre, cet accord est basé sur l'expérience personnelle et informelle raisonnement. Pour être socialement acceptées sur les "meilleures pratiques", nous avons besoin de données quantitatives qui peuvent être très coûteux à collecter: combien de contrôle de version de l'aide? Comment peut-il aider? Les tests unitaires? Nous pouvons raisonner sur l'efficacité de diverses techniques, mais le fait de prouver de façon concluante que l'efficacité serait très coûteux. Nous aurions besoin de s'exécuter, logiciels réalistes projet du début à la fin, à de nombreuses reprises, avec des groupes de programmeurs qui ont l'équivalent de l'expertise, à l'aide de différentes techniques. À tout le moins, nous aurions besoin de beaucoup de données sur les projets existants de ces projets ne seraient pas disposés à la libération.
Les ingénieurs civils ont des milliers d'années de ponts à regarder, avec beaucoup d'informations. Les développeurs de logiciels, en revanche, n'ont que quelques décennies de l'information, la plupart de ce qui est gardé secret, puisqu'il y a peu de motivation pour les organisations de recueillir et de publier des informations sur leurs développeurs efficacité, même si elles sont de collecte (dont la plupart ne le sont pas).
Il y a aussi une certaine confusion des champs. De développement de logiciels, de logiciel ou de "génie", est vraiment une chose différente de l'informatique. Les développeurs de logiciels ont besoin d'une connaissance de l'informatique, mais travaillant sur les limites de la complexité algorithmique ou de raisonnement sur le parallélisme n'est pas quelque chose qu'un travail de programmeur ferons de chaque jour; de même, une véritable "informaticien" va écrire des tonnes de jeter le code qui ne fonctionne pas ou ne fasse pas quelque chose d'intéressant, et de ne pas profiter de la sorte de rigueur qu'un véritable logiciel produit.
L'émergence de l'internet et de la communauté open-source peut fournir suffisamment de données pour commencer à répondre à ces questions de façon concluante, mais même si les réponses étaient disponibles demain, il faudra probablement 100 ans, de perméat international de la société au point où tout le monde est d'accord sur ce qui devrait être enseigné dans les écoles.
Enfin, il y a certaines considérations économiques. Il a été un temps relativement court étant donné que presque tout le monde impliqué dans le développement de logiciels bon marché, facile d'accès à des machines dédiées à exécuter n'importe quel outils de développement qu'ils veulent. Il y A quelques décennies, complètement dédier une machine à juste exécutez vos tests, ou même logement une histoire infinie de code source, aurait semblé frivole cher pour beaucoup de gens.