L’intégralité de son positionnement
La plupart des ingénieurs logiciels adorent coder (citation nécessaire), aussi une technologie appelée "no-code" suscite-t-elle généralement et de manière compréhensible un désintérêt ou une aversion.
C'est dommage, car le no-code a le potentiel d'améliorer de façon massive la vie quotidienne des programmeurs. De puissants environnements de développement intégrés (IDE) comme Visual Studio Code accélèrent considérablement la productivité des programmeurs. Ils permettent d'organiser, de vérifier le type et de refactoriser le code et peuvent faire gagner d'innombrables heures de travail. Le no-code va encore plus loin. Au lieu que l'environnement de développement intégré soit construit au-dessus d'un langage existant, l'environnement de développement intégré est le langage.
Le no-code est en fait l'une des choses les plus excitantes de la filière ingénierie en ce moment. Être capable d'assembler une interface utilisateur en quelques minutes sans tâtonner avec les CSS ? C'est merveilleux. Être capable de mettre en place une logique d'entreprise sans se soucier de l'emplacement des données ou de la syntaxe ? Incroyable. Ne plus jamais avoir à écrire de logique CRUD sur plusieurs couches de la pile ? Le paradis.
Étant donné que le terme "no-code" est désormais à la mode et qu'il est utilisé de manière approximative, je vais vous proposer une définition. Le no-code est :
- un langage de programmation ...
- ... couplé à un environnement de développement...
- ... pour offrir un plus haut niveau d’abstraction que la précédente génération de langages de programmation à usage général (Javascript, Python, Ruby, Java, etc.)
Allons maintenant dans le détail de chacune de ces composantes :
Le no-code, c'est de la programmation
On croit souvent à tort que l'absence de code n'implique pas de programmation. Malgré son nom, le no-code ne s'oppose pas à la programmation traditionnelle. Il s'agit plutôt de la continuation naturelle des tendances qui ont débuté avec l'invention du FORTRAN dans les années 1950.
Les outils no-code sont souvent confondus avec les créateurs de sites Web et les systèmes de gestion de contenu tels que SquareSpace ou WordPress, mais ces outils existaient bien avant le no-code. Contrairement à ces outils, les langages sans code modernes tels que Bubble sont complets au sens de Turing et nécessitent le même type de logique de programmation que le codage. Programmation (communication précise de la logique à un ordinateur) <> code (communication précise et textuelle de la logique à un ordinateur).
Le no-code fusionne le langage avec l'IDE
Les IDE analysent le code en arbres syntaxiques abstraits qui sont la forme logique réelle du langage. Les IDE sans code sautent l'étape d'analyse et permettent de modifier directement l'arbre syntaxique abstrait. L'interface utilisateur de l'IDE devient la représentation canonique du programme.
Lorsque vous faites de la représentation canonique d'un programme l'interface utilisateur de l'EDI plutôt qu'un fichier texte, cela ouvre de nouvelles possibilités. Votre EDI peut rendre chaque partie du programme de la manière la plus naturelle possible. Par exemple, les sites Web et les applications peuvent être rendus et modifiés visuellement. Vous pouvez commencer à vous poser la question suivante : quelle est la meilleure expérience utilisateur pour cette fonctionnalité particulière du langage ?
Le no-code offre un plus haut niveau d'abstraction
La progression naturelle de la programmation est passée des langages de bas niveau, qui offrent un accès brut au matériel informatique sous-jacent, aux langages de plus haut niveau, qui font abstraction des détails qui ne sont pas essentiels à l'intention du programmeur. Le langage assembleur, dans lequel il faut comprendre les subtilités de la conception des puces, se situe au bas de l'échelle. Les langages à ramassage d'ordures, comme Python ou Java, se trouvent tout en haut : en travaillant en Python, vous n'avez pas à penser à l'allocation et à la désallocation de la mémoire comme vous le faites en C.
Avant l'avènement du no-code, la progression de la couche d'abstraction des principaux langages de programmation était au point mort. Au lieu de cela, les programmeurs utilisaient des cadres spécifiques à un domaine au-dessus des langages généraux pour obtenir des gains de productivité. Dans le domaine du développement web et mobile, la montée en puissance de React sur le front-end et de frameworks comme Express sur le back-end ont constitué les prochaines frontières de l'abstraction.
Cependant, la programmation dans un framework web "moderne" reste incroyablement complexe par rapport à la simplicité de ce que vous essayez réellement d'exprimer, qui est généralement une interface utilisateur, une certaine logique métier, des requêtes backend et une connectivité avec d'autres services. Entre autres choses, vous devez vous préoccuper :
- des subtilités de HTML + CSS et comment elles diffèrent selon les navigateurs ;
- de la communication navigateur ←→ serveur : quelles données vivent où, combien de temps il faut pour que les données passent du backend au frontend, et les protocoles utilisés pour transmettre les données (websockets, http, JSON, etc) ;
- des schémas de base de données, migrations, indexation et performances ;
- de l'hébergement et des DevOps.
Lorsque vous créez des applications dans un langage conventionnel, vous vous retrouvez à faire la même chose encore et encore : créer des formulaires d'inscription et de connexion, écrire la logique de validation de l'interface utilisateur, mettre en place l'hébergement et les pipelines CI/CD, écrire le modèle ORM, exécuter les migrations de base de données et des centaines d'autres tâches qui ont été faites encore et encore par des programmeurs précédents.
Les langages no-code font abstraction de tout cela. Étant donné que les IDE no-code sont totalement libres de représenter les concepts de la manière la plus facile à utiliser, ils sont parfaits pour les langages spécifiques à un domaine : le langage lui-même peut être adapté à chaque domaine problématique que vous souhaitez aborder.
La contrepartie de cet avantage est la généralité. Les langages sans code ne sont pas aussi polyvalents qu'un langage comme Python, mais pour la grande majorité des projets, c'est un bon compromis. La plupart des travaux de programmation se déroulent dans un domaine bien défini, comme le développement Web, alors pourquoi ne pas utiliser un langage spécialisé à cet effet ?
Parfois, lorsque vous travaillez dans un langage de plus haut niveau comme Python, vous avez besoin de descendre à un langage de plus bas niveau comme le C. Vous devez peut-être écrire une logique critique en termes de performances qui bénéficie du contrôle d'exécution détaillé que le C vous offre par rapport à Python. Python résout ce problème en vous permettant d'envelopper du code C dans une fonction Python.
De même, les langages sans code vous permettent de vous rabattre sur des langages à usage général lorsque cela est nécessaire. (Les langages construits en partant du principe que vous ferez souvent cela sont souvent appelés "low-code". Par exemple, dans Bubble, vous pouvez écrire de nouveaux composants en Javascript qui se comportent alors comme des composants natifs de Bubble. Les langages sans code interagissent souvent avec les langages traditionnels via des API : Bubble vous permet de publier une API à partir de votre application et de vous connecter à des API créées dans d'autres langages.
Les points qui fâchent avec le no-code, d’après l’architecte logiciel Hosk
Le cauchemar de la maintenance des logiciels low-code
Selon Hosk :
- la création d'un logiciel est rapide, mais la maintenance dure des années et est plus coûteuse ;
- Les logiciels créés par des développeurs citoyens vont créer une dette technique à grande échelle ;
- la création de nombreuses petites applications va créer un cauchemar de maintenance au sein de la filière informatique ;
- les frais généraux de maintenance ne cesseraient d'augmenter : « C'est comme si vous deviez maintenir des centaines de feuilles de calcul Excel avec des formules, un mauvais nommage, aucune cohérence et peu de documentation » ;
- les outils de développement low-code devraient être maintenus par des personnes compétentes en matière de low-code, qui se spécialiseraient dans ces compétences. Les équipes informatiques devraient se perfectionner dans les outils de développement low-code, ce qui augmenterait les coûts.
Les logiciels low-code ne peuvent pas gérer la complexité
Hosk estime que les outils de développement low-code sont excellents pour créer de petites applications indépendantes, mais ils ont du mal à répondre aux exigences complexes : « À moins que le monde ne s'oriente vers des exigences simples, les logiciels low-code ne remplaceront pas 80 % de tous les logiciels créés. Le pouvoir du code est de créer des logiciels complexes conçus pour fonctionner exactement comme les entreprises et les systèmes le souhaitent. Il sera donc difficile de créer des logiciels complexes avec de nombreux développeurs travaillant en même temps avec des outils low-code. »
Les problèmes de sécurité et de données liés au low-code
Hosk est d’avis que pendant que les services informatiques se familiarisent avec les nouveaux outils low-code, il y aura des violations majeures de la sécurité parce que personne n'a compris comment verrouiller les outils de développement low-code. En sus, il faut du temps pour comprendre les nouveaux outils et créer les meilleures pratiques pour s'assurer qu'il n'y a pas de failles de sécurité ou de problèmes de données. La puissance des outils low-code serait que vous pouvez vous connecter aux médias sociaux comme Twitter, Facebook et d'autres systèmes et les données de l'entreprise peuvent se retrouver sur Internet.
Le low-code et le battage médiatique
Hosk entrevoit une explosion de la création d'applications low-code, mais aussi une augmentation de la demande de professionnels pour les besoins en maintenance et formation. Le développement low-code ne signera-t-il pas la fin des développeurs ou du code selon ce schéma : augmentation de la popularité, création de nombreux logiciels low-code ; problèmes de maintenance des logiciels low-code ; les développeurs créeront des centres d'excellence et guideront les développeurs citoyens vers les meilleures pratiques ;
le low-code sera utilisé pour de petites applications, pas pour tout le développement de logiciels exigeants.
L'avenir du développement d'applications est hybride
Selon Hosk, les compétences des développeurs ne se limitent pas à l'écriture du code. Les développeurs sont des professionnels ayant des années d'expérience et de bonnes pratiques conçues pour créer des logiciels faciles à maintenir. Par contre, les développeurs citoyens et les équipes informatiques devraient constater que les logiciels low-code créés par des développeurs citoyens seront difficiles à prendre en charge, à maintenir et à étendre. C'est la raison, selon l’architecte logiciel, pour laquelle la révision du code par des développeurs expérimentés existe. Cela empêche la création de code de mauvaise qualité :
« Vous pouvez donner des outils de bricolage aux gens, mais cela ne fait pas d'eux des experts en bricolage, comme le montrent de nombreuses améliorations de la maison. Les améliorations apportées à la maison par des développeurs citoyens fonctionnent à court terme, mais il s'agit de lacunes à court terme qui finissent par être corrigées. »
Enfin, Hosk pense que les développeurs de logiciels ne seront pas remplacés, mais ils devraient être recyclés pour utiliser des outils low-code pour créer des logiciels : « Pour que les outils low-code soient efficaces, ils devront être créés en utilisant les meilleures pratiques, le déploiement, les revues de code et d'autres activités des développeurs professionnels. Le développement de logiciels low-code continuera à se développer, mais les exigences complexes et les grands systèmes dépasseront les capacités des outils low-code. À l'avenir, les outils de développement low-code créeront jusqu'à 50 % des applications et les solutions seront un mélange de low-code et de code. »
Sources : Bubble, Hosk
Et vous ?
Que pensez-vous des outils no-code et low code ? Lequel de ces avis colle le plus avec le futur de la filière programmation que vous entrevoyez en lien avec ces outils ?
Partagez-vous l’avis selon lequel l’avenir de la filière développement de logiciels est hybride ?
Voir aussi :
80 % des technologies pourraient être créées par des professionnels extérieurs à l'informatique d'ici 2024, grâce aux outils low-code, selon Gartner
Forrester : l'utilisation des plateformes de développement low-code gagne du terrain dans les processus de transformation numérique des entreprises
Le marché mondial des technologies de développement low-code va augmenter de 23 % en 2021, selon les prévisions de Gartner
Microsoft lance Power Fx, un nouveau langage de programmation low-code open source basé sur Excel