Comme il a été déclaré par DeMarco et Lister dans Peopleware il y a une vingtaine d'années, la grande majorité des projets logiciels échoués échouent non pas en raison de problèmes techniques, mais de problèmes sociologiques . Cela n'a pas changé au cours des dernières décennies, peu importe à quel point nos outils se sont améliorés.
Mauvaise gestion, attentes irréalistes, ne pas trouver les bonnes personnes pour le travail et / ou ne pas les laisser faire leur travail, donc ne pas les garder; des lieux de travail et des outils qui ne conviennent pas aux travaux de développement de logiciels; conflits personnels non gérés; politique ; ce ne sont là que quelques-uns des problèmes typiques qui peuvent rendre un projet condamné dès le départ.
Pourquoi écrire un bon code est plus difficile?
Je ne suis pas tout à fait convaincu qu'il est vraiment plus difficile d'écrire du bon code maintenant qu'il y a des décennies. En fait, par rapport au code machine ou à l'assembly, tout ce que nous avons maintenant dans le courant dominant est beaucoup plus facile à gérer. Il nous suffira peut-être d'en produire davantage.
Est-ce uniquement à cause des facteurs de mention, du temps et de la complexité?
Oui, la complexité réalisable a certainement augmenté (et continue d'augmenter) à mesure que la puissance de nos outils augmente. En d'autres termes, nous continuons à repousser les limites. Ce qui pour moi se traduit par qu'il est tout aussi difficile de résoudre les plus grands défis d'aujourd'hui qu'il y a 30 ans pour résoudre les plus grands défis de ce jour.
OTOH étant donné que le domaine s'est tellement développé, il y a beaucoup plus de "petits" problèmes ou de "problèmes connus" qu'il y a 30 ans. Ces problèmes ne sont techniquement (devraient) plus (être) un défi, mais ... ici entre la maxime ci-dessus :-(
Le nombre de programmeurs a également considérablement augmenté depuis. Et au moins ma perception personnelle est que le niveau moyen d'expérience et de connaissances a diminué, tout simplement parce qu'il y a beaucoup plus de juniors qui arrivent en permanence sur le terrain que de seniors qui pourraient les éduquer.
Est-ce que les méthodologies ne sont pas pratiquées correctement?
IMHO certainement pas. DeMarco et Lister ont des mots durs à propos des méthodologies big-M. Ils disent qu'aucune méthodologie ne peut réussir un projet - seuls les membres de l'équipe le peuvent. OTOH les petites méthodologies dont ils font l'éloge sont assez proches de ce que nous connaissons aujourd'hui comme «agile», qui se répand largement (à mon humble avis pour une bonne raison). Sans parler de bonnes pratiques telles que les tests unitaires et la refactorisation, qui, il y a seulement 10 ans, n'étaient pas largement connues, et de nos jours même de nombreux diplômés les connaissent.