Il y a des gens qui travaillent sur des systèmes mieux conçus et plus fiables (mais pas forcément plus rapides; on ne peut pas tout avoir à la fois).
Dans ma communauté (autour du langage fonctionnel OCaml), le projet Mirage OS permet de déployer des toutes petites machines virtuelles (quelques Mio) pour fournir un service donné, qui sont efficaces, écrits dans un langage de haut niveau qui rend une pelletée de bugs moins probables, et qui font des efforts en continu pour trouver les bons schémas de conception pour avoir du code robuste.
Le projet Qubes OS propose un système d’exploitation qui met en avant une compartementalisation forte (en gros, au lieu de répartir ses tâches dans plusieurs bureaux virtuels qui tournent dans le même système, l’utilisateur a accès à des systèmes d’exploitations complètement séparés, avec des protocoles spécifiques d’échange d’information), et donc nettement plus sécurisés.
Google a un projet Fuchsia pour refaire un noyau de système plus moderne et plus sécurisé. On connaît depuis longtemps la famille de micronoyaux L4 qui permet une bonne compartementalisation des services systèmes avec un surcoût très faible. Le projet Capsicum a proposé une approche pour permettre une meilleure compartementalisation des programmes tournant sur tout système de la famille UNIX… mais les gens du noyau Linux n’ont jamais été intéressés, seul FreeBSD a vraiment intégré ce travail. OpenBSD a développé un système plus simple et moins flexible que Capsicum, pledge, et fait des efforts pour l’utiliser dans ses utilitaires… mais les utilisateurs d’autres systèmes regardent ailleurs et ne font pas d’effort pour adapter leur logiciel à ces meilleures méthodes de conception.
La communauté universitaire et/ou de recherche travaille depuis des années à des outils de vérification de programme, complète (on vérifie qu’un programme respecte une certaine spécification) ou partielle (on vérifie que tout une catégorie d’erreurs ne peuvent se produire). Elle a produit de très beaux résultats (un compilateur C vérifié, une version vérifiée de L4, de Minix, des hyperviseurs vérifiés, un serveur XML-RPC entièrement prouvé…), mais encore une fois les industriels et la communauté du logiciel libre regardent ailleurs, ne sont pas prêt à faire l’effort d’essayer ces outils et d’essuyer les plâtres nécessaires pour un passage à l’échelle. (Sauf quelque cas exceptionnels: Mozilla a intégré une implémentation vérifiée de primitives cryptographiques développées par Microsoft Research et l’INRIA.)
Quelques points positifs au hasard: RISC-V, un jeu d’instructions processeur bien conçue et entièrement ouverte; on aura peut-être des machines efficaces avec une conception ouverte, un jour. WebAssembly, un langage bas-niveau portable et potable, à la base destiné au web mais qui pourrait à terme être une bonne base commune pour compiler des langages de plus haut niveau, un peu comme LLVM mais en moins bloaté. Rust, un langage poussé par Mozilla qui essaie de faire avancer les choses, au lieu de viser le plus petit dénominateur commun des programmeurs pour gagner la course à la popularité. En comparaison, Google continue à coder en Java et C++ (et a inventé son propre langage pourri, Go, parce que c’était moins compliqué que d’améliorer les outils d’un langage existant pour le rendre agréable à utiliser pour leurs usages), et Facebook a des millions de ligne de PHP à gérer.
L’auteur du billet "Software disanchentment" reste dans un milieu "mainstream" fermé d’esprit et râle sur les technologies Worse-Is-Better qu’il produit. Il écrit des absurdités énorme comme "We haven’t seen new OS kernels in what, 25 years?", parce qu’il n’a pas fait l’effort de s’intéresser aux choses intéressantes qui sont développées. C’est assez paradoxal de râler contre la médiocrité dans la course à la popularité / les parts de marché, et en même temps de ne pas faire soi-même l’effort de se renseigner sur les projets qui font des efforts pour avancer l’état de l’art, à part en citant trois trucs qu’il a vu sur Hacker News. Comme quoi les bandeaux sur les yeux ne sont pas seulement chez les autres.
SpaceFox, tu proposes de mettre en avant une fierté du travail bien fait chez les développeurs, et l’idée que c’est notre responsabilité de faire pression pour pouvoir bien travailler (et pas de se faire dicter comment faire par le client). Pourquoi pas, c’est le mouvement de Software Craftmanship par exemple.
Mais peut-être qu’une autre chose à faire serait de réfléchir à bosser sur des projets qui font avancer les choses, au lieu de bosser "mieux" sur une application mobile qui ne rend pas le monde meilleur pour grand monde. Pour tous les projets que j’ai cités ci-dessus, il est possible de trouver un job à temps plein pour y contribuer de façon productive, tout en répondant à des besoins de clients. (Ça peut demander un peu de recherche, et d’avoir contribué au(x) projet(s) avant.) Pourquoi ne pas commencer par trouver un projet qui a ces qualités, s’y impliquer un peu, et essayer d’en faire son métier ?
C’est très honorable de "programmer correctement", mais c’est encore mieux si le programme qu’on écrit est là pour rendre le monde meilleur.