Il est bien connu que l'IA générative peut créer des images, produisant des images photo-réalistes, des illustrations et des peintures simplement en suivant des instructions.
Parallèlement, dans le monde des affaires, l'attention se porte sur la capacité de l'IA générative à générer des programmes.
L'IA basée sur le chat est rendue possible par les modèles de langage fondamentaux de grande taille, ce qui la rend très performante pour converser dans diverses langues et traduire entre elles.
Les langages de programmation, utilisés pour créer des programmes, sont également un type de langage. Les programmeurs humains, en un sens, traduisent les exigences logicielles reçues verbalement en langages de programmation.
Pour cette raison, l'IA générative conversationnelle utilisant des modèles de langage de grande taille est également très douée en programmation.
De plus, la programmation est un type de travail intellectuel où la correction du résultat peut souvent être vérifiée automatiquement et instantanément. En effet, l'exécution du programme créé permet de déterminer automatiquement si les résultats souhaités sont produits.
En fait, les programmeurs humains créent souvent des programmes de test simultanément avec le programme principal pour vérifier que ce dernier fonctionne comme prévu, en contrôlant son comportement à mesure que le développement progresse.
L'IA générative peut également progresser dans la programmation tout en testant, ce qui permet un mécanisme où, si un humain fournit des instructions précises, l'IA peut itérer automatiquement et compléter le programme jusqu'à ce qu'il passe les tests.
Bien sûr, en raison des limitations de la capacité de programmation de l'IA générative et de l'ambiguïté des instructions humaines, il existe de nombreux cas où les tests ne peuvent être réussis même après plusieurs itérations. De plus, les tests peuvent être insuffisants ou incorrects, ce qui entraîne souvent des bogues ou des problèmes dans le programme achevé.
Cependant, à mesure que les capacités de l'IA générative s'améliorent, que les ingénieurs humains affinent leurs méthodes d'instruction et que les connaissances en programmation de l'IA générative sont enrichies par des recherches sur Internet, le champ d'application de la génération automatique de programmes appropriés s'élargit de jour en jour.
En outre, avec l'attention du monde des affaires, les grandes entreprises menant la recherche et le développement en IA générative se concentrent également sur l'amélioration des capacités de programmation de l'IA générative.
Dans de telles circonstances, l'expansion des domaines et des volumes où la programmation automatique peut être confiée à l'IA générative devrait s'accélérer.
De nombreuses personnes n'ayant jamais développé de programmes ont mis en place un environnement de développement de base à partir d'informations trouvées sur Internet, puis ont laissé l'IA générative s'occuper de la programmation, achevant ainsi des programmes en collaboration.
Moi-même, en tant que programmeur, j'utilise l'IA générative pour la programmation. Une fois que j'ai pris le coup de main, je peux achever un logiciel sans aucune édition du programme, simplement en copiant les programmes dans des fichiers ou en faisant des copier-coller selon les instructions de l'IA générative.
Bien sûr, il y a de nombreux cas où je rencontre des difficultés. Celles-ci sont principalement dues au fait que les paramètres de mon ordinateur ou de mes outils de développement de programmation sont légèrement différents des configurations typiques, ou que les composants logiciels libres sont plus récents que ce que l'IA générative a appris, créant ainsi un écart de connaissances, ou parfois que le contenu que j'ai demandé est un peu inhabituel.
Dans la plupart des cas, s'il n'y a pas de telles petites différences ou de circonstances spéciales, et si je lui demande de créer une fonctionnalité logicielle très courante, des programmes appropriés sont générés.
Vers l'ère du Logiciel Liquide (Liquidware)
En tant que développeur de logiciels, je peux publier les logiciels que je développe. Et les logiciels que nous, ingénieurs, publions sont utilisés par divers utilisateurs.
L'avenir où chacun pourra réaliser ce développement logiciel avec l'IA générative est une extension de la discussion jusqu'à présent.
Cependant, il ne s'agit pas seulement d'un changement du côté du développement logiciel. Un changement significatif se produira également du côté de l'utilisateur.
Donner des instructions verbales à l'IA générative pour ajouter ou modifier automatiquement des fonctionnalités à un logiciel peut être fait non seulement pendant la phase de développement, avant la publication du logiciel, mais aussi pendant son utilisation. De plus, cela peut être fait par les utilisateurs du logiciel eux-mêmes.
Les développeurs de logiciels n'auront qu'à définir les plages permissibles et immuables et à publier le logiciel avec une fonctionnalité de personnalisation alimentée par l'IA générative.
Cela permettrait aux utilisateurs de demander à l'IA générative de modifier des problèmes mineurs d'ergonomie ou des préférences de conception d'écran.
De plus, il serait possible d'ajouter des fonctionnalités pratiques trouvées dans d'autres applications, d'effectuer une combinaison de plusieurs opérations en un seul clic, ou de visualiser des écrans fréquemment consultés sur un seul affichage.
Du point de vue du développeur de logiciels, permettre une telle personnalisation par l'utilisateur offre des avantages significatifs. Cela élimine le besoin pour eux d'ajouter des fonctionnalités basées sur les demandes des utilisateurs, et considérant que cela pourrait accroître la popularité du logiciel en évitant les retours négatifs et l'insatisfaction concernant l'ergonomie, c'est un grand avantage.
Lorsque les utilisateurs peuvent modifier librement les écrans et les fonctions de cette manière, le concept s'éloigne considérablement de ce que nous appelions traditionnellement « logiciel ».
Il serait approprié de l'appeler « liquidware » pour signifier qu'il est encore plus fluide et adaptable que le logiciel (qui est flexible par rapport au matériel), et qu'il s'adapte parfaitement à l'utilisateur.
Dans le passé, les fonctions étaient réalisées uniquement par le matériel, mais ensuite, des logiciels remplaçables sont apparus, permettant aux fonctions d'être réalisées par une combinaison de matériel + logiciel.
À partir de là, on peut envisager l'émergence du liquidware, qui fait référence aux parties pouvant être modifiées par l'IA générative. Ainsi, les fonctions globales seraient réalisées par le matériel + le logiciel (fourni par les développeurs) + le liquidware (modifications de l'utilisateur).
À l'ère du liquidware, les idées de modifications côté utilisateur vont exploser.
Une idée de modification révolutionnaire inventée par un utilisateur pourrait devenir un sujet brûlant sur les médias sociaux, incitant d'autres à imiter et à modifier divers liquidwares.
De plus, des liquidwares capables d'intégrer et de gérer divers types de logiciels sont voués à émerger. Cela permettrait aux utilisateurs de visualiser les chronologies de plusieurs plateformes SNS différentes dans une seule application, ou d'intégrer les résultats de recherche de nombreuses plateformes.
De cette manière, dans un monde où le liquidware est répandu, divers appareils, y compris les PC et les smartphones, fourniront des fonctions qui s'adapteront parfaitement à la vie et aux activités de chaque individu.
Un Phénomène Actuel
Ce qui est important pour les ingénieurs logiciels comme moi, c'est que le concept de "liquidware" n'est pas une notion futuriste ou quelque chose qui arrivera dans plusieurs années.
Ceci est dû au fait que le "liquidware" très simple est déjà réalisable.
Par exemple, imaginons que je suis un ingénieur développant une application web pour le site de commerce électronique de mon entreprise.
Ces applications web ont généralement des bases de données, des systèmes de gestion des ventes et des systèmes d'expédition de produits sur des serveurs gérés par l'entreprise ou des services cloud sous contrat. Lorsqu'un utilisateur effectue un achat, ces systèmes se connectent pour collecter les paiements et expédier les produits.
Les systèmes centraux et les bases de données pour ces opérations ne peuvent pas être modifiés arbitrairement.
Cependant, si la conception du site web de commerce électronique que les utilisateurs voient est modifiée pour la commodité de chaque utilisateur, cela pose généralement peu de problèmes. Bien sûr, si les changements d'un utilisateur affectent l'écran d'un autre utilisateur, c'est un problème, mais les personnalisations individuelles spécifiques à l'utilisateur sont acceptables.
Diverses modifications sont envisageables : agrandir le texte, changer l'arrière-plan en un ton sombre, déplacer les boutons fréquemment pressés vers des positions facilement accessibles avec la main gauche, trier les articles par prix sur un écran de liste, ou afficher les détails de deux produits côte à côte.
Techniquement, ces modifications peuvent être réalisées en altérant les fichiers de configuration et les programmes tels que HTML, CSS et JavaScript qui affichent l'écran sur le navigateur.
En termes de sécurité, ces fichiers s'exécutent initialement sur le navigateur web, ils sont donc modifiables par des ingénieurs familiers avec les applications web. Par conséquent, ils ne gèrent que des fonctions et des données dont la modification est sécurisée.
Ainsi, du côté serveur de l'application web de commerce électronique, on pourrait stocker ces fichiers séparément pour chaque utilisateur connecté, ajouter un écran de conversation avec une IA de chat, et créer un mécanisme pour modifier les fichiers HTML, CSS et JavaScript de cet utilisateur sur le serveur selon ses requêtes.
Si vous fournissez ce texte, ainsi que les informations de configuration et le code source d'une application web de commerce électronique existante, à l'IA générative, elle fournira probablement les étapes et les programmes nécessaires pour ajouter une telle fonctionnalité.
De cette manière, le "liquidware" est déjà un sujet d'actualité ; il ne serait pas surprenant qu'il s'agisse d'un phénomène en cours.
Ingénieur Omnidirectionnel
Même si le champ d'application de la programmation automatique assistée par l'IA s'étend et que l'ère du "liquidware" a déjà commencé, le développement de logiciels ne peut pas encore être entièrement pris en charge par l'IA générative.
Cependant, il est certain que le poids de la programmation dans le développement logiciel diminuera de manière significative.
De plus, pour développer des logiciels en douceur, un large éventail de connaissances et de compétences en ingénierie sont nécessaires, pas seulement en programmation générale, mais aussi en infrastructure cloud, réseaux, sécurité, plateformes, frameworks de développement et bases de données – couvrant l'ensemble du système de haut en bas.
Le personnel possédant de telles connaissances et compétences est appelé ingénieur full-stack.
Jusqu'à présent, quelques ingénieurs full-stack géraient la conception globale, tandis que les autres ingénieurs se concentraient uniquement sur la programmation ou se spécialisaient dans des domaines non-programmation spécifiques au sein de la pile technologique, partageant les rôles de cette manière.
Cependant, à mesure que l'IA générative prend en charge la partie programmation, les coûts de développement logiciel seront considérablement réduits, ce qui entraînera la planification de divers nouveaux développements logiciels.
Par conséquent, chaque projet de développement nécessitera très peu d'ingénieurs capables de simplement écrire du code ; au lieu de cela, un grand nombre d'ingénieurs full-stack seront nécessaires.
De plus, dans cette situation, le simple fait de posséder des connaissances et des compétences full-stack sera insuffisant. En effet, divers projets de développement logiciel exigeront des types de logiciels diversifiés, ce qui signifie que le développement ne sera pas toujours demandé au sein de la même pile technologique. De plus, la demande de systèmes composites nécessitant plusieurs piles technologiques est appelée à augmenter.
Par exemple, la pile technologique d'une application web diffère de celle des systèmes d'entreprise ou des systèmes cœur de métier. Par conséquent, un ingénieur full-stack d'application web ne peut pas se voir confier un projet de développement de système cœur de métier.
De plus, les applications web, les applications pour smartphones et les applications pour PC ont des piles technologiques différentes. Dans le monde des logiciels embarqués, comme l'IoT, la pile technologique change complètement selon l'appareil dans lequel elle est embarquée.
Cependant, si l'accent mis sur la programmation diminue et que le coût global du développement logiciel baisse, le développement de systèmes composites qui combinent des logiciels avec différentes piles technologiques devrait augmenter.
Bien que cela nécessite de réunir plusieurs ingénieurs full-stack distincts pour le développement, les ingénieurs capables de superviser l'ensemble et de réaliser la conception de base occuperont une position cruciale.
Cela signifie que les ingénieurs ayant des connaissances et des compétences omnidirectionnelles à travers de nombreuses piles technologiques, transcendant les frontières des piles technologiques individuelles, seront très demandés.
Ces ingénieurs seront probablement appelés ingénieurs omnidirectionnels.
Et de même que la demande pour les ingénieurs qui ne peuvent que programmer diminuera en raison de l'IA générative, une ère viendra finalement où la demande pour les ingénieurs full-stack confinés à une seule pile technologique diminuera également.
Si vous souhaitez rester actif en tant qu'ingénieur informatique à cette époque, vous devez commencer à vous efforcer de devenir un ingénieur omnidirectionnel dès maintenant.
Le Rôle de l'Ingénieur Omnidirectionnel
Les langages de programmation, plateformes et frameworks à développer sont divers.
Cependant, cela ne signifie pas qu'il faille tous les apprendre. En effet, l'ingénieur omnidirectionnel peut également bénéficier de l'aide de l'IA générative.
Si la tâche est confiée à l'IA générative, même des langages de programmation, des plateformes ou des frameworks que l'on n'a jamais personnellement utilisés peuvent être générés simplement en fournissant des instructions verbales.
Bien sûr, il existe un risque d'introduire des bogues ou des failles de sécurité, ou d'accumuler une dette technique qui pourrait rendre les modifications futures difficiles.
Pour identifier et atténuer ces risques, une connaissance du langage ou de la bibliothèque spécifique est nécessaire. Cependant, cette connaissance peut également être obtenue auprès de l'IA générative. L'ingénieur omnidirectionnel n'a besoin que d'être capable de construire minutieusement les procédures et les mécanismes de détection et de prévention de ces problèmes, ou de leur gestion a posteriori.
Ces procédures et mécanismes ne changent pas significativement avec les différences dans la pile technologique. Si l'on peut formaliser les procédures et les mécanismes pour supprimer l'introduction de bogues et de failles de sécurité, et pour assurer l'extensibilité future pendant le développement, alors le reste peut être confié à l'IA générative ou à des ingénieurs compétents dans ces domaines particuliers.
L'ingénieur omnidirectionnel n'a pas besoin de posséder des connaissances détaillées ou une longue expérience de chaque pile technologique individuelle.
De plus, l'un des rôles majeurs d'un ingénieur omnidirectionnel est de concevoir la manière dont les fonctions sont distribuées et comment elles interagissent au sein de logiciels complexes qui fonctionnent en collaboration sur plusieurs piles technologiques différentes.
En outre, la prise en compte de la manière dont l'ensemble du logiciel doit être développé et géré devient également un rôle important pour l'ingénieur omnidirectionnel.
Logiciel Omnidirectionnel
Voyons quel type de développement logiciel requiert un ingénieur omnidirectionnel.
Plus tôt, j'ai donné l'exemple du développement d'une application web de commerce électronique.
Sous la direction d'un cadre responsable, ayant reçu pour instruction de la haute direction de l'entreprise de remanier cette application web de commerce électronique, l'équipe de planification pourrait formuler les exigences suivantes :
Conversion en Plateforme Communautaire Utilisateur. Cela signifie non seulement une application ou un site spécifique au commerce électronique, mais aussi la fourniture d'une plateforme où les utilisateurs de produits peuvent interagir entre eux concernant les produits eux-mêmes et leur utilisation. L'objectif est la rétention des utilisateurs, l'effet de bouche-à-oreille, l'enrichissement du contenu grâce aux contributions des utilisateurs, et l'intégration des retours sur le développement des produits (positifs et négatifs) avec la planification de nouveaux produits et le marketing.
Compatibilité Omni-appareil. Cela permet l'accès à la communauté d'utilisateurs et aux informations sur les produits non seulement depuis les applications web, mais aussi depuis les applications pour smartphones, les assistants vocaux, les dispositifs portables, les appareils domotiques intelligents et tous les autres appareils.
Compatibilité Omni-plateforme. Cela inclut non seulement la plateforme communautaire de l'entreprise elle-même, mais aussi, par exemple, les listes de produits et le partage d'avis sur les sites de commerce électronique généraux, l'intégration avec les médias sociaux, et le couplage fonctionnel et informationnel avec divers outils d'IA.
Actualisation du Système Commercial. Tout en étant temporairement liés aux systèmes de gestion des ventes et de livraison des produits existants, ces systèmes seront également actualisés. Après l'actualisation, l'agrégation des données de vente en temps réel, la prévision de la demande et l'intégration avec les systèmes de gestion des stocks sont envisagées. De plus, à mesure que l'intégration progressive avec les systèmes de stocks distribués régionalement et les services d'expédition de produits fournis par les entreprises de livraison progresse, les systèmes d'information devront également s'intégrer progressivement en conséquence.
Compatibilité Liquidware. Bien sûr, toutes les interfaces utilisateur seront compatibles avec le "liquidware". De plus, toutes les interfaces utilisateur internes, telles que celles pour l'agrégation d'informations et les retours pour le développement et la planification des produits, les départements d'exploitation du système et les rapports de gestion, seront également converties en "liquidware".
Si un plan de développement pour un logiciel aussi complexe était présenté, une équipe de développement logiciel traditionnelle ne l'accepterait probablement pas immédiatement. Ou bien, pendant le processus d'affinage des spécifications du système, elle démontrerait logiquement la nécessité d'énormes coûts et délais de développement, et pousserait à des réductions significatives des spécifications.
Cependant, que se passerait-il si l'IA générative pouvait automatiser la majeure partie de la programmation, et que plus de la moitié des piles technologiques présentées étaient familières à quelqu'un de l'équipe, et que l'équipe avait une expérience préalable de l'introduction réussie de nouvelles piles technologiques, plateformes et frameworks à partir de zéro avec l'aide de l'IA générative ? Et si vous, en tant qu'ingénieur omnidirectionnel, aviez déjà emprunté cette voie et aviez l'intention de la poursuivre ?
Dans cette perspective, cela devrait apparaître comme un projet très attractif. Vous auriez l'occasion de travailler avec une équipe de planification qui propose des suggestions ambitieuses sous la direction du leadership de la planification, et une équipe de développement ayant le potentiel de devenir une équipe de développement de logiciels omnidirectionnels.
Il y a aussi la réassurance des systèmes existants. C'est également un projet qui permet des processus de développement agiles, où des fonctionnalités à fort impact peuvent être construites rapidement, et le système peut évoluer de manière incrémentale grâce aux retours des premiers utilisateurs.
Compte tenu de cela, le développement de ce logiciel omnidirectionnel devrait apparaître comme un projet attrayant.
En Conclusion
Grâce à la programmation automatique par l'IA générative, le "liquidware" et le développement de logiciels omnidirectionnels deviennent déjà des réalités actuelles.
Dans une telle situation, les ingénieurs IT ressentent de plus en plus le besoin de dépasser le rôle de "full-stack" pour viser à devenir des ingénieurs omnidirectionnels.
De plus, au-delà de cela, leur champ d'action s'étendra à l'ingénierie commerciale omnidirectionnelle, qui conçoit de manière globale les activités organisationnelles en connectant les clients, les employés internes et l'IA au-delà du cadre des systèmes IT, ainsi qu'à l'ingénierie communautaire omnidirectionnelle.
Et encore plus loin, je crois qu'un domaine appelé ingénierie sociale omnidirectionnelle émergera, visant à améliorer la société de manière globale.