« Je ne toucherai jamais aux sites web, je suis un développeur d’applications ». Ceci est ce que je pensais naïvement avant d’entrer dans le marché du travail. Le web passe lentement du Web 2.0 dans lequel nous avions des sites web vers des applications web dans lesquelles l’utilisateur contrôle toutes les données sans connaissances web. Ceci m’a amené à accepter le web et de m’y intégrer et confronter les nombreux défis reliés à son développement.

1 : La recherche de compatibilité

Commençons par un des grands problèmes actuels, celui de la compatibilité de tous les outils qu’il est possible d’utiliser. L’expérience utilisateur du web a beaucoup changée depuis les dernières années. Les nombreuses itérations du langage HTML, CSS et Javascript permettent aux développeurs de créer des interfaces graphiques de plus en plus intuitives et facile à utiliser. Cependant, ce n’est pas tous les navigateurs qui suivent le train, et encore moins tous les utilisateurs. Ceux qui suivent ce train veulent les dernières fonctionnalités à leur plein potentiel mais il est malheureusement impossible de l’implémenter car l’utilisateur d’internet explorer 11 sur son vieux Windows 7 pourrait avoir une des expériences les plus désagréables en visitant le même site. Les développeurs sont donc obligés de consulter des ressources comme « Can I use » (https://caniuse.com) afin de vérifier si l’effet qu’ils désirent utiliser pour leur site n’est pas trop avant-gardiste et ainsi offrir une bonne expérience à tous les utilisateurs.

2 : Le poids du site

Le graphiste a finalisé la maquette du prochain site et elle est magnifique. L’intégrateur donne vie a la maquette en tant que site web. Le développeur backend dynamise la page. L’utilisateur (testeur) vient pour vérifier si le tout est parfait pour finalement remarquer que le site est lent. Que s’est-t-il passé ? Plusieurs facteurs sont en jeu. Les images peuvent être trop lourdes, le html ou les scripts javascript peuvent être mal optimisés ou ils peuvent tout simplement être trop nombreux, le code peut être mal optimisé. Tout ceci peut jouer sur le poids d’un site et malheureusement aucun de ces problèmes ne peut être totalement réglé. Le client peut demander une image d’une certaine qualité pour laquelle il sera difficile de faire le compromis entre poids et résolution de l’image. Les scripts peuvent être lourds car l’effet désiré l’exige et de même pour le code « backend ». Faire la part entre ce qui est performant et beau est un défi qui doit être relevé un site à la fois, surtout dans cette ère mobile.

3 : Les choix de Framework

Le projet a été décidé. Les fonctionnalités de l’application ont étés définies. L’équipe se prépare à choisir le Framework sur lequel ceci va fonctionner. Il est facile de dire à une petite équipe de faire du code personnalisé pour tout ce qu’ils font. Travailler avec un Framework offre de bons avantages : une méthodologie de travail pensée, une communauté qui cherche à rendre leurs outils de plus en plus sécuritaires et performants et des outils déjà adaptés à faire certaines tâches. Chaque Framework a ses avantages et désavantages et amène toute l’équipe à faire face à des défis sur lesquels ils n’auraient pas nécessairement eu à faire face. Le protocole AMP (Accelerated Mobile Pages), par exemple, permet d’accélérer grandement la vitesse de chargement d’un site web, mais pour atteindre cette vitesse, il faudra se restreindre aux « carré de sable » auquel ce Framework donne accès. Choisir les bons outils peut être déterminant au niveau du développement de l’application en facilitant la vie des développeurs et utilisateurs, mais un mauvais choix peut se retourner contre l’équipe après qu’une grande partie du développement ait été accomplie.

4 : La documentation, ou le manque de documentation

Un défi qui est constant lors du développement d’applications est le manque de documentation. Ce défi est amplifié de façon importante lorsqu’on travaille avec différents Framework, outils et langues de programmation « libres de droits ». Les communautés reliées aux différents modules peuvent être davantage concentrées sur le développement du logiciel que sur la documentation concernant son utilisation. Ceci mène à plusieurs heures de recherches ou d’expérimentations afin d’utiliser une fonctionnalité particulière, mais souvent nécessaire à l’effet convoité.

5 : Javascript

On ne peut parler du web sans parler de Javascript. Il est présent dans tous les navigateurs et nous permet d’accomplir de beaux effets. Il est facile de tomber dans des pièges en l’utilisant à outrance car il est très facile d’utilisation. Les grandes erreurs viennent principalement lorsque qu’il y a beaucoup de traitement à faire et qu’il y a une suite d’actions qui n’a pas de réel encrage. Ceci peut créer des états de pages qui deviennent irrécupérables. Le bogue pouvant être mineur est souvent imperceptible au premier coup d’œil. De plus, certaines fonctions Javascript fonctionnent peuvent interagir avec les valeurs par défaut du navigateur sans notification et peuvent complètement changer le comportement d’une fonctionnalité. Pour ajouter à ceci, les développeurs d’un même lieu de travail ont souvent une configuration similaire rendant ce problème encore plus difficile à détecter. Plusieurs sites migrent vers un environnement Javascript (comme par exemple Node.js, https://nodejs.org/) qui peut demander beaucoup d’adaptation si une personne n’a jamais travaillée avec ce type d’environnement. Javascript est un outil performant, les développeurs doivent simplement demeurer vigilants dans l’utilisation qu’ils en font.

6 : Les scripts polyvalents naissent de quelque part

Lorsqu’une équipe travaille sur plusieurs sites, il est possible qu’elle se crée des outils pour aider le développement de ceux-ci. Les outils, une fois créés, ont tendance à être beaucoup utilisés. Malheureusement, avec le temps, l’équipe peut être tellement habituée de les utiliser qu’elle ne se rend pas compte qu’elle l’utilise comme un marteau doré et se rend la vie plus compliquée. Le défi à relever lors de la création de ces outils est leur facilité d’utilisation et l’identification de leur « scope ». Ils doivent être très performants dans le contexte du travail à exécuter, sans nécessairement perdre la raison d’être de leur création. Ceci peut être difficile considérant qu’il est facile de tomber dans le panneau car il ne manque que deux pas afin d’en faire un marteau d’or.

7 : La sécurité

La sécurité du web est l’un des plus grands problèmes d’un développeur. Il est facile de faire une petite erreur qui peut affecter la vulnérabilité. Heureusement, plusieurs Framework donnent une méthode sécuritaire d’implémenter de nouvelles fonctionnalités. Il est donc primordial lors de l’ajout d’une fonctionnalité de se demander si, en faisant ceci, on ne vient pas d’ouvrir la porte à quelqu’un de mal intentionné. Les données collectées sont souvent très importantes pour les compagnies et la clientèle est très soucieuse de la sécurité de leurs informations.

8 : L’évolution de l’application

Le logiciel final n’est presque jamais identique à ce qui était originalement prévu au début d’un projet, car plusieurs changements apparaissent habituellement lors de la réalisation d’un projet. Il est important de comprendre quel type de produit le client demande. Si la planification du logiciel ne contient rien par rapport à la mise à jour du projet, l’équipe sera surprise par les limites imposées (à moins d’y mettre des heures additionnelles de développement). Ce point contient en fait deux défis : la prévision des demandes du clients, et la mise en place d’architectures permettant d’être flexibles à des demandes additionnelles. Il est impossible d’être dans la tête du client et il peut être difficile de juger si une architecture est nécessaire ou si l’implémenter va surcharger le projet.

9 : L’apport du backend sur l’expérience utilisateur (user experience, ou UX)

Une grande architecture amène d’autres types de défis à l’équipe, comme celui de comment afficher les informations dans le backend du site afin que celui-ci ne soit pas juste plaisant à utiliser en tant qu’utilisateur mais aussi en tant qu’administrateur. Est-il mieux de subdiviser les informations, les présenter telles qu’elles sont vues par l’utilisateur, ou encore les regrouper avec des relations parent-enfants ? Ceci doit être pensé avant de l’implémenter, autrement tout sera à recommencer pour le développeur backend. Ceci semble simple a priori, mais en fonction de la nature des données, cette étape peut être laborieuse.

10: Faciliter le référencement

L’un des buts les plus importants de l’équipe de PUBInteractive est d’obtenir le meilleur référencement possible pour un site web dans les moteurs de recherche. Ceci fait en sorte que l’équipe de développement collabore souvent avec celle des stratèges en marketing numérique afin d’obtenir la meilleure performance en termes de référencement. Ce détail change beaucoup l’approche que nous avons avec les applications web, changeant l’expérience backend et frontend. L’équilibre entre le frontend, le backend, le référencement et la performance est le défi quotidien de l’équipe de développement.