Rechercher
Fermer ce champ de recherche.

Le blog d’une Scop d’informatique qui trace sa route entre réussite économique et valeurs coopératives.

Le travail d’un développeur web à Alma

Quand on entend "développeur web" on pense souvent au développement de sites internet. Ce n'est pas de cela dont il est question ici. Pour préparer l'avenir et lancer de nouvelles applications en ligne au sein de l'activité "Logiciels CFAO" d'Alma, l’équipe R&D a commencé à travailler à la réalisation de services web il y a 3 ans. Un poste de développeur web a été ouvert en 2016. Benoit, l'heureux élu, explique en quoi consiste son travail et les contraintes du développement web dans le contexte des applications d'Alma destinées à l'industrie.

Disclaimer : cet article ne parlera pas des Scop et comporte des passages techniques (au moins 6A+) 😉

Cette ouverture vers les technologies web s’est faite progressivement. Nous avons d’abord choisi de propulser dans les nuages notre algorithme d’imbrication automatique pour la découpe. L’idée était de se donner les moyens de réfléchir à de nouveaux modes de commercialisation (abonnement, paiement à l’usage) et de bénéficier des avantages technique du cloud. Dorénavant, les mises à jour sont transparentes pour les clients qui utilisent ce produit, et l’intégration qu’ils doivent réaliser pour l’utiliser est quasi nulle.

Dans un second temps, nous avons ré-écrit notre application de démonstration d’imbrication automatique à usage commercial. Un prospect peut maintenant en quelques clics juger par lui même de la qualité de notre algorithme directement depuis son navigateur web. Cette ré-écriture a permis de s’affranchir des contraintes d’installation et de configuration de la précédente application de démonstration. C’était un réel test pour nous, et l’on peut dire aujourd’hui que c’est un franc succès avec près de 20 000 utilisations et 1 000 prospects enregistrés en un an.

Les applications web répondent au besoin d’outils plus réactifs et collaboratifs de nos utilisateurs. Ces attentes nous obligent à concevoir nos applications pour répondre aux contraintes qui en découlent.

Contraintes

L’un des aspects majeurs d’une application web est sa capacité à être toujours disponible. Celle-ci peut être menacée à plusieurs occasions. Lors d’un pic d’utilisation, par exemple, si nos utilisateurs ont tous décidé en même temps que, au retour de vacances, c’est le bon moment pour tester notre produit, ou si notre serveur a un coup de chaud et qu’alors, pour se donner un peu d’air, il redémarre sans prévenir. Pire encore, après une mise à jour mal testée (mais ça n’arrive jamais 😉 )

Pour éviter au maximum les pannes serveur, nous utilisons les services d’un fournisseur d’hébergement qui répond à nos exigences de disponibilité. De plus nous mettons en place une infrastructure redondée (au minimum dupliquée) pour gérer les éventuels pannes de notre fournisseur et crashs applicatifs. Les pics de charge sont gérés simplement en démarrant de nouveaux serveurs pour disposer de plus de puissance lorsque c’est nécessaire. Les bugs applicatifs sont évités en testant notre code au maximum avant une mise à jour. Nous disposons aussi d’une plateforme d’analyse des bugs en temps réel notifiée par notre application quand quelque chose d’anormal se produit. En bref, en 2018, il n’est pas conseillé d’héberger un serveur d’entreprise dans son garage car il y a une probabilité (non nulle) que votre voisin soit un pyromane.

L’autre contrainte majeure du développement web est l’évolution ultra-rapide des technologies. Tous les jours les utilisateurs passent par des services performants pour lire leurs mails, dénicher un super objet d’occasion dans un bon coin ou encore chatter en texte, audio, vidéo en temps réel. Ils ont le même niveau d’exigence pour chaque fonctionnalité que vous leur proposerez. Nous ne pouvons pas nous permettre de diffuser des applications et services qui ne fonctionnent pas parfaitement.

Enfin, dans notre contexte, ces applications web sont plus que de simples pages web servant à afficher du contenu. Nous avons besoin d’exécuter sur ces serveurs des algorithmes métier gourmands en capacité et en temps de calcul. Nous devons donc concevoir des architectures logicielles et des infrastructures en tenant compte de ces caractéristiques particulières.

Le développement web est souvent divisé en deux grandes catégories. Les applications « front-end » sont chargées de l’interface et de la mise en relation avec l’ensemble des applications « back-end ». Ces dernières réalisent la sauvegarde des données et exécutent des algorithmes. Je rajouterai à ces deux catégories une troisième apparue récemment. Il s’agit du développement – dev – d’outils qui automatisent la mise et le maintient en ligne – ops – des applications. Cette mouvance a donné naissance au métier de « DevOps » qui est devenu aujourd’hui indispensable. À Alma nous avons fait le choix de ne pas spécialiser ces postes. Cela permet d’engager – et de responsabiliser – chaque développeur dans la qualité de l’ensemble des facettes de nos services.

Challenges

Le métier de développeur web peut paraître d’une grande complexité pour un jeune diplômé. Ses exigences peuvent au contraire être des moteurs qui poussent à faire toujours mieux et à ne pas se démotiver dans le travail quotidien.

Les challenges très intéressants auxquels nous faisons face tous les jours sont :

  • de bien comprendre nos clients et leurs besoins,
  • de répondre à ces besoins en produisant des applications les plus simples possibles,
  • d’être très réactif pour investiguer et résoudre les problèmes qui peuvent impacter tous nos clients.

En conclusion le développeur web doit être capable de développer des applications qui répondent parfaitement aux exigences des utilisateurs. Il doit pour chaque projet choisir à bon escient les technologies adaptées. Pour faire un choix éclairé et pertinent, le développeur web doit prendre la mesure de l’ensemble des outils et techniques disponibles. S’informer sur les bonnes pratiques et lire le code d’applications open-source (ouvertes, dont le code source est disponible) pour apprendre de développeurs plus expérimentés est essentiel pour progresser et ne pas se reposer sur ses lauriers.

Gestion de projet

Notre gestion de projet se base entièrement sur une volonté d’agilité sans forcément se contraindre à appliquer à la lettre des méthodologies agiles.

Étant, dans un premier temps, le seul développeur web dans une équipe d’une trentaine de personnes, j’ai été au début en relation étroite avec les développeurs qui ont introduit le web à Alma.

Nous avons choisi de nous baser sur un outil de gestion de tâches permettant par simple glisser-déposer de suivre l’avancement des nouvelles fonctionnalités. Procéder de la sorte me permettait de rajouter des tâches très simplement, d’exposer à mes collègues l’avancement en temps réel du projet qui m’avait été confié. Utiliser ce genre d’outil permet aussi d’ajuster les priorités des développements à réaliser en 15 minutes de réunion hebdomadaire tout au plus.

[blockquote]Mon opinion personnelle est qu’il est très important de trouver les outils et méthodes qui conviennent pour son équipe sans s’obliger à appliquer à la lettre une méthodologie X ou Y.[/blockquote]

Un des autres aspects de la gestion de projet en développement web est de ne pas négliger le temps à passer à faire de la veille. Lorsque l’on développe des algorithmes métier en C++, la question de l’étude de bibliothèques de fonctionnalités ne se pose que très rarement. En développement web il est bien souvent possible de trouver une petite bibliothèque, prête à l’emploi, qui répond parfaitement à un problème précis. Il est donc nécessaire de savoir évaluer ces technologies en terme de qualité, de simplicité de mise en place, et d’impact sur le reste de l’application.

Il est attendu d’un développeur web qu’il sache gérer son planning pour rebondir d’une fonctionnalité à une autre et même d’un projet à un autre. Par exemple, un créateur de startup vous demandera de modifier sa homepage tous les jours et d’en analyser les impacts positifs ou négatifs. Enfin, travailler au sein d’Alma rajoute une dimension collaborative aux points soulignés précédemment. Notre implication dans les projets et forte, et nous travaillons en relation étroite avec le département commercial, marketing, et les autres services et « scopettes » d’Alma.

Si vous avez lu cet article jusqu’au bout, BRAVO ! Si le web vous rend enthousiaste et/ou curieux, n’hésitez pas nous suivre sur LinkedIn pour être informé de nouveaux postes à pourvoir (ou à nous envoyer une candidature spontanée).

Share

3 réponses

  1. Bonjour (et un petit coucou à quelques connaissance chez Alma 🙂 )
    Merci de ce partage !

    Petite question, je n’ai pas bien compris ce que vous vouliez dire par « ne pas spécialiser » à propos de la démarche DevOps ?

    Par ailleurs, par curiosité, il est rapidement question d’un hébergement pour la qualité de service, la redondance, mais aussi l’allocation dynamique de ressources. Utilisez vous une solution clé en main type AWS ou plus compliqué ? Quel est votre retour d’expérience sur ce sujet (récurrence des créations / destruction, organisation du code, gestion des images, …) ?

    1. Bonjour Pierre,

      Merci pour le commentaire, et désolé pour la réponse tardive…

      Voici les réponses aux questions posées :

      « par « ne pas spécialiser » à propos de la démarche DevOps »
      L’équipe web CFAO à alma est très petite, 2 personnes uniquement, qui sont toutes les deux sur la photo. Nous sommes donc obligés de toucher à tout mais je l’ai formulé de cette manière car je trouve que c’est un réel atoût de pouvoir toucher à l’ensemble des facettes de nos produits web.

      ‘Utilisez vous une solution clé en main type AWS ou plus compliqué’
      Nous utilisons AWS, qui nous permet de nous concentrer sur notre code sans se soucier d’éventuels problèmes hardware et de simplement scripter les déploiements, des alertes pour le monitoring, etc.

      ‘Quel est votre retour d’expérience sur ce sujet…’
      Ca fonctionne bien globalement, il ne faut pas néglier le temps nécessaire à prendre la toile d’araignée des services AWS en main, et il ne faut pas hésiter à tester plein de choses. Il y a un réel « vocabulaire » AWS à apréhender pour commencer à comprendre comment configurer les services pour faire tel ou tel chose. Ca peut être très frustrant, par exemple, au début il est courant de vouloir démarrer une base de donnée et puis de se rendre compte que l’on a oublié de configurer tel ou tel chose niveau réseau avant….

      Voilà.
      J’espère avec répondu aux questions.

      Bonne soirée.

Les commentaires sont fermés.

Share