Les Fake News du Low-code - Compte-rendu du talk d’Alain Fauré et Sylvain Fagnent à la Duck Conf 2021

On entend beaucoup parler du Low-code actuellement, avec d’un côté de nombreuses promesses marketing et d’un autre côté des critiques émises par le monde des développeurs traditionnels.

Alain Fauré et Sylvain Fagnent, architectes chez OCTO Technology, nous aident à distinguer la part de vrai et de faux dans tout ce que l’on entend autour de ces solutions.

Place au “fact-checking” !

De quoi parle-t-on ?

Tout d’abord, rappelons que les  solutions Low-code sont extrêmement différentes des solutions No-code car elles correspondent à desusages et des objectifs différents. Les solutions No-code peuvent s’adresser à un large public, elles sont idéales pour un prototypage ou un MVP mais plus limitées en fonctionnalités (cf. notre précédente analyse, quel type de plateforme pour quel usage No-code/low-code : les trois bonnes raisons de s'y mettre | OCTO Talks ! )

Le Low-code a un objectif de prise en main accélérée, mais ses outils s’adressent à des professionnels de l’informatique et permettent le développement d’applications d’entreprise plus complexes. L’écosystème comporte moins d’acteurs mais de taille plus importante comme Mendix, OutSystems, Convertigo, Pega, Appian ou Salesforce.

Quelles sont les fake news autour du Low-code ?

“Nan, mais j’irai plus vite en codant ça moi-même à la mimine”

Les rock stars du développement ne voient pas l’intérêt de ce genre d’outil alors qu’en entreprise on rencontre souvent deux biais dans leurs estimations :

  • la surestimation des capacités des membres de l’équipe : dans la vraie vie, tout le monde n’a pas le même niveau et dans le cas où l’équipe serait constituée uniquement de rock stars, on peut s’attendre à des problèmes d’égo et/ou de communication (#vécu)...
  • la sous-estimation des fonctions annexes considérées comme simples et faciles que l’on retrouve dans toutes les applications : ex. la gestion de l’authentification, des profils, les traces, la supervision… On sait qu’à la fin tout ça n’aura rien d’annexe dans la charge de travail.

Avec le Low-code, ces deux biais sont mitigés grâce à un outillage qui lisse les différences de productivité entre expérimentés et débutants, et aux fonctionnalités standard intégrées qui prennent en charge les fonctions techniques “annexes”.

“Les éditeurs sont des tocards”

Voilà une affirmation à l’emporte-pièce car les solutions Low-code vont de l’IDE à la plateforme d’exploitation et ont nécessité des années de développement.

Les éditeurs sont de taille mondiale, ont de gros soutiens et de gros moyens pour y arriver. Ils appartiennent à de grands groupes (comme Mendix racheté par Siemens en 2018) ou ont réussi d’importantes levées de fonds (comme OutSystems qui a levé 360 millions de dollars en 2018 aussi).

“C’est du clickodrome ! Tu vas vite au début, tu fais plein de copier/coller, puis c’est juste inmaintenable”

Les outils Low-code utilisent de manière extensive le développement graphique et il est possible de tomber dans le travers de copier/coller sans se poser trop de question, ce qui mène à des applications inmaintenables.

Ceci n’est pas une fatalité car ces outils proposent des abstractions (composants graphiques, processus) réutilisables qui permettent de ne pas faire ce copier-coller. La formation des développeurs aux bonnes pratiques de développement et aux fonctionnalités fournies par les outils est primordiale pour développer des applications de qualité.

“Le Low-code ok pour les applications CRUD avec un utilisateur accommodant avec l’IHM ... ensuite t’es bloqué, faut tout refaire”

Une crainte récurrente est que les applications Low-code permettent d’avoir des premiers résultats rapides en mode CRUD, mais qu’il faut tout refaire dès qu’on a besoin d’écrans ou de fonctionnalités plus compliqués.

Ces outils fournissent des assistants, des designers graphiques qui permettent de faire des écrans personnalisés, avec en plus l’utilisation potentielle de feuilles de style pour finaliser l’aspect. Il est aussi possible de coder des traitements qui seront intégrés comme composants gérés à part, sans mélange avec les composants natifs proposés par l’outil Low-code.

Pour plus d’ouverture, on pourra appeler des APIs depuis la solution Low-code afin de porter une logique métier ou des algorithmes complexes, et donc opter pour une architecture hybride.

Point d’attention : si la partie Low-code devient largement minoritaire par rapport au code custom développé à côté, peut-être que le choix d’une solution Low-code n’est pas pertinent dans ce contexte.

“C’est nul, t’as même pas de Git”

“Du coup impossible de revenir en arrière ou de travailler à plusieurs”, diront les mauvaises langues.

Alain nous donne un exemple de visualisation graphique des objets modifiés et pour chaque composant la comparaison de ses caractéristiques entre deux versions.

Les outils Low-code offrent en effet des solutions intégrées de gestion de version permettant de faire des branches par utilisateur ou des merges comme dans les environnements de développement classiques, à la différence des outils No-code qui souvent ne le proposent pas.

“Y a pas de tests d’intégration pour la non-régression. Bonjour, la stabilité !”

Sylvain nous rappelle qu’il s’agit plus d’un problème de culture et de pratique car les outils Low-code permettent des tests au niveau des services ou des fonctions métier, avec des frameworks de test correspondant équivalent à un JUnit dans le monde Java.

Il est par ailleurs possible de faire des tests d’intégration ou sur l’interface utilisateur, avec différents outils Low-code disponibles (testProject, testComplete, Pcloudy ou AccelQ).

Enfin, si la culture des tests automatisés existe chez vous, alors il faut en profiter pour la diffuser au sein de cette nouvelle filière du Low-code.

“Les générateurs de code comme le polyphosphate, c’est de la m%µ?§”

D'accord, on sait tous que les générateurs de code peuvent produire un code difficile à lire et à maintenir, sauf que... les outils Low-code actuels ne sont pas des générateurs de code !

Soit le modèle défini dans l’outil est directement exécuté (interprété), soit du code est généré à chaque fois que l’application est modifiée. Dans ce dernier cas, le code généré est un artefact non visible et non modifiable, de la même manière que le bytecode généré lors de la compilation d’un programme java.

“Pour les applications mobiles, rien ne vaut une app native faite aux petits oignons”

D’une part, les outils Low-code offrent le choix entre les deux cibles : PWA et application native. D’autre part, ces outils facilitent la gestion du mode déconnecté avec des patterns de resynchronisation, et les fonctions du téléphone sont accessibles via le langage de la solution Low-code ou via des plugins type Cordova.

En revanche, il y a du vrai dans certaines rumeurs ou affirmations…

“Des nuls en informatique ne pourront jamais faire des applications qui déchirent. That’s it !”

Les éditeurs promettent un développement facile avec ce type d’outil, et c’est vrai que la montée en compétence et en productivité est plus rapide que dans les environnements de développement traditionnels. Cependant, les outils Low-code sont des outils de développement et requièrent des compétences en conception d’application et en développement ainsi qu’une formation à minima sur l’outil : obtenir des applications d’entreprise Low-code performantes nécessite des développeurs performants formés aux outils Low-code !

“Une fois que t’as signé, t’es prisonnier, oublie ta liberté !”

Difficile de le nier, il y a un risque de dépendance avec l’éditeur car faire du Low-code revient à une approche progiciel ; la réversibilité sera coûteuse.

On rencontre le même problème en développement classique, passer d’un vieux framework Java des années 2000 à du NodeJS ne se fait pas sans douleur…

Il est commun d’avoir des progiciels ou des solutions propriétaires dans les entreprises (suites bureautiques, ERP, CRM, solutions de développement Microsoft dans une partie des entreprises).

Il faut simplement en être conscient et gérer les risques : par la contractualisation, par le choix pertinent des projets à construire avec du Low-code, en privilégiant les éditeurs qui ont des partenaires pour la formation et le soutien, et aussi en concevant des architectures hybrides qui combinent solution Low-code et développements traditionnels via des APIs.

Take away

Les plateformes de développement Low-code peuvent être assimilées à des progiciels techniques, qui nécessitent des compétences en conception et en développement informatique, ainsi qu’une l’expertise technique sur la plateforme utilisée.

Ces solutions sont clairement montées en puissance et en maturité ces dernières années : soutenues par des technologies Cloud, elles permettent de la customisation et offrent des outillages standard de développement très proche d’une forge logicielle classique.

Sans être une solution qu’il faut adopter systématiquement, le Low-code est une nouvelle filière de développement qui va devenir incontournable : on le voit de plus en plus chez nos clients ou prospects en France, avec une adoption encore plus large dans d’autres pays comme les Etas-Unis ou les Pays-Bas.

Pour aller plus loin

La vidéo de la session : https://www.youtube.com/watch?v=sQZqyB-EZro