Passer au contenu
Cet article a été traduit du japonais à l'aide de l'IA
Lire en japonais
Cet article est dans le domaine public (CC0). N'hésitez pas à l'utiliser librement. CC0 1.0 Universal

Les ingénieurs omnidirectionnels à l'ère du Liquidware

Il est bien connu que l'IA générative peut produire des images photoréalistes, des illustrations et des peintures simplement en recevant des instructions.

Parallèlement, dans le monde des affaires, l'attention se porte sur la capacité de l'IA générative à produire des programmes.

L'IA conversationnelle est alimentée par les grands modèles linguistiques, une technologie fondamentale, et excelle à 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.

C'est pourquoi l'IA générative conversationnelle, qui utilise les grands modèles linguistiques, est également très douée pour la programmation.

De plus, la programmation est une tâche intellectuelle où la justesse des résultats peut souvent être vérifiée automatiquement et immédiatement. En effet, un programme créé peut être exécuté et vérifié automatiquement pour voir s'il produit le résultat souhaité.

En fait, lorsque les programmeurs humains créent un programme, ils créent souvent simultanément des programmes de test pour vérifier les résultats, développant le programme principal tout en s'assurant qu'il fonctionne comme prévu.

L'IA générative peut également progresser dans la programmation tout en testant de la même manière. Si un humain fournit des instructions précises, il est possible pour l'IA d'itérer et de compléter automatiquement le programme jusqu'à ce qu'il passe tous les tests.

Bien sûr, en raison des limitations des capacités 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 passés même après de nombreuses itérations. De plus, des tests inadéquats ou incorrects entraînent 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 et que les ingénieurs humains affinent leurs méthodes d'instruction, associées à des mécanismes visant à enrichir les connaissances en programmation de l'IA générative via des recherches sur Internet, le champ d'application de la génération automatique de programmes appropriés s'élargit de jour en jour.

De plus, grâce à l'attention du monde des affaires, les grandes entreprises engagées dans la recherche et le développement de l'IA générative investissent également massivement dans l'amélioration des capacités de programmation de l'IA générative.

Dans cette situation, on s'attend à une accélération de l'expansion de la portée et du volume des tâches de programmation automatisée qui peuvent être confiées à l'IA générative.

Il existe de nombreux cas où des individus n'ayant jamais développé de programmes ont mis en place un environnement de développement de base en utilisant des informations d'Internet, puis se sont appuyés sur l'IA générative pour la programmation, réalisant ainsi des projets à deux.

En tant que programmeur moi-même, 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 et collant du code dans des fichiers selon les instructions de l'IA générative.

Certes, je me retrouve souvent bloqué. Cela est principalement dû à de légères différences entre les réglages de mon ordinateur ou de mon outil de développement de programmation et les configurations courantes, ou au fait que les composants logiciels gratuits sont plus récents que ceux sur lesquels l'IA générative a été entraînée, créant un décalage de connaissances, ou encore parce que mes requêtes sont légèrement inhabituelles.

Dans les cas sans ces légères divergences ou circonstances particulières, et lorsqu'on lui demande de créer des fonctions logicielles très courantes, des programmes appropriés sont générés dans la plupart des situations.

Vers l'ère du Liquidware

En tant que développeur de logiciels, je peux publier le logiciel que je crée, et ce logiciel, publié par nous, ingénieurs, est ensuite utilisé par divers utilisateurs.

L'avenir où ce développement logiciel pourra être réalisé par n'importe qui grâce à l'IA générative est une extension de la discussion précédente.

Cependant, il ne s'agit pas seulement d'un changement du côté du développement logiciel ; des changements significatifs sont également à venir du côté des utilisateurs.

La tâche d'instruire verbalement l'IA générative pour ajouter ou modifier automatiquement des fonctions dans un logiciel peut être effectuée non seulement pendant la phase de développement, avant la publication du logiciel, mais aussi pendant son utilisation. De plus, elle peut être réalisée par l'utilisateur du logiciel lui-même.

Les développeurs de logiciels peuvent définir la portée de ce qui peut et ne peut pas être modifié, puis publier des logiciels dotés de fonctionnalités de personnalisation alimentées par l'IA générative.

Cela permettrait aux utilisateurs de demander à l'IA générative de modifier de légers désagréments ou des préférences de conception d'écran au sein du logiciel.

En outre, les utilisateurs pourraient ajouter des fonctionnalités utiles trouvées dans d'autres applications, combiner plusieurs opérations en un seul clic, ou visualiser les écrans fréquemment consultés sur un seul affichage.

Pour les développeurs de logiciels, permettre une telle personnalisation par l'utilisateur offre des avantages significatifs : cela élimine l'effort d'implémenter eux-mêmes les demandes de fonctionnalités, et cela peut accroître la popularité du logiciel en évitant les critiques négatives et l'insatisfaction concernant l'utilisabilité.

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 appelons traditionnellement « logiciel ».

Il serait plus approprié de l'appeler « Liquidware », impliquant quelque chose d'encore plus fluide et adaptable que le logiciel (qui est déjà plus flexible que le matériel), et quelque chose qui s'adapte parfaitement à l'utilisateur.

Les fonctions étaient autrefois réalisées uniquement par le matériel. Puis, un logiciel interchangeable est apparu, permettant des fonctions grâce à une combinaison de matériel et de logiciel.

De là, nous pouvons envisager l'émergence du Liquidware, c'est-à-dire des parties pouvant être modifiées par l'IA générative. Par conséquent, les fonctions seront 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 des utilisateurs 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, poussant d'autres personnes à imiter et à modifier diverses applications Liquidware.

De plus, des Liquidwares capables de gérer diverses applications logicielles de manière intégrée sont également susceptibles d'émerger. Cela signifie que les utilisateurs pourraient consulter les chronologies de plusieurs plateformes de médias sociaux différentes dans une seule application, ou que les résultats de recherche pourraient intégrer les résultats 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, offriront des fonctions qui s'adapteront parfaitement à la vie et aux activités de chacun d'entre nous.

Un phénomène actuel

Pour les ingénieurs logiciels comme moi, il est crucial de comprendre que le Liquidware n'est pas un concept futuriste ou quelque chose qui arrivera dans plusieurs années.

En effet, même un Liquidware très simple est déjà réalisable.

Par exemple, imaginons que je sois un ingénieur développant une application web pour le site de commerce électronique de mon entreprise.

Une telle application web disposerait de bases de données, de systèmes de gestion des ventes et de systèmes d'expédition de produits sur des serveurs gérés en interne ou sous contrat via un service cloud. Lorsqu'un utilisateur effectue un achat, ces systèmes se lieraient pour gérer la collecte des paiements et l'expédition des produits.

Les systèmes et bases de données métier essentiels comme ceux-ci ne peuvent pas être modifiés arbitrairement.

Cependant, la conception de l'écran web d'un site de commerce électronique visible par l'utilisateur peut être modifiée pour s'adapter aux utilisateurs individuels sans causer de problèmes significatifs. Bien sûr, si les modifications d'un utilisateur affectaient les écrans d'autres utilisateurs, cela poserait problème, mais les personnalisations spécifiques à chaque utilisateur sont acceptables.

Par exemple, diverses modifications sont concevables : agrandir le texte, changer l'arrière-plan en un ton sombre, repositionner les boutons fréquemment pressés pour une utilisation plus facile 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 comme HTML, CSS et JavaScript qui affichent l'écran dans le navigateur.

Du point de vue de la sécurité, ces fichiers s'exécutent à l'origine sur le navigateur web. Par conséquent, les parties qui peuvent être modifiées par un ingénieur connaissant les applications web ne traitent que des fonctions et des données dont la modification est sûre.

Ainsi, côté serveur de l'application web de commerce électronique, un mécanisme peut être créé pour stocker ces fichiers séparément pour chaque utilisateur connecté, ajouter un écran permettant de converser avec une IA de chat, puis modifier les fichiers HTML, CSS et JavaScript de cet utilisateur sur le serveur selon ses requêtes.

Si ce texte, ainsi que les informations de configuration et le code source de l'application web de commerce électronique existante, étaient présentés à une IA générative, elle fournirait probablement les étapes et les programmes nécessaires pour ajouter une telle fonctionnalité.

De cette manière, le Liquidware est déjà un sujet actuel ; il ne serait pas surprenant qu'il s'agisse d'un phénomène en cours à l'heure actuelle.

Ingénieurs Omnidirectionnels

Même avec l'élargissement de la portée de la programmation automatique assistée par l'IA et l'avènement de l'ère du Liquidware, le développement logiciel ne peut toujours pas être entièrement réalisé par l'IA générative seule.

Cependant, il est certain que l'importance de la programmation dans le développement logiciel diminuera considérablement.

De plus, pour développer des logiciels de manière fluide, un large éventail de connaissances et de compétences en ingénierie est requis, allant de la programmation générale à l'infrastructure cloud, les réseaux, la sécurité, les plateformes, les frameworks de développement et les bases de données — sur l'ensemble de la pile système pour que le système entier fonctionne.

Le personnel possédant de telles connaissances et compétences est appelé ingénieur full-stack.

Traditionnellement, quelques ingénieurs full-stack géraient la conception globale, tandis que les autres ingénieurs se spécialisaient dans la programmation, ou se concentraient sur des domaines spécifiques non liés à la programmation au sein de la pile système, répartissant ainsi les rôles.

Cependant, à mesure que l'IA générative prend en charge l'aspect de la programmation, les coûts de développement logiciel seront considérablement réduits, entraînant la planification de divers nouveaux projets de développement logiciel.

Par conséquent, dans chaque projet de développement, les ingénieurs qui peuvent simplement écrire des programmes seront largement superflus ; au lieu de cela, un grand nombre d'ingénieurs full-stack seront recherchés.

De plus, dans ce scénario, la simple possession de connaissances et de compétences full-stack sera insuffisante. En effet, les types de logiciels requis dans divers projets de développement se diversifieront, ce qui signifie que le développement ne sera pas toujours demandé en utilisant la même pile système. En outre, les exigences pour des systèmes complexes nécessitant plusieurs piles système augmenteront sans aucun doute.

Par exemple, la pile système d'une application web diffère de celle des systèmes métier ou des systèmes centraux. Par conséquent, un ingénieur full-stack d'application web ne peut pas être chargé d'un projet de développement de système central.

De même, les applications web, les applications pour smartphones et les applications pour PC ont chacune des piles système différentes. Dans le monde des logiciels embarqués, comme l'IoT, la pile système variera complètement pour chaque appareil embarqué.

Cependant, à mesure que l'accent mis sur la programmation diminue et que les coûts globaux de développement logiciel baissent, le développement de systèmes complexes combinant des logiciels avec ces différentes piles système est susceptible d'augmenter.

Bien qu'un tel développement nécessitera l'assemblage de plusieurs ingénieurs full-stack distincts, les ingénieurs capables de superviser l'ensemble du système et de gérer la conception de base joueront un rôle crucial.

Cela signifie qu'il y aura une demande pour des ingénieurs possédant des connaissances et des compétences omnidirectionnelles à travers de nombreuses piles système, transcendant les limites des piles système individuelles.

De tels ingénieurs seront probablement appelés ingénieurs omnidirectionnels.

Et tout comme la demande pour les ingénieurs qui ne peuvent que programmer diminuera en raison de l'IA générative, une ère viendra où la demande pour les ingénieurs full-stack confinés à une seule pile système diminuera également.

Si vous souhaitez rester actif en tant qu'ingénieur informatique à cette époque, vous devez commencer immédiatement votre parcours pour devenir un ingénieur omnidirectionnel.

Le rôle des ingénieurs omnidirectionnels

Les langages de programmation, les plateformes et les frameworks qui seront développés sont divers.

Cependant, un ingénieur omnidirectionnel n'a pas besoin de tous les maîtriser, car il peut également bénéficier de l'assistance de l'IA générative.

Si vous confiez la tâche à l'IA générative, même des langages de programmation, des plateformes ou des frameworks que vous n'avez jamais utilisés auparavant 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 vulnérabilités de sécurité, ou d'accumuler une dette technique qui pourrait rendre les modifications futures difficiles.

Pour identifier et atténuer ces risques, la 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. Un ingénieur omnidirectionnel n'a besoin que d'être capable de construire solidement des procédures et des mécanismes pour détecter et prévenir ces problèmes, ou pour les gérer après leur apparition.

Ces procédures et mécanismes ne changent pas radicalement avec les différentes piles système. Si les procédures et mécanismes visant à prévenir les bogues et les vulnérabilités de sécurité et à assurer l'extensibilité future sont formalisés, le reste peut alors être confié à l'IA générative ou aux ingénieurs spécialisés dans ces domaines spécifiques.

Les ingénieurs omnidirectionnels n'ont pas besoin de posséder des connaissances détaillées ou une longue expérience de chaque pile système individuelle.

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 plusieurs systèmes logiciels complexes, fonctionnant en collaboration sur différentes piles système, interagissent.

De plus, la réflexion sur la manière de développer et de gérer l'ensemble du logiciel est également un rôle crucial pour un 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 supérieur mandaté par la direction générale pour moderniser cette application web de commerce électronique, l'équipe de planification pourrait formuler les exigences suivantes :

Intégration d'une plateforme communautaire utilisateur : Il s'agit de fournir une plateforme non seulement pour une application ou un site de commerce électronique dédié, mais aussi où les utilisateurs peuvent interagir sur les produits eux-mêmes et sur la manière de les utiliser. L'objectif est la fidélisation des utilisateurs, l'effet de bouche-à-oreille, l'enrichissement du contenu grâce aux contributions des utilisateurs, et l'intégration des retours (positifs et négatifs) dans le développement de produits, la planification de nouveaux produits et le marketing.

Compatibilité omni-appareil : Cela rend la communauté utilisateur et les informations sur les produits accessibles depuis divers appareils, y compris non seulement les applications web, mais aussi les applications pour smartphones, les assistants vocaux, les appareils portables et les appareils domestiques intelligents.

Compatibilité omni-plateforme : Cela inclut non seulement la plateforme communautaire utilisateur propre à l'entreprise, mais aussi, par exemple, la publication de produits et le partage d'avis sur des sites de commerce électronique complets, l'intégration avec les médias sociaux, et la liaison fonctionnelle et informationnelle avec divers outils d'IA.

Actualisation des systèmes métier : Tout en se connectant temporairement aux systèmes existants de gestion des ventes et de livraison des produits, cela implique également l'actualisation de ces systèmes. Après l'actualisation, le plan inclut l'agrégation de données de ventes en temps réel et la prévision de la demande, ainsi que l'intégration avec les systèmes de gestion des stocks. De plus, la liaison avec les systèmes de stocks distribués régionalement fournis par les entreprises de livraison et les services de livraison côté transporteur sera mise en œuvre par étapes, exigeant que le système d'information adapte progressivement ses intégrations en conséquence.

Compatibilité Liquidware : Toutes les interfaces utilisateur seront, bien entendu, compatibles Liquidware. De plus, les interfaces utilisateur internes pour le développement et la planification de produits (tels que l'agrégation d'informations et les retours), les départements des opérations système et les rapports pour la direction seront également toutes 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. Alternativement, au cours des discussions sur les spécifications du système, elle démontrerait logiquement la nécessité de coûts et de délais de développement énormes, poussant à 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 système proposées avaient déjà été expérimentées par un membre de l'équipe ? Et si l'équipe avait fait ses preuves en lançant de nouvelles piles système, 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à commencé sur cette voie et aviez l'intention de la poursuivre ?

Dans cette perspective, cela devrait apparaître comme un projet très attrayant. Vous auriez l'opportunité de travailler avec une équipe de planification proposant des idées ambitieuses de la haute direction, et une équipe de développement ayant le potentiel de devenir une équipe de développement logiciel omnidirectionnel.

Il y a aussi la réassurance des systèmes existants. C'est également un projet qui peut être développé de manière incrémentielle grâce à un processus de développement agile, en commençant par les fonctionnalités à impact rapide et élevé, et en recueillant les retours des premiers utilisateurs.

En considérant tout cela, le développement de ce logiciel omnidirectionnel devrait apparaître comme un projet très attrayant.

Conclusion

Avec la programmation automatique pilotée par l'IA générative, le Liquidware et le développement de logiciels omnidirectionnels deviennent déjà des réalités actuelles.

Dans ce contexte, les ingénieurs informatiques doivent de plus en plus dépasser le statut de full-stack et viser à devenir des ingénieurs omnidirectionnels.

Au-delà de cela, leur champ d'application s'étendra encore davantage, dépassant le domaine des systèmes informatiques pour englober l'ingénierie commerciale omnidirectionnelle — l'ingénierie des activités organisationnelles elles-mêmes, en connectant les clients, les employés internes et l'IA — et l'ingénierie communautaire omnidirectionnelle.

Et même au-delà, je prévois l'émergence d'un domaine appelé ingénierie sociale omnidirectionnelle, visant à améliorer la société de manière globale.