Au début de ma carrière en informatique, j'ai rencontré une classification utile des logiciels qui les divise en trois catégories : logiciels système, logiciels applicatifs et scripts. Bien que cette abstraction ne soit pas parfaite, elle sert de cadre conceptuel utile pour les ingénieurs et les gestionnaires. Chaque catégorie révèle des perspectives uniques sur le développement logiciel, son utilisation et les types de personnes qui les écrivent.\n\nÀ la base se trouve le logiciel système, qui comprend les systèmes d'exploitation, les compilateurs et les bases de données. Ceux-ci servent de composants génériques et fondamentaux nécessaires à la construction de tous les autres types de logiciels. Bien que le logiciel système soit répandu, il est intrinsèquement indifférencié et n'exécute pas de tâches significatives par lui-même. Il existe relativement peu d'options de logiciels système de qualité production — seulement quelques systèmes d'exploitation, environ dix langages de programmation populaires et une vingtaine de moteurs de bases de données majeurs. La rareté des choix découle de défis économiques et techniques, car créer un logiciel système fiable demande de grandes équipes de développeurs hautement qualifiés et s'étend souvent sur plusieurs générations. Des exemples notables incluent Unix et le compilateur gcc, illustrant la complexité et l'ampleur impliquées. Malgré son importance, seule une minorité d'ingénieurs logiciels se spécialisent dans le développement de logiciels système.\n\nAu-dessus de cette couche se trouve le logiciel applicatif, qui englobe tous les programmes nommés conçus pour des tâches spécifiques. Les exemples vont des produits grand public comme Photoshop, Excel et TikTok à d'innombrables outils internes tels que les systèmes de gestion de tickets d'assistance ou les contrôleurs de machines-outils. Les applications sont construites sur le logiciel système et parfois d'autres applications, conçues pour accomplir des tâches particulières avec des capacités limitées de personnalisation ou de script. Comparées au logiciel système, les applications ont tendance à avoir une durée de vie plus courte, bien que certaines comme Microsoft Office, Google Search et Midnight Commander aient perduré pendant des décennies. Le logiciel applicatif constitue la majeure partie du développement logiciel professionnel, et en conséquence, la majorité des développeurs professionnels se concentrent sur la création de ces applications.\n\nLa troisième catégorie, le scripting, couvre les logiciels qui automatisent ou relient divers composants, souvent adaptés à des cas d'utilisation très spécifiques et étroits. Les scripts peuvent être aussi simples que de relier une feuille de calcul à un service de messagerie en utilisant des outils comme Zapier ou aussi complexes que des scripts d'analyse de données utilisant des bibliothèques telles que Numpy. La plupart des logiciels dans le monde appartiennent à cette catégorie de scripting. Contrairement aux développeurs professionnels, les auteurs de scripts incluent souvent des programmeurs non professionnels comme des employés de bureau créant des formules Excel ou des scientifiques écrivant du code d'analyse de données. Bien que les scripts soient généralement moins complexes que les applications complètes, ils impliquent néanmoins de la programmation et servent des objectifs pratiques clairs plutôt que d'exister comme des produits autonomes.\n\nCe cadre place élégamment un large spectre d'activités de programmation — des solutions NoCode au microcode — sur un même continuum, mettant en lumière la diversité des outils que les développeurs doivent maîtriser. Il encourage également les développeurs à considérer si un simple script ou une automatisation est plus approprié que de construire une application complète, car les scripts peuvent être moins coûteux à développer et permettre une itération plus rapide. De manière intrigante, les scripts évoluent souvent en applications, et les applications peuvent croître pour devenir des logiciels système, reflétant une nature fractale à travers les couches.\n\nAu sein des organisations, ces catégories se manifestent de différentes manières. Les équipes plateformes personnalisent souvent le logiciel système pour répondre aux besoins spécifiques de l'entreprise, réduisant la complexité des outils utilisés pour le développement d'applications. Historiquement, les applications internes avaient un support limité pour le scripting, mais les avancées en automatisation robotisée des processus (RPA), plateformes NoCode et outils d'intelligence d'affaires (BI) ont accru les capacités d'automatisation et de personnalisation pour les développeurs non professionnels. À l'avenir, on s'attend à ce que les non-professionnels assument davantage de rôles de personnalisation logicielle, stimulés par l'amélioration des outils et la demande croissante de solutions logicielles. Pendant ce temps, les développeurs professionnels se concentreront sur les logiciels système de base et les logiciels orientés utilisateur, fournissant des API et des flux de données pour que les outils de scripting et d'automatisation de niveau supérieur puissent en tirer parti.\n\nDans l'ensemble, cette classification clarifie non seulement comment les logiciels sont construits et maintenus, mais offre également des perspectives précieuses pour les carrières. Comprendre ces couches peut aider les professionnels à choisir où se spécialiser et comment collaborer efficacement avec les autres dans l'écosystème logiciel.