Les étapes clés de la maintenance d’un site web

Il existe de nombreux risques liés à la non-maintenance d’un site Internet. Les risques les plus courants incluent :

  1. Problèmes de sécurité : Si vous ne mettez pas à jour régulièrement les logiciels et les plugins utilisés sur le site, vous prenez le risque d’être exposé à des vulnérabilités de sécurité qui pourraient être exploitées par des pirates informatiques. Cela pourrait entraîner des pertes de données, des fraudes ou des dommages importants à votre réputation. Votre site Internet peut également devenir inaccessible s’il a été piraté et perdre le référencement que vous avez acquis jusqu’à présent.
  2. Problèmes de performance : Si vous ne maintenez pas le code et les scripts utilisés sur le site, vous prenez le risque de voir les performances de votre site se détériorer au fil du temps. Cela peut entraîner des temps de chargement plus longs, des erreurs de script et des problèmes de compatibilité avec les navigateurs.
  3. Problèmes de contenu : Si vous ne mettez pas à jour régulièrement le contenu de votre site, vous prenez le risque de voir votre site devenir obsolète et peu attractif pour les utilisateurs. Les informations obsolètes, les liens brisés et les erreurs de frappe peuvent entraîner des problèmes de fiabilité et de crédibilité pour votre site.
  4. Problèmes d’accessibilité : Si votre site n’est plus compatible avec les dernières technologies et les derniers standards, vous prenez le risque de voir votre site devenir inaccessible pour certains utilisateurs. Cela peut entraîner des pertes de trafic et des problèmes d’expérience utilisateur.

Il est donc important de mettre en place une planification régulière pour la maintenance, de s’assurer que les personnes responsables disposent des compétences et des outils nécessaires, de s’assurer que le site est sécurisé et protégé contre les menaces courantes. En négligeant la maintenance de votre site, vous prenez le risque de voir votre site devenir obsolète et peu fiable pour les utilisateurs, et de subir des pertes importantes en termes de trafic, de conversions et de revenus.

Dans la suite de cet article, nous allons examiner ensemble les différentes formes de maintenance d’un site Internet, notamment la maintenance préventive, la maintenance corrective et la maintenance évolutive, ainsi que les outils et techniques utilisés pour chacune d’entre elles.

La maintenance préventive

La maintenance préventive est une forme de maintenance qui vise à éviter les problèmes avant qu’ils ne surviennent. Elle comprend des tâches telles que la surveillance des performances du site, la vérification des mises à jour de sécurité et la vérification régulière des sauvegardes de site. En effectuant ces tâches régulièrement, vous pouvez détecter les problèmes potentiels avant qu’ils ne causent des dommages importants et les résoudre rapidement.

La surveillance des performances du site est l’une des tâches clés de la maintenance préventive. Il est important de surveiller les performances du site, comme les temps de chargement, la disponibilité et la bande passante, pour détecter les problèmes potentiels. Il existe des outils de surveillance automatisés qui peuvent aider à cette étape, tels que des services de surveillance comme Google Analytics, qui fournissent des informations sur les performances du site, les visiteurs et les sources de trafic, ou encore Uptime Robot pour surveiller la disponibilité du site.

La vérification des mises à jour de sécurité est également une tâche importante de la maintenance préventive. Il est important de s’assurer que le site est protégé contre les vulnérabilités courantes, telles que les attaques par déni de service, les injections SQL et les vols d’identité. Il est important de mettre en place des mesures de sécurité appropriées, telles que des pare-feux, des certificats SSL et des mots de passe forts, et de les mettre à jour régulièrement pour s’assurer qu’elles restent efficaces. Il est également important de vérifier régulièrement les mises à jour de sécurité pour les logiciels utilisés sur le site, comme le système de gestion de contenu (CMS), les extensions/librairies et le serveur web, pour s’assurer que les vulnérabilités connues sont corrigées.

La vérification régulière des sauvegardes du site est également une tâche qui concerne la maintenance préventive. Il est important de sauvegarder régulièrement le site et de vérifier que les sauvegardes sont valides et peuvent être restaurées en cas de besoin. Il est également important de stocker les sauvegardes dans un emplacement sécurisé et de les protéger contre les menaces courantes, comme les virus et les attaques de hackers. Il est nécessaire de planifier des tests de restauration réguliers pour s’assurer que les sauvegardes sont valides et peuvent être utilisées en cas de besoin.

La maintenance corrective

La maintenance corrective est une forme de maintenance qui vise à corriger les problèmes qui sont déjà survenus. Elle comprend des tâches telles que la résolution des problèmes techniques, la mise à jour des logiciels et la réparation de contenu. En effectuant ces tâches rapidement et efficacement, vous pouvez minimiser les impacts sur les utilisateurs et les performances du site.

La résolution des problèmes techniques est l’une des tâches clés de la maintenance corrective. Il peut s’agir de problèmes tels que des erreurs de code ou des bugs, des problèmes de configuration de serveur, ou des problèmes de compatibilité avec les navigateurs. Il est important de disposer des compétences et des outils nécessaires pour identifier et résoudre rapidement ces problèmes pour minimiser les impacts sur les utilisateurs et les performances du site.

La mise à jour des logiciels est également une tâche importante de la maintenance corrective. Il est important de s’assurer que les logiciels utilisés sur le site, comme le serveur web et les extensions, sont à jour pour bénéficier des dernières fonctionnalités et des correctifs de sécurité. Il est également important de tester ces mises à jour avant de les appliquer sur le site en production pour s’assurer qu’elles fonctionnent correctement.

La réparation de contenu concerne également la maintenance corrective. Il peut s’agir de corriger des erreurs de frappe, des informations obsolètes ou des liens brisés. Il est important de disposer d’un système de gestion de contenu efficace et de mettre en place des processus pour vérifier régulièrement le contenu et corriger les erreurs. Chez Wavemind, nous avons pour habitude d’utiliser des outils comme Screaming Frog pour analyser la structure d’un site et détecter rapidement s’il y a des liens brisés ou des pages inaccessibles.

La maintenance évolutive

La maintenance évolutive est une forme de maintenance qui vise à améliorer les performances et les fonctionnalités du site. Elle comprend des tâches telles que l’ajout de nouvelles fonctionnalités, l’optimisation des performances et la refonte de design. En effectuant ces tâches régulièrement, vous pouvez améliorer l’expérience utilisateur et maintenir l’intérêt des utilisateurs pour le site.

L’ajout de nouvelles fonctionnalités est l’une des tâches clés de la maintenance évolutive. Il peut s’agir de nouvelles fonctionnalités liées au contenu, telles que la mise en place de nouveaux articles de blog, de nouvelles pages de produits ou de nouveaux outils interactifs. Il peut également s’agir de nouvelles fonctionnalités liées à l’expérience utilisateur, comme l’ajout de filtres de recherche avancés, de systèmes de recommandation de contenu ou de fonctionnalités de réseaux sociaux. Il est nécessaire de planifier régulièrement l’ajout de nouvelles fonctionnalités et contenus pour maintenir l’intérêt des utilisateurs pour le site. Il y a également de nouvelles normes de confidentialité qui peuvent entrer en vigueur, comme la RGPD en Europe ou encore de nouvelles règles d’accessibilités, comme les technologies de réalité virtuelle ou les assistants vocaux. Il est important de s’adapter aux nouveaux standards et aux nouvelles technologies pour rester compétitif sur le marché.

L’optimisation des performances est également une tâche importante de la maintenance évolutive. Il est indispensable de continuer à optimiser régulièrement le site pour améliorer les temps de chargement et les performances globales. Il peut s’agir d’optimiser les images, d’optimiser le code ou d’utiliser des CDN pour améliorer la vitesse de chargement des pages. Il est important de surveiller les performances du site pour détecter les problèmes potentiels et de les résoudre rapidement. Nous avons pour habitude de travailler avec des outils comme Google PageSpeed Insights ou GT Metrix pour analyser les temps de chargements, ou encore Google Search Console pour surveiller les performances d’indexation sur les moteurs de recherche.

La refonte de design peut également concerner la maintenance évolutive. Il est nécessaire de maintenir un design moderne et attrayant pour les utilisateurs, et de le mettre à jour régulièrement pour suivre les tendances actuelles. Il peut s’agir de modifications de mise en page, de modifications de couleurs ou de polices, ou de modifications plus importantes telles qu’une refonte complète du design. Il est important de planifier régulièrement des mises à jour de design pour maintenir l’intérêt des utilisateurs pour le site.

Conclusion

Chacune de ces formes de maintenance a des objectifs et des tâches spécifiques, mais toutes ont pour but de garantir la disponibilité, la performance et la sécurité du site, ainsi que de maintenir à jour son contenu et sa présentation. Il est important de mettre en place une planification pour la maintenance, de s’assurer que les personnes responsables disposent des compétences et des outils nécessaires, et de s’assurer que le site est sécurisé et protégé contre les menaces courantes. En suivant ces étapes, vous pouvez vous assurer que votre site restera performant, sécurisé et attractif pour les utilisateurs.

Chez Wavemind, nous proposons des prestations de maintenance de site Internet adaptées à vos besoins. Nous pouvons vous aider à mettre en place une planification régulière pour la maintenance, à sécuriser votre site, à optimiser les performances et à améliorer l’expérience utilisateur. Nous disposons également d’une équipe d’experts en développement web et en sécurité pour résoudre tous les problèmes qui pourraient survenir. Pour en savoir plus sur nos prestations de maintenance, nous vous invitons à télécharger notre brochure détaillant les prestations proposées par Wavemind. Vous y trouverez des informations détaillées sur les différentes formes de maintenance que nous proposons, ainsi qu’une liste détaillée de nos prestations. N’hésitez pas à nous contacter si vous avez des questions ou pour discuter de vos besoins en matière de maintenance de site Internet. Nous serons ravis de vous aider à maintenir votre site en bonne santé et de vous garantir une expérience utilisateur optimale.

MDW22 : Wavemind remporte les catégories Technologie et Mobile

Le projet pour Unisanté MedAl-suite, réalisé par l’agence Wavemind, est une solution (algorithme médical) qui permet d’assister tout clinicien à distance afin qu’il puisse poser correctement un diagnostic en fonction des symptômes et, ainsi, d’éviter la sur-prescription d’antibiotiques.

ICT – Doubles victoires de Wavemind au Meilleur du Web 2022

L’édition 2022 du Meilleur du Web a récompensé les meilleurs projets web romands de l’année évalués par des jurys d’experts. Deux réalisations ont été doublement primées parmi les candidats, dans lesquels figuraient de nombreux projets dans le domaine de la santé et du bien-être.

On soigne des enfants grâce aux algorithmes médicaux.

La medAL-Suite

Tout a commencé lors d’un hackathon sur le thème de l’innovation de la santé en avril 2017. Unisanté (anciennement Policlinique Médicale Universitaire de Lausanne) a mis au concours ce qui devait être le prototype de la medAL-suite (algorithmes médicaux) actuelle. En effet, l’objectif était de pouvoir naviguer dans un algorithme médical en répondant aux questions au fur et à mesure. Les instructions étaient alors sous forme de papier que nous avons dû retranscrire dans un format digital. Après 36 heures consécutives de travail acharné sur ce marathon de l’innovation, nous avons su mettre sur pied un prototype fonctionnel d’algorithme médical digitalisé. Cette performance a attiré l’attention de Valérie d’Acremont, médecin chez Unisanté, qui a dès lors voulu collaborer avec nous pour ce projet. Elle aura un rôle décisionnel et de coordinatrice sur la réalisation de la medAL-suite.

Remise du prix concours Arkathon 2017

Avant de démarrer le développement de la medAL-suite, un prototype a été réalisé par nos soins afin de confirmer la faisabilité du concept. Pour cela, nous avons automatisé la lecture d’un algorithme sous forme de fichier JSON afin de simuler une consultation dynamique. Afin de partir d’une base saine, nous avons utilisé l’algorithme de FeverTravel qui est utilisé pour la détection des maladies tropicales. Nous avons dès lors pu confirmer avec Unisanté que nous allions dans la bonne direction.

Quand le prototype a su faire ses preuves, il était dès lors question de créer la medAL-suite (algorithmes médicaux) pour aller plus loin. Ainsi, l’application permettant de naviguer entre les questions à poser au patient est devenue medAL-reader. Aussi, le fichier, précédemment fait à la main, serait généré par medAL-creator, une application permettant de définir les algorithmes médicaux sous forme de diagrammes d’activité qui seraient finalement retranscrits dans un fichier calculé par l’application. Puis par la suite, les autres applications de la medAL-suite sont apparues pour répondre aux besoins d’Unisanté et de ses partenaires.

Schéma du processus de la medAL-suite étapes par lesquels on passe

La medAL-suite est une solution qui cherche à répondre à une problématique présente dans différents pays en voie de développement. En effet, dans les centres de soin de ces pays, le personnel médical ne dispose pas des ressources matérielles ni des connaissances nécessaires pour établir correctement les diagnostics précis de tous ses patients, ce qui engendre souvent une prescription inadéquate d’antibiotiques. Cela a pour conséquence que les enfants développent des résistances à ces médicaments, ce qui les rendra moins efficaces dans le futur quand ils seront réellement nécessaires. Ce projet vise en particulier les consultations sur les enfants de 0 à 15 ans puisqu’ils représentent la population la plus touchée par la résistance aux antibiotiques.

Afin de résoudre cette problématique, la medAL-suite permet à des médecins et professionnels de la santé de définir des algorithmes médicaux d’une part, pour ensuite les compiler sur tablette. Grâce aux instructions envoyées aux tablettes à disposition du personnel médical sur place, ceux-ci sauront quelles questions poser à quel moment et seront aiguillés sur les diagnostics à poser lors des consultations. De plus, en sélectionnant le bon diagnostic proposé par la tablette, celle-ci suggérera aux cliniciens des médicaments à prescrire avec leurs dosages en fonction des variables du patient.

medAL-creator – Le créateur d’algorithmes médicaux

La solution se présente sous la forme d’une application web qui a été développée avec du Ruby on Rails et du React JS. Elle permet aux spécialistes de la santé de créer des algorithmes médicaux propres aux différents pays participant au projet.

La première étape lors de la création d’un algorithme médical est de définir quelles seront les questions qui devront être posées durant la consultation. Celles-ci peuvent être des symptômes à analyser, des mesures à réaliser ou encore des tests cliniques.

Exemple d'un algorithme médicale

Une fois les différentes questions définies, les médecins pourront créer les éléments qui représenteront les différents traitements possibles, que ce soit sous forme de médicament ou de prise en charge pour le patient, afin de proposer les meilleurs soins selon le(s) diagnostic(s) posé(s) par l’algorithme.

Une fois que tous les éléments ont été créés, il s’agit de définir les logiques qui relient les questions entre elles. Nous avons développé une interface simple et intuitive qui permet de créer des relations entre les questions sous forme de boxes et de tirer des traits entre elles pour créer une logique médicale complexe.

Finalement, lorsque la logique médicale aura été définie pour l’ensemble des diagnostics qui doivent être traités, les médecins pourront alors attribuer l’algorithme à un pays en particulier. Une fois l’attribution faite, nous compilons l’ensemble de la logique dans un fichier qui sera envoyé à medAL-reader afin de créer des consultations sur le terrain.

medAL-reader – Le lecteur algorithmes médicaux

Cette solution se présente sous la forme d’une application mobile, développée en React Native et adaptée pour les tablettes. Elle a pour objectif de permettre au clinicien de créer des consultations complètes et de calculer quelles sont les questions pertinentes à poser de manière dynamique à chaque saisie de données. Tous ces calculs sont basés sur la logique définie dans medAL-creator, qui a été transmise via le fichier compilé. Grâce à ce fichier, medAL-reader sait quelles sont les questions à poser et les variables à prélever afin d’avancer dans la consultation.

Print screen de l'application medAL-reader utilisation de celle-ci

En interprétant les réponses saisies par le clinicien, elle avance dans les logiques des diagnostics qui n’ont pas encore été écartés jusqu’à ce qu’ils le soient ou, au contraire, qu’ils soient confirmés. Lorsque toutes les questions adéquates ont été posées, l’application va proposer au clinicien quels sont les diagnostics les plus plausibles. Le clinicien aura alors le choix d’approuver ou au contraire d’exclure chacune des propositions.

Suite à cela, medAL-reader va pouvoir déterminer quel traitement serait adéquat à la situation, évidemment en évitant tout antibiotique qui ne serait pas nécessaire, ceci étant un des objectifs principaux du projet.

medAL-hub et medAL-data

Les applications hub et data font aussi partie de la medAL-suite et sont étroitement liées à reader et creator mais n’ont été que partiellement développées chez Wavemind. Toutefois, nous avons activement participé, en collaboration avec l’équipe technique d’Unisanté, à l’analyse et la conception technique de ces produits. En effet, il existe beaucoup d’interactions avec ces deux applications qui sont essentielles au fonctionnement global de la solution.

La première interaction concerne le hub, puisqu’il s’occupe de synchroniser plusieurs reader entre eux, dans le cas où plusieurs cliniciens travaillent en même temps dans un même dispensaire. Dans ce cas, il peut y avoir une répartition des rôles, qui serait gérée par hub en permettant de commencer un cas sur une tablette et de le rouvrir sur une autre.
Afin d’exploiter au mieux le hub, reader utilise une interface de communication sur son API pour donner aux utilisateurs accès aux fonctionnalités de partage entre plusieurs reader.

Finalement, data sert à centraliser l’ensemble des cas médicaux établis dans chaque consultation pour un pays spécifique. Chaque pays possède son instance de data afin d’éviter de mélanger les données sensibles. L’application donne ensuite accès à une interface de contrôle des informations saisies et enclenche des processus d’analyse et regroupement des données.

Conclusion

Nous avons énormément de chance de contribuer à un projet d’une telle envergure, qui plus est sur un sujet médical aussi complexe. Il est vrai que ce projet est incontestablement un grand challenge et toute l’équipe a pu affûter ses compétences au fil de ces années de collaboration. Les compétences techniques ont, évidemment, évolué mais aussi la perception de la médecine moderne qui se digitalise de plus en plus. Enfin, amener son expertise sur un sujet humanitaire nous tient tous à cœur et l’opportunité de faire partie des acteurs de ce projet représente pour nous une réelle fierté aussi bien personnelle que professionnelle.

Liens

Code medAL-reader

Code medal-creator

Site internet de l’étude

L’expérience du bootcamp en développement Web

Qui suis-je ?

Je m’appelle Sinan Ucak et je suis développeur full-stack chez Wavemind depuis août 2020. Ingénieur mécanique de formation, j’ai voulu changer de métier pour trouver une voie qui me correspondait plus. Du coup, j’ai testé le bootcamp en développement web.

Flashback

À l’époque (parce que je suis hyper vieux 👴), quand le moment de choisir mon avenir professionnel approchait, je n’avais vraiment pas d’idée de la voie que je voulais prendre. Les choix étaient trop variés, allant du droit à l’ingénierie, de la médecine à l’économie. Autant dire, moi qui suis indécis de nature, j’avais beaucoup de peine à choisir ma voie. Du coup, j’ai choisi la voie de la facilité, la voie de mon père : L’ingénierie mécanique.

Fast forward ⏩ quelques années plus tard, après avoir fait l’expérience de l’ingénierie façon corporate (Excel, PowerPoint et Outlook Engineering), je me rends compte que ce n’est pas ce que je voulais faire jusqu’à la fin de mon existence. C’est ce moment que j’ai recommencé les mêmes reflexions qu’il y a quelques années “Qu’est-ce que je veux faire ?“. J’explore donc toutes les pistes qui se présentent à moi, dans mes recherches, je tombe sur un bootcamp sur le développement web (Le Wagon). Cette formation me promet de me fournir les bases de la programmation et du développement Web, au programme il y avait du Ruby, du Ruby on Rails, du Javascript, du CSS, de la POO et tout un tas d’autres sorcelleries. Après quelques semaines de réflexion (n’oublions pas que je suis un indécis endurci 🤔), je me lance dans l’aventure et m’inscris à « Le Wagon » à Lausanne!

Qu’est-ce qu’un bootcamp ?

Un bootcamp est une formation accélérée souvent dans le domaine de la tech dans mon cas précis il s’agissait du développement web. L’objectif est d’apprendre les bases de la programmation, et du métier de développeur web. Le tout se déroule sur une période très courte : Typiquement quelques mois, et pour le coup le programme que j’ai suivi c’est déroulé sur 9 semaines.

Cette formation est particulièrement destinée à des gens comme moi, qui veulent réorienter leur carrière, mais pas seulement : Il est également idéal pour les entrepreneurs voulant créer leurs propres applications ou aux personnes qui souhaitent simplement complémenter leurs skills avec une base de programmation. Ça crée donc un doux mélange de personnes venant de différents milieux, avec des parcours variés et énormément d’expériences à partager !

Comment ça se passe durant le bootcamp ?

Tous les bootcamps ne sont pas pareils : Les langages proposés, le format du cours, les profs qui y enseignent, et plein d’autres aspects varient d’un bootcamp à un autre. Par contre, ce qui est certain c’est que c’est intense. Comme il y a beaucoup de matière à couvrir en très peu de temps, il n’y a pas une seconde à perdre. La journée se compose d’une partie théorique en entrée, suivi d’une montagne d’exercices pour ancrer les concepts en plat principal et un petit exercice de groupe pour bien terminer la journée. Tout ça accompagné par de très bons profs et une ambiance détendue. En tout cas, moi j’ai kiffé.

Et après ?

Pour ma part, j’avais décidé être développeur. Mon but était de pouvoir coder matin, midi et soir pour continuer à apprendre le métier et gagner de l’expérience dans la programmation. J’ai eu la chance de décrocher un stage directement après ma formation, ici, chez Wavemind 🎉. J’ai été immédiatement plongé dans l’univers du développement web avec des projets concrets. Les compétences et méthodologies acquises lors du bootcamp ont été une base solide pour ma nouvelle vocation : Les bases techniques et la manière d’aborder les problèmes transmises lors de la formation étaient parfaitement adaptées à mon nouveau métier. Les ressources misent à disposition sont aussi très utiles, et me servent encore aujourd’hui, 2 ans après avoir fini le bootcamp.

On m’a demandé si je n’avais pas ressenti le « syndrome de l’imposteur » en sortant de la formation : Perso, je n’ai jamais eu ce sentiment. J’ai commencé une nouvelle carrière depuis le début, donc le passage par des stages et des postes junior en fait partie. J’embête régulièrement mes collègues plus expérimentés avec quelques questions bêtes, mais ça fait également partie de l’expérience à acquérir.

J’ai la chance de pouvoir tirer profit de ma première formation d’ingénieur, et l’intégrer dans ma vie de développeur, donc on ne perd pas forcément toute son expérience d’avant !

Conclusion

Finalement, ce bootcamp m’a permis de me réorienter rapidement et efficacement dans l’univers du développement web. En complétant mes connaissances acquises durant les cours du Wagon avec mon stage chez Wavemind, j’ai très rapidement pu participer au développement de vrais projets et commencer à travailler en tant que développeur full-stack. Aujourd’hui, j’évolue dans un univers qui me correspond mieux, et au sein d’une équipe ultra-motivée !

5 raisons qui font de Ruby un bon choix en 2020

Introduction

Chaque tendance, chaque technologie et même chaque langage de programmation a son pic de popularité qui, un jour ou l’autre, diminuera un peu ou beaucoup (pour ceux qui se souviennent de Google+ ). Si l’on fait des recherches concernant « l’état du langage Ruby » sur Google, nous obtiendrons très probablement de nombreux résultats concernant la baisse de popularité de Ruby ou sa mort présumée.

Selon moi, la vérité est que Ruby se porte bien et reste une bonne technologie à choisir en 2020. Voici 5 raisons qui me font penser ça.

1. Dans le top GitHub !

Il est très peu probable que la santé de notre Ruby soit en danger : il figure toujours parmi les langages de programmation principaux de GitHub en 2019. De plus, de grandes entreprises comme GitHub ou Airbnb utilisent continuellement Ruby (on Rails).

Depuis quelques mois, le géant du cloud computing Amazon a ajouté Ruby à son service de serverless computing (AWS Lambda) au même titre que Java, C#, Python et Node.js, ce qui montre la stabilité du langage. Ruby a peut-être ralenti, mais il est encore en grande forme ! Et ce, notamment grâce à la grande quantité de projets existants qui doivent être maintenus et étendus.

2. La communauté

À l’heure où j’écris ces lignes, Ruby on Rails ne compte pas loin de 4’000 contributeurs sur GitHub. Les mises à jour fréquentes et les nouvelles gems (librairie Ruby) créées par les développeurs de la communauté garantissent que les applications basées sur le framework puissent être développées et livrées plus facilement et plus rapidement. La communauté très active partage régulièrement ses problèmes, bugs et expériences. Avec plus de 300’000 posts sur Stackoverflow, il est peu probable que vous ayez du mal à trouver une solution à un problème que vous rencontrez.

De plus, Ruby est comme un bon vin : il a mûri avec le temps et sa documentation est devenue très complète et lisible tant par les novices que par les développeurs confirmés – un excellent point de départ pour les nouveaux arrivants.

Ruby, ce n’est pas seulement Rails. Il existe d’autres frameworks qui sont très adaptés à d’autres besoins. Des solutions plus légères comme Sinatra ou Hanami et même des frameworks pour des applications basées sur la gestion d’événements gagnent en popularité et améliorent ce que Ruby a à nous offrir.

3. Une évolution constante

Avec des mises à jour en moyenne deux fois par an, les créateurs de Ruby s’assurent que la langue ne meure pas et qu’elle soit en constante évolution. Malgré les problématiques de performance connues, qui ne disparaîtront probablement pas de sitôt en raison de l’architecture de base de Ruby (en particulier sa nature dynamique), la sortie de Ruby 3 en 2020 devrait introduire plusieurs améliorations significatives qui rendront Ruby beaucoup, beaucoup plus performant.

4. Efficace pour les start-ups et le prototypage

Grâce à sa syntaxe simple et intuitive, qui se traduit par une productivité beaucoup plus élevée que d’autres langages, Ruby convient parfaitement aux start-ups ou à toute entreprise qui souhaite fournir (et étendre) des produits logiciels rapidement. Un développement plus rapide se traduit par une mise sur le marché plus rapide et donc un impact économique positif ! Avec cette approche, plus d’argent pourra être investi dans le développement de fonctionnalités supplémentaires, le marketing, etc.

D’autre part, les projets d’envergure peuvent bénéficier de RoR (Ruby on Rails) en l’utilisant comme un outil de prototypage ou un moyen efficace de fournir des solutions de validation de concept. Comme il est relativement facile et bon marché de construire et d’étendre des applications avec Ruby, c’est aussi une excellente option pour construire des outils internes/back-end, où la performance n’est pas une priorité absolue.

Il est également courant d’utiliser Ruby pour des applications de grande ampleur et de haute performance. Cependant, cela nécessite généralement des ingénieurs qui savent comment créer des applications performantes en Ruby, car la vitesse n’est pas intrinsèquement liée à ce langage. De plus, cela peut nécessiter une certaine mise à l’échelle horizontale.

5. Des normes bien en place

Ruby est un langage de programmation mature et une technologie stable qui ne se contente pas d’être « à la mode ». La flexibilité du langage permet aux développeurs d’écrire du mauvais code, et c’est même assez facile ! Il est possible d’obtenir le même résultat de plusieurs façons (on peut même être très créatif ). D’autre part, le langage lui-même permet d’écrire un code beau et très lisible — ce qui est très encouragé par un ensemble de normes et de bonnes pratiques bien établies.

Un tel code, s’il est écrit correctement, peut être facilement compris et maintenu par des développeurs qui ne sont pas à l’origine du code : ce qui améliore encore la stabilité et la maintenabilité de l’ensemble de la solution.

Bonus : Le bonheur des développeurs

Car un top 5 sans un point bonus n’est pas un vrai top 5 !

La vaste quantité de librairies et de ressources, une communauté active et bienveillante, des bonnes pratiques bien établies, une belle syntaxe lisible… Tout cela fait de Ruby un langage de programmation avec lequel il est agréable de travailler : un langage orienté sur le bonheur des développeurs !

Dans la plupart des cas, les développeurs heureux offrent un meilleur rapport qualité-prix à leurs clients. S’il existe d’autres langages qui tentent d’imiter les meilleurs aspects de Ruby (par exemple Crystal), ce sont des technologies encore immatures qui doivent faire leurs preuves dans les environnements de production. Croisons les doigts pour leur succès !

Conclusion

Même en 2020, Ruby reste un excellent choix pour vos besoins de développement ! Il ne fait aucun doute que c’est un langage toujours pertinent et qu’il attire toujours de nouveaux adeptes et développeurs. Par ailleurs, il existe des écoles de code comme Le Wagon qui se base sur la simplicité et la lisibilité de Ruby pour former des développeurs web en un temps record de 9 semaines !

Enfin, il faut garder à l’esprit qu’il n’y a pas de « mauvais » langage de programmation en soi, il n’y a que des langages mal choisis pour des cas d’utilisation particuliers. Donc, si vous pensez que Ruby vous convient, n’hésitez pas, il est toujours parmi les technologies les plus populaires.

Vous souhaitez utiliser Ruby on Rails en 2020 ? Contactez-nous !

Gestion de projets dans une petite équipe

Avant de rentrer dans le vif du sujet, commençons par poser le contexte dans lequel cet article a été rédigé. Vous gérez l’attribution de tâches dans une équipe informatique de 5 personnes. Votre équipe réalise des projets de développement de site web, d’application métier ou mobile, de création de contenu multimédia ou encore de réalisation graphique. Les projets sont de taille variable, ils varient entre quelques semaines jusqu’à plusieurs mois, voire des années.

Ce postulat étant défini la question qui se pose est : comment aborder efficacement le planning de chacun, autrement dit, comment gérer les ressources afin que les projets soient livrés en temps et en heures, veiller à ce que les ressources ne soient pas en surmenage ou en manque de travail. En bref que le projet se déroule bien et que les membres de l’équipe soient satisfaits de leurs conditions de travail.

Si l’on attribue des tâches aux personnes sans vraiment définir une stratégie au préalable, il y a de fortes chances de se retrouver avec un cas tel que décrit dans le schéma ci-dessous.

Figure 1 Exemple d’une mauvaise répartition de projet au sein d’une petite équipe

Voici quelques observations sur le schéma présenté :

  • Certaines personnes sont clairement à la tête de certains projets alors que d’autres errent entre différents projets.
  • Certaines personnes ne participent pas du tout à certains projets, ce qui limite les connaissances métier à un nombre limité de personne.
  • On constate que la mise en route tardive du projet 3 a provoqué l’arrêt de tous les autres projets afin de tenir les délais.
  • L’exemple montré est simple, mais nous constatons déjà que cela peut rapidement être ingérable si le nombre de ressources et/ou de projet venait à augmenter.
  • On constate que le projet 1 a essentiellement concerné une seule personne, si cette dernière venait à être malade ou à quitter l’équipe, aucune autre ressource ne serait à même de reprendre le travail.
  • Ce genre de planification encourage les membres de l’équipe à travailler de manière individuelle et non pas en équipe.

Sur la base de ces observations, voici les principaux problèmes qui surgissent :

  • Égalité de traitement entre les membres de l’équipe certains membres ont le « luxe » de travailler sur un seul projet alors que certains changent régulièrement de contexte.
  • Pas ou peu d’esprit d’équipe, éventuellement la création de binômes.
  • La connaissance des produits est limitée à une ou deux personnes et non pas à l’ensemble de l’équipe.
  • Certaines personnes sont surmenées alors que d’autres sont en manque de travail.
  • Il est difficile de savoir qui travaille sur quoi et d’avoir une vision globale de chaque projet.

Passons en revue les différentes solutions qui s’offrent à vous

1. Chaque personne travaille sur un projet spécifique

Dans cette option, tous les projets avancent parallèlement avec une ressource attribuée à chaque projet. Il sera possible de présenter régulièrement une avancée au client, en contrepartie la date de livraison sera longue pour chaque projet. Ce qui implique que pour chaque projet il faut gérer en parallèle les éléments suivants :

  • La livraison de produits intermédiaires
  • Facturation
  • Séance client
  • La mise en production finale

D’autre part, les ressources travaillent de manière individuelle, il n’y a donc pas d’esprit d’équipe ni de critiques/propositions d’améliorations sur le travail des autres. Finalement, la personne qui aura réalisé le projet sera experte dans son projet, elle sera donc plus productive et décèlera rapidement les causes des bugs, en revanche si cette même personne tombait malade ou venait à quitter votre équipe, il faudra qu’une autre personne acquière toutes ses connaissances.

  • Délais de livraison maximums pour chaque projet
  • Pas de travail collaboratif, pas d’esprit d’équipe
  • Une seule personne possède tout le savoir du projet
  • + Pas de perte de temps pour les changements de contexte
  • + Avancée régulière sur le projet, planification de versions simplifiée

2. Un sprint par projet, alternance de projet

Cette seconde alternative propose de traiter un projet différent dans chaque sprint. Le point fort de cette méthode est que la connaissance du projet est répartie sur l’ensemble de l’équipe. Vous ne dépendrez pas d’une seule personne pour la réalisation d’un projet, n’importe quel membre de l’équipe aura les connaissances sur le fonctionnement de vos produits. De plus, cette stratégie demande une bonne cohésion d’équipe et donc une ambiance de travail agréable. Le fait que tout le monde soit concentré sur un même produit permet d’obtenir plus d’idées, d’avis, de points de vue sur le produit, ce qui résulte sur un résultat de meilleure qualité.

Cependant, le temps entre chaque sprint peut être trop long et donc il y aura toujours un temps de mise en route pour se replonger dans le projet, c’est donc du temps qui est perdu. Ensuite avec une forte charge de travail de manière ponctuelle il est difficile de définir un plan de délivrables intermédiaires. Finalement, au même titre que l’option numéro 1 tous les projets avanceront en parallèle et auront des dates de livraison qui seront temporellement proches, ce qui implique toutes les problématiques décrites précédemment.

  • Temps entre 2 sprints sur le même projet trop long, perte de temps pour se remettre dans le contexte
  • Difficile de planifier les versions de produit
  • Livraison retardée pour tous les produits
  • + La connaissance du projet est répartie sur toute l’équipe
  • + Esprit d’équipe

3. Tous les projets dans un sprint

Cette troisième possibilité est à l’opposé de ce qui est présenté dans la 1ère option. C’est-à-dire qu’au sein du même sprint on va avancer sur tous les projets. Un peu comme si chaque fois qu’une personne termine une tâche elle en piochait une autre aléatoirement dans le backlog. Le bon point de cette méthode est que tous les projets avancent en même temps il est donc possible de régulièrement présenter les avancées aux clients, malheureusement si la quantité de projets devient trop importante le travail accompli chaque semaine sur chaque projet est minime.

D’un point de vue de la spécification, vous devrez être irréprochable, étant donné qu’il faudra fractionner les projets de sorte qu’ils s’adaptent à la taille des sprints, les tâches seront beaucoup plus courtes et donc plus précises. Cela demande donc du travail en amont pour planifier le travail des ressources. Comme au point précédent, dans ce cas de figure la connaissance des projets sera répartie sur l’ensemble des membres de l’équipe. Pour clôturer ce chapitre, selon moi le plus grand défaut que vous allez rencontrer avec cette méthode est que les membres de votre équipe vont devoir alterner d’un projet à l’autre plusieurs fois durant le sprint et donc à chaque nouvelle tâche, il y aura un temps de mise en contexte qui peut faire diminuer la productivité du groupe.

  • Nécessite beaucoup de détails dans la spécification des tâches
  • Risque de confusion entre les projets
  • Avancée dans les différents projets minimes
  • + Avancée régulière sur tous les projets
  • + Esprit d’équipe
  • + L’ensemble de l’équipe a les connaissances sur les différents projets

4. Sérialiser les projets, un projet à la fois

La dernière approche est selon moi la plus efficace, d’un point de vue de la gestion de ressources, il s’agit de traiter les projets les uns après les autres. Votre équipe s’investit entièrement dans un projet jusqu’à ce qu’il soit terminé, puis passe au projet suivant. On n’en retrouve pas les différents défauts mentionnés dans les alternatives précédentes, c’est-à-dire la perte de temps due au changement de contexte, la connaissance du produit limité à une partie de l’équipe, temps de livraison total long, etc. Une des conditions pour que le développement de vos solutions se déroule sans accroc est une bonne cohésion au sein de l’équipe, les conflits peuvent parasiter la productivité.

Malheureusement, cette solution n’est pas toujours aisée à mettre en place dans un environnement concret. En effet, dans la réalité il se peut que vous attendiez des informations d’un chef de produit externe qui pourrait bloquer votre équipe.

  • Requiert une bonne cohésion d’équipe
  • Difficilement applicable concrètement
  • + Pas de perte de temps dû au changement de contexte
  • + Connaissance répartie sur l’ensemble de l’équipe
  • + Les projets sont livrés rapidement

Conclusion

Chacune des solutions citées a ses avantages et ses inconvénients, c’est à vous de définir laquelle est la plus adaptée à votre domaine d’activité et aux compétences de votre équipe. Évidemment dans la réalité rien n’est jamais soit blanc soit noir, il faut savoir trouver le juste milieu. En plus de ça, il y a toujours des évènements externes qui viendront perturber le déroulement de vos journées. Dans le cas où vous auriez des approches différentes, ou si vous avez tenté d’appliquer une des méthodes présentées c’est avec plaisir que nous accueillerons vos expériences dans les commentaires.