:::: MENU ::::

Développement web : tendances et perspectives pour 2016

Tout comme l’an passé et en guise de bonne année, je me prête à l’exercice de « prédiction » des tendances à venir en matière de développement web. Du frontend aux tendances en matière de design en passant par les aspects serveur, voici un tour d’horizon de ce qui semble nous attendre pour la nouvelle année.

pour ceux qui lisent en diagonale

Les technos web sont encore en pleine explosion

Le javascript est plus que jamais présent

Les architectures se centralisent autour des logiciels, la tendance est aux microservices

Le développement mobile est toujours en croissance. C’est une priorité technique et ergonomique

 
 

Front end

Javascript : Ecmascript 6 2015, un renouveau

C’est désormais acté, javascript ou plutôt sa spécification EcmaScript (ES) en est à sa 6eme révision depuis juin 2015 et le support des navigateurs est plutôt correct même s’il faudra encore un peu de temps pour être serein sur une livraison complète sans phase de transpilageen Ecmascript 5. Néanmoins, les principaux navigateurs sont désormais evergreen c’est à dire qu’ils proposent des mises à jours continue. L’adoption des nouveaux standard est facilité.

Les apports d’ES2015 sont nombreux puisqu’ils permettent de standardiser des fonctionnalités qui nécessitaient des librairies tiers. Finalement il y a peu de nouveautés d’un point de vu compilateur et la plupart des ajouts sont syntaxiques. Ils n’en apportent pas moins un réel gain en terme de lisibilité et de productivité.

es2015

Parmi les principaux changements on peut noter l’apparition d’un standard pour charger les dépendances / modules , les classes,  de nouveaux types de données, de nouvelles méthodes de déclaration pour les variables introduisant les constantes, les promises natives et une grande amélioration pour tout ce qui est fonctionnel à savoir de nouvelles fonctions sur les tableaux et les arrows functions..

La spécification d’Ecmascript est aussi depuis 2015 accessible sur github, ce qui permet une meilleur visibilité et ouverture à des éventuelles améliorations. L’objectif du comité technique du standard est de sortir une mise à jour par an, on devrait donc voir apparaître cette année …EcmaScript 2016 ou ES7 . A noter que la fonctionnalité attendue des Observable est abandonnée. Même si elle était en discussion depuis longtemps et que beaucoup l’attendaient et voyaient une application directe dans des framework comme Angular le TC39 en a décidé autrement.

Frameworks uni* : unidirectionnel et universel

En matière de framework web front, 2016 sera l’année de la sortie d’Angular 2. Réécriture massive de la 1ere version du framework mv* de chez Google, l’annonce n’avait pas fait que des heureux. Fin 2015, les esprits plus ou moins apaisés, une version beta est sortie et permet de se faire une idée plus précise du sujet. La plupart des changements est dans la mouvance actuelle, largement encouragée par les technologies de facebook React et Flux. Une des tendances est à la conception d’applications comme un flux unidirectionnel d’événements contrairement à ce qui fait une des fondations d’Angular 1 à savoir le data-binding bi-directionnel.

L’utilisation des dernières nouveautés du langage javascript est aussi mis en avant.

La tendance est aux applications à flux unidirectionnel

La tendance est aux applications à flux unidirectionnel

De part cette approche « simplifiée » et l’utilisation de composants au rendu découplé d’un système de vue spécifique, le javascript universel ou isomorphique (ou pour faire simple utilisable à la fois coté client et coté serveur) est de plus en plus plébiscitée. En effet cette technique possède de nombreux avantages : SEO, performances de premier rendu, code réutilisable, outillages et connaissances partagés ( même langage ).

 

exemple debounce

Transformation dans le temps d’un flux d’évenements

On note aussi une tendance à la programmation reactive particulierement à travers des librairies comme rx.js ou cycle.js. Ici les événements d’interface sont transformés en flux à l’aide d’observables puis traités et filtrés avec des outils similaires à ce qu’on retrouve sur de simples tableaux en programmation fonctionnelle.

Même si ces méthodes sont connues depuis longtemps, elles sont en plein essor dans le domaine du développement web.

Entre Excel et windows 3.1, le développement web d’aujourd’hui n’invente rien et utilise des concepts déjà éprouvés

Mobile first

L’explosion mobile n’est pas stoppée loin de là et il est évident que la plupart des développeurs web actuel seront amenés à travailler plus ou moins directement sur des applications mobiles 

Pour créer une application web mobile il y a trois possibilités :

  • natif : langage compilé nativement suivant la plateforme ( objectif C, C# ou java )
  • hybride : construite à base de technos web et mouliné pour en faire un paquet installable sur une cible dédiée ( la encore iOS, Android, windows phone )
  • web app : à base de technos web, utilisable dans un navigateur quelque soit la plateforme

Les gros avantages de l’utilisation des technos web pour faire des applications mobiles est qu’il n’est pas nécessaire d’apprendre de nouveaux langages. De plus les outils et librairies existantes peuvent être réutilisés. Hélas en contre partie, les performances de rendu ainsi que l’accès aux périphériques du smartphone/tablette sont en dessous d’une application native. Puisque, nous le verrons, la tendance en terme de design est à l’animation sur tout les fronts, l’expérience utilisateur peut se dégrader.

Comme c’est un marché en explosion, ça l’est aussi du coté des technologies et beaucoup s’affairent à faire cohabiter flexibilité des technos web et performances du natif. La encore, facebook a frappé un grand coup en proposant React native.

AndroidiOSReact

React Native, la solution pour un workflow rapide et flexible tout en conservant des performances et un rendu natif

Il s’agit de concevoir ses applications en utilisant du javascript et dans un workflow de travail type web tout en effectuant un rendu natif. Open source, proposé au lancement pour iOS puis ouvert à Android, il offre une alternative gratuite et puissante aussi bien en matière de développement que de rendu puisque le résultat utilisera les composants de la plateforme cible.

D’un autre coté, au fur et à mesure que les navigateurs implémentent de nouvelles fonctionnalités aussi bien HTML CSS ou JavaScript, on voit émerger la notion de progressive web app. Il s’agit toujours d’utiliser une application web accessible depuis un navigateur, mais en se servant de différents outils pour rendre l’expérience plus agréable : « installation » et accès similaire à une application native, fonctionnement hors-ligne, notifications type push . Voici un article complet sur le sujet pour en savoir plus.

Outillage(s)

Concernant le développement front, on constate un usage croissant de npm comme solution d’automatisation en plus d’être la référence pour la gestion des dépendances. En effet, la plupart des taches peuvent être réalisées sans utiliser d’outils externes comme grunt ou gulp via la flexibilité des scripts.

Reste la problématique du serveur de développement proposant le live reload voir le hot reload. Ici de nombreuses propositions existent et son souvent couplées à des systèmes tel que webpack ou browserify qui s’occupent de créer le bundle applicatif.

De nombreuses solutions se mettent en place sous forme de boilerplate plus ou moins complexes. Même si vu de l’extérieur cela semble être le chaos, les outils utilisés sont toujours les mêmes et la communauté se bat pour trouver la solution la plus simple, rapide et efficace. En contre partie, cela nécessite un peu de veille si on veut s’y intéresser sans se décourager.

La stack d'outils reste basée sur des choses connues

La stack d’outils reste basée sur des choses connues

Le concept du pre-processeur reste d’actualité pour du développement javascript voir CSS. La référence en la matière est babeljs qui apporte avec la dernière version disponible une flexibilité permettant d’utiliser de nombreux plugins et presets pour utiliser ES6, ES7 et même d’autres types de transformations

Depuis plusieurs années déjà le développement web ne se limite pas à notepad et window.alerte pour déboguer. Il existe dans l’écosystème javascript des vérificateurs syntaxiques de code. Les plus connus sont jslint , jshint et eslint. EsLint est celui qui a le vent en poupe, il est le plus flexible des trois et permet de valider les nouvelles syntaxes en suivant l’évolution du/des langages, de plus une nouvelle version majeure est en préparation.

Falcor , Relay et GraphQL, une évolution dans le design d’API

Une dernière tendance qui commence à émerger et qui tend à réunir le back et le front autour de la même problématique concerne le design d’API.

On utilise très souvent des API de type REST dans les applications web actuelles mais les choses bougent. Plutôt que de devoir décrire un schéma figé qui devra évoluer, l’approche et différente : le serveur propose l’accès à des données sous forme de schéma et le client construit ses requêtes comme il le souhaite. L’avantage est qu’il n’y a plus besoin de faire évoluer l’API, la seule chose qui compte c’est les données.

Ces initiatives proviennent de deux grand géant du web d’aujourd’hui : Facebook (encore) avec GraphQL et Relay et Netflix avec Falcor.

Pour nommer les choses concrètement:

  • GraphQL : le standard qui définit la méthode communication client/serveur
  • Relay : propose, entre autre, une implémentation de GraphQL
  • Falcor n’implémente pas GraphQL mais possède de manière simplifiée une approche similaire en utilisant les graphes JSON

La encore, le principe de fournir un catalogue de données/fonctions plutot qu’une API statique n’est pas nouveau puisque c’était le but du standard WSDL. Ici on est plus centré sur la donnée et on communique avec un format Json .

Pour aller vite, GraphQL s’apparente à un WSDL pour REST

Coté back

Conteneurs et micro services, la fin du serveur d’application ?

Depuis quelques temps a émergé une nouvelle architecture appelée microservices. Elle consiste à concevoir une ou des applications en composants standalone de périmètre réduit et isolé. Ainsi, plutôt que d’avoir un gros serveur monolithique qui héberge des applications avec des risques touchant configurations et performances, dans ce paradigme chaque microservice dispose de son propre processus avec sa propre configuration voir, son propre OS. Si à premiere vue cela peut sembler lourd d’un point de vue administration, l’arrivée de solution de conteneurisation facilite énormément la tache puisque la configuration système peut être « embarquée » avec le logiciel livré.

Cela permet le partage des problématiques de configuration système entre développeurs et administrateurs système ( le fameux courant devOps) mais surtout limite le couplage entre les applications ce qui autorise des déploiements plus réguliers puisque moins risqués  .

Logo de docker

C’est Docker qui a permis de pousser cette petite révolution et il y a fort à parier que de nombreux SI tendent vers ce genre de solution.

Attention, même si ces solutions sont très prometteuse, passer d’une architecture monolithique ou n-tiers à une solution à base de microservices nécessitera une révision structurelle importante entraînant peut-être plus de contraintes fonctionnelles et humaines que techniques.

Quels langages pour le serveur ?

Même si certains prédisent une disparition de java, le fait est qu’il reste le principal langage sur les applications serveur surtout dans le domaine de l’entreprise. Il est même cité comme langage de l’année 2015 par l’index TIOBE.

Si java 7 n’a pas été une mise à jour glorieuse, java 8 apporte des nouveautés intéressantes notamment les lambdas pour répondre à la tendance « programmation fonctionnelle ». Java 9 initialement prévu pour cette année est repoussé à 2017 mais promet un bon lot de nouveautés utiles pour le développement web tel que l’implémentation de HTTP 2 .

Nodejs connait une belle progression et son adoption dans de gros voir très gros SI est en constante augmentation. Le renouveau apporté par le projet io.js désormais stoppé et la nouvelle direction de node.js apporte une meilleur visibilité sur le long terme. Les entreprises apprécieront le support de la version LTS et les développeurs l’apport d’EcmaScript 6 et de mises à jours régulières. Enfin, la mouvance du javascript coté serveur évoqué dans la partie sur le frontend favorise cet essort.

On a aussi eu droit pour la fin d’année 2015 à l’arrivée de la version 7 de php. Langage souvent utilisé pour débuter dans le développement web et à la base de nombreux projets ayant fait la base du « Web 2.0 » actuel, il est utilisé entre autre comme base de Facebook. Mais le géant réseau social bleu a du modifier le moteur même du langage en grande partie pour des problèmes de performance car celui ci n’avait pas été amélioré depuis longtemps. La version 6 n’ayant jamais vue le jour, cette nouvelle mouture semble bien plus performante. Peut être que 2016 réserve de bonnes surprises coté php .

Mais encore

Coté base de données, la tendance liée au « Big Data », est de plus en plus au traitement temps réel du fait de l’amélioration des débits apportés par le stockage sur flash et en mémoire. Ainsi pour répondre aux nouveaux besoins, Postgresql vient tout juste de sortir une mise à jour majeure 9.5 .

Bigdata

le Big Data reste plus que jamais d’actualité

Visible notamment à travers des projets comme les IDE atom ou plus récemment visual studio community de microsoft, l’usage de technos web comme moyen de concevoir un programme desktop se développe. Electron et nw.js sont les deux solutions proposées. Une piste à suivre.

Un peu à coté du serveur web traditionnel, on entend de plus en plus parler d’objets connectés. Tout ce qui touche à l’IoT est en plein développement et devient très accessible. Le javascript prend place sur quelques plateforme hardware et les applications sont infinies. Plus que les technologies ce sont les problématiques d’énergie, d’écologie et d’éthique qui sont le plus à suivre.

Ux et tendances design pour 2016

Priorité au mobile

La encore, c’est le mobile qui prime. Plus que jamais les designs sont inspirés par les applications et leur usage fait via les smartphones ou tablettes. Si on parle d’un site internet, il se doit d’avoir une version mobile, soit à travers une page spécifique soit à l’aide du responsive design ou autrement dit un « design adaptatif ».

Depuis avril 2015 , l’accès aux mobiles est même devenu un critère de référencement chez google. Heureusement ces techniques ne sont pas nouvelles et l’évolution du CSS permet de faciliter le travail de mise en place. La propriété flexbox devient supporté dans toutes les dernière versions des navigateurs et le Grid Layout commence à faire très timidement son apparition. Malgré tout, ces « nouvelles » spécifications CSS ne sont hélas pas assez répandues à l’heure actuelle pour se baser sereinement dessus. Si la cible doit être le grand public , on ne peut encore se passer d’alternatives plus verbeuse voir de framework specifiques.

Material design , un standard qui s’impose

L’an passé il venait tout juste d’être dévoilé, aujourd’hui il est bien présentmaterial design et très bien documenté. C’est bien au delà d’Android que l’on perçoit les effet de ce qu’on pourrait qualifié une alternative au flat design. La puissance de ces types d’interfaces est que l’usage est tout à fait adapté aux interactions sur mobile et l’ajout d’animations rend le tout attractif.

Mais attention à ne pas tomber dans l’excès ! Si il est possible d’obtenir rapidement un rendu pro avec les collections de composants et framework « material », ce genre de design couplé aux microintérations apporte un énorme plus à l’utilisateur mais devient contre productif si il n’est pas utilisé suite à une vraie réflexion d’ergonomie.

Animations et microinteractions

Finalement la suite d’une tendance entamée depuis quelques années, l’usage d’animations se développe et les navigateurs s’équipent d’outils rivalisant avec des logiciels de design.

La principale nouveauté à mon sens est l’intérêt porté aux micro-interactions. Ce sont des éléments d’interface discrets, souvent graphiques et animés qui apportent une véritable valeur ajoutée à l’interface tout en réduisant l’espace pris par des notifications standards ou des enchaînements d’états. Elles permettent de rendre plus accessible la compréhension de l’interface et apportent une information et surtout un retour sur l’etat

Voici quelques exemples :

pull to refresh animation
exemple microinteraction
 
past and go

 

L’utilisation des microinteractions doit être le fruit d’une réflexion importante sur l’ergonomie et l’expérience utilisateur.
 

Ce sont les détails qui feront la différence entre un logiciel qu’on supporte et une application qu’on aime utiliser.

Ce qu’il faut retenir

Après cet état des lieux, voici dans l’ensemble et selon moi ce qu’il faut retenir pour l’année à venir  :

Les technos web sont encore en pleine explosion et même si les nouveautés semblent importantes sur le plan techniques, elles sont souvent basées sur des notions bien connues.

Le javascript est plus que jamais présent aussi bien sur le développement front que coté serveur. Son industrialisation à travers des outils puissants et les efforts réalisés autour de node.js valide cette tendance et son implication à tous niveaux.

Les architectures se centralisent autour des logiciels et de l’applicatif plutôt que de l’infrastructure. La tendance est aux microservices et au déploiement simplifié et automatisé.

La facilité d’utilisation des applications notamment à travers le mobile est une priorité. La conception doit être le plus souvent orientée mobile, aussi bien techniquement que graphiquement/ergonomiquement.

Pour terminer, 2016 c’est aussi la fin de support pour IE8 9 et 10. On peut en déduire que l’écosystème autour du web progresse petit à petit vers une base commune qui se veut saine, autour de standards qui évoluent et qui tendent à se stabiliser malgré l’impression de chaos.

 

Notes:
1. le transpilage peut s’apparenter à une forme de compilation. Il s’agit plus précisément d’une transformation de code vers un niveau d’abstraction similaire ( javascript ES6 vers javascript ES5 , tandis que la compilation fera par exemple C vers assembleur )
2. notamment les Map ce qui évite de passer par des objets systématiquement
3. Parmi les fonctionnalités en discussion on retrouve de nouvelles méthodes pour travailler sur l’asynchrone (async , await) , décorateurs, l’opérateur de décomposition ( spread ) sur les objets ou encore une notation spécifique pour l’opérateur d’exponentielle
4. puisqu’on évoque flux, je vous conseille de jeter un œil sur son implémentation simplifiée Redux et cette liste de ressources 
5. voir au dela avec typescript
6. par exemple si on prend le cas de React, on peut très bien avec le même composant effectuer le rendu dans le DOM d’un navigateur ou dans un fichier à travers nodejs
7. Pensez-y ! Dans excel on place des formules sur des cases qui dépendent d’autres cases. Lorsque la valeur de certaines cases faisant partie du résultat change, le total est automatiquement mis à jour. C’est de la programmation réactive
8. live-reload , utilisation d’outils connus, accès à npm
9. Grace aux nouvelles méthodes exposées plus haut qui mélangent programmation immutable, fonctionnelle, reactive et la notion de flux unidirectionnel de donnée (ouf), il devient possible d’effectuer ce qu’on appel le hot reload. Cela consiste à recharger des parties (composants graphiques par exemple) de son application à chaud tout en conservant l’état
10. le bundle peut s’apparenter à une forme de fichier compilé, il s’agit le plus souvent de concaténer les différents fichiers sources de l’application pour n’en faire qu’un seul fichier. On peut alors y appliquer des transformations par l’intermédiaire de transpileur
11. JSX, optimisations pour React, simplication et minification de code, typescript …
12. d’un point de vue offre de service on entends désormais parler de CaaS pour Container-as-a-Service
13. voir automatisables cf déploiement continu : continuous delivery
14. Cette propriété permet de faire des layout sous forme de grille sans passer par un framework. Hélas, elle est encore très peu supportée et nécessite l’activation de flags..
15. notion de feedback
16. facilité d’utilisation ne veut pas dire accessibilité, hélas trop souvent laissée de coté
le transpilage peut s’apparenter à une forme de compilation. Il s’agit plus précisément d’une transformation de code vers un niveau d’abstraction similaire ( javascript ES6 vers javascript ES5 , tandis que la compilation fera par exemple C vers assembleur )
notamment les Map ce qui évite de passer par des objets systématiquement
Parmi les fonctionnalités en discussion on retrouve de nouvelles méthodes pour travailler sur l’asynchrone (async , await) , décorateurs, l’opérateur de décomposition ( spread ) sur les objets ou encore une notation spécifique pour l’opérateur d’exponentielle
puisqu’on évoque flux, je vous conseille de jeter un œil sur son implémentation simplifiée Redux et cette liste de ressources 
voir au dela avec typescript
par exemple si on prend le cas de React, on peut très bien avec le même composant effectuer le rendu dans le DOM d’un navigateur ou dans un fichier à travers nodejs
Pensez-y ! Dans excel on place des formules sur des cases qui dépendent d’autres cases. Lorsque la valeur de certaines cases faisant partie du résultat change, le total est automatiquement mis à jour. C’est de la programmation réactive
live-reload , utilisation d’outils connus, accès à npm
Grace aux nouvelles méthodes exposées plus haut qui mélangent programmation immutable, fonctionnelle, reactive et la notion de flux unidirectionnel de donnée (ouf), il devient possible d’effectuer ce qu’on appel le hot reload. Cela consiste à recharger des parties (composants graphiques par exemple) de son application à chaud tout en conservant l’état
le bundle peut s’apparenter à une forme de fichier compilé, il s’agit le plus souvent de concaténer les différents fichiers sources de l’application pour n’en faire qu’un seul fichier. On peut alors y appliquer des transformations par l’intermédiaire de transpileur
JSX, optimisations pour React, simplication et minification de code, typescript …
d’un point de vue offre de service on entends désormais parler de CaaS pour Container-as-a-Service
voir automatisables cf déploiement continu : continuous delivery
Cette propriété permet de faire des layout sous forme de grille sans passer par un framework. Hélas, elle est encore très peu supportée et nécessite l’activation de flags..
notion de feedback
facilité d’utilisation ne veut pas dire accessibilité, hélas trop souvent laissée de coté

8 Comments

  • Répondre Olivier Troboë |

    Merci beaucoup pour cet article !

    Tu n’as pas parlé des Web Components qui prennent petit à petit leur place dans le paysage du dev web, entre autres avec la v1 de Polymer cette année.
    Il y a aussi les Service Workers qui vont sans doute devenir de plus en plus présents cette année à mon avis :)

    Que penses-tu de ces technos ?

    En tout cas, merci encore pour tes articles, ils sont toujours très pertinents.

    • Répondre maxdow |

      Merci pour le retour :)
      Effectivement je ne parle pas des webcomponents ici car j’ai l’impression que le standard peine à sortir du lot comme une référence et que c’est une tendance qui ne décolle pas beaucoup . C’est surtout par l’implémentation des libs tierces qu’on utilise la notion de composants .

      Pour info je l’évoquais ici : http://maxlab.fr/2015/01/tendances-2015-web-javascript/

      Par rapport aux Services worker je vais préciser en effet je pensais l’avoir mis. Pour moi l’usage direct et immédiat sera sur les notions de progressive webapp.

  • Répondre Nicolas Hugodot |

    Hello, tu ne parles que trop vite de la tendance FP: il serait intéressant de savoir quoi en penser, POO vs FP (dans quel cas, pros/cons), exemples de Clojure, Elixir (l’avenir de Rails?), Elm (qui a inspiré React Flux!), Purescript, etc.? Un grand merci néanmoins pour ce « tableau de bord »!

    • Répondre maxdow |

      Bonjour, merci pour le commentaire. C’est vrai en relisant que je traîne pas sur le sujet i lest même évoqué de loin. Je pense que ça pourrait mériter un article entier et ici ce n’était pas le but puisque l’objectif et de tout survoler. Néanmoins mon ressenti est que cette montée en puissance de la programmation fonctionnelle est une bonne chose. Indépendamment du langage (java aide sur ce concept depuis l’introduction des lambdas par exemple).
      Un super rapide Pro/Cons « opinionated » . L’objet c’est cool si le use case si applique et qu’on à super bien modélisé toute l’application et que cela fonctionne. C’est rarement le cas et la plupart du temps on dérive de la pureté objet, on créé des usines à gaz et pire, par manque de maîtrise, on brise des patterns. Le fonctionnel est finalement plus simple à appliquer ( si on évite les notions des mathématiciens puristes du sujet ) . Je pense qu’il permet surtout de rendre le code plus beau et maintenable/scalable en évitant d’introduire des compléxités cyclomatiques infernales et autres méthodes de + de 500 LOC. Il pousse à penser par composants isolés, ce qui est clairement la tendance de toutes les lib/frameworks qui sortent pour le web aujourd’hui. Il permet aussi une autodocumentation facile puisque multiplier les fonctions/méthodes, offre une opportunité de bien la nommer et aussi de documenter, l’avantage premier est vraiment la qualité du code .

      • Répondre Nicolas Hugodot |

        J’essaie de faire un facebook privé pour familles… avec email todo etc intégré. One stop shop. Entre les JSR165 pour entreprise de Java, très riches, Django en python facile et son Pinax, Ruby on Rails agréable et riche, PHP ou on trouve de tout comme CMS (opensocial, GNUsocial, …) mais j’aime pô PHP sale, le monde chaotique de Node (Meteor, etc) , le front JS (de CoffeeScript à Elm en passant par Typescript, Clojure, Purescript…Brython?) et mon préféré Elixir/Phoenix/Elm mais encore immature… quel bazar! Mieux que des blogs techniques, à la fin, faudrait faire des blogs spécialisés par domaine (webmail, SNS, e-commerce, big data, …): tiens, oui, causer « fonctionnel », d’abord sur le quoi, puis sur le comment… du Functional Product (FP) avant le FP…;)… Bref, je suis paumé…

        • Répondre maxdow |

          Désolé de ma réponse tardive. Oui tu sembles perdu voir noyé dans les milliers de choix possibles. Il faut bien séparer les langages, leurs applications possibles, les concepts ( indépendants des langages mais certains s’en sortent mieux que d’autres suivant les patterns )

          Retourne sur ton besoin, toujours . Ensuite essaye d’identifier les limites techniques potentielles ( volumétrie, contraintes serveur) et les limites de ton équipe de dev ( ou toi même ) . Si tu es plus à l’aise sur une techno, alors même si elle ne colle pas parfaitement au besoin, tu sera toujours plus efficace (attention à ne pas tout faire rentrer non plus dans la même case ).

          Sur les langages et technos, regarde ce qui a une communauté, du passé, du standard ( Elm par exemple ça break souvent ). Si tu es dans les langages hyper stricts ( Elixir/Elm ) tu vas peut être te casser les dents, surtout sur un besoin d’application web.

          Ton besoin doit primer, identifie tes use-cases, ça c’est techno agnostique et tu as la main dessus , la seule contrainte c’est tes idées.

          Ensuite si vraiment tu ne t’en sors pas n’hésite pas te faire guider.

So, what do you think ?