Une semaine dans la vie d’un développeur de l’IITA

  • 30 août 2017

Cet article a été rédigé par Imogen Kutz, développeur de l’ équipe technique de l’IITA au sein de l’organisation Development Initiatives .

Présentation de l’équipe

Je m’appelle Imogen et j’ai rejoint l’équipe il y a environ 3 mois. Je travaille avec Hayden (qui fait partie de l’équipe depuis novembre 2016) et Dale (présent depuis avril 2015). Ensemble, nous gérons tout l’aspect technique de l’IITA – un mélange de codes sources utilisant différents langages et différentes conceptions logicielles . L’ Assemblée des membres de l’IITA a favorisé un renforcement de nos capacités de développement et de maintenance ces dernières années en approuvant une hausse de budget qui nous a permis d’augmenter l’effectif de l’équipe.

Ayant récemment intégré l’équipe technique de l’IITA, j’ai passé ces derniers mois à trouver mes marques. Je me suis alors dit qu’il serait intéressant de partager quelques informations sur notre manière de travailler avec la communauté de l’IITA au sens large.

Voici donc plus ou moins comment se répartit notre semaine de travail. Bonne lecture !

Lundi

Le lundi est consacré aux dysfonctionnements et à la maintenance. Bien entendu, en cas d’urgence majeure, nous traitons les problèmes tous les jours de la semaine, mais le lundi, nous nous attaquons plutôt aux petits bogues agaçants qu’aux gros problèmes. Nous avons réservé un jour de la semaine à ce type de projet car, comme tout développeur de logiciel le sait, la maintenance est un processus continu auquel il convient d’allouer un créneau spécifique.

Cela vaut tout particulièrement pour l’IITA, dont le code source est relativement complexe. Les outils et services que nous proposons (une bonne dizaine) reposent en effet sur un code écrit dans au moins six langues suivant différentes méthodes de codage. Une partie de plaisir...

Le code source de l’IITA, c’est un peu comme dans un livre de C.S. Lewis : on perd une chaussette, on la cherche dans son placard, et on atterrit dans le monde de Narnia. On passe des jours et des jours à errer dans cet univers, surpris par toutes les créatures étranges que l’on y croise, et lorsque l’on en sort, presque rien de vraiment important n’a changé.

Ce genre de problème est assez répandu lorsqu’on travaille avec des codes sources qui datent quelque peu. Ce type de situation est généralement difficile à éviter :

  • Une série de décisions pragmatiques prises afin de tester le concept initial avant qu’il soit réellement nécessaire de songer à l’évolutivité de l’outil et à sa maintenance à long terme ;
  • La nécessité de répondre rapidement aux besoins des premiers utilisateurs, qui laisse peu de temps pour améliorer le code.

C’est ainsi que l’on se retrouve avec un logiciel opérationnel, qui fait preuve de son utilité auprès des premiers utilisateurs, mais qui en définitive exige des efforts importants pour continuer à fonctionner à long terme, victime de ce que les professionnels du secteur appellent « l’érosion logicielle ».

Allouer un moment spécifique à la maintenance régulière nous évite de nous laisser déborder par les problèmes hautement prioritaires et nous permet d’avancer sans passer 15 ans à combattre la Sorcière blanche aux côtés d’Aslan.

Mardi à jeudi

Ces jours-là sont essentiellement dédiés au développement des produits. En ce moment, nous travaillons surtout à la création de la nouvelle bibliothèque en langage Python de l’IITA, pyIATI (prononcez paï-ati).

pyIATI – la trousse à outils de l’IITA destinée aux développeurs a pour objectifs d’évider le dédoublement des efforts concernant le code source de l’IITA, de créer un point de référence central pour l’ensemble des outils de l’IITA et de réduire les coûts de maintenance du code source. Cet outil est tout simplement magique.

Nous avons tiré les enseignements du passé et fait tout notre possible pour suivre les bonnes pratiques, de sorte que les processus que nous utilisons pour pyIATI privilégient la qualité, la stabilité et la longévité .

Cela signifie :

  • Développer des fonctionnalités en fonction des témoignages des utilisateurs ;
  • Se livrer à des essais rigoureux ;
  • Réviser régulièrement le code ;
  • Communiquer et partager nos connaissances ;
  • Procéder à de fréquentes refontes (restructuration du code visant à améliorer des aspects non fonctionnels) ;
  • Rédiger une documentation claire au fur et à mesure ;
  • Étudier et évaluer les processus ;
  • Faire évoluer les hypothèses et la conception.

Tout ce travail est plus chronophage au départ mais permettra de gagner énormément de temps sur le long terme.

On peut comparer ça au travail d’un charpentier dans un projet de construction. Au départ, il peut être plus long de mesurer au moins deux fois chaque planche, mais cela permet ensuite de la couper correctement du premier coup, et donc d’économiser beaucoup de temps et d’argent. Sinon, le travail est bâclé, on se retrouve à court de matériaux, et on doit retourner en acheter en magasin, ce qui nous faire perdre encore plus de temps et d’argent.

Dans notre cas, vous ne devrez chercher qu’une seule fois vos données, ou les convertir une seule fois au format CSV, par exemple. Pour l’instant, ces tâches doivent être réalisées au moins trois fois chacune, ce qui augmente considérablement la maintenance en cas de bogues.

C’est aussi une question de fondations. Les fondations initiales de l’IITA reposaient sur des prototypes et exigeaient par conséquent d’importants efforts pour conserver leur validité . Les constructions bâties sur ces fondations livrent une bataille perdue d’avance et finiront englouties par une entropie galopante, comme une maison qui s’enfoncerait peu à peu dans le sol. Nous aimerions par exemple ajouter de nouvelles fonctionnalités au tableau de bord et à la banque de données, mais le simple fait de régler au fur et à mesure les problèmes que l’on nous signale sur ces outils mobilise déjà une trop grande quantité de nos ressources.

pyIATI est un chantier titanesque qui vise à étayer ces fondations dès maintenant et à tout consolider avant de se retrouver confrontés à de graves problèmes d’affaissement. En ce qui concerne l’IITA, pyIATI facilitera la création d’outils flambant neufs pour les utilisateurs, mais également l’ajout de nouvelles fonctionnalités et la correction des problèmes sur les outils existants. Nous ne voulons pas laisser une accumulation ingérable de bogues submerger notre capacité à intégrer les nouvelles exigences des utilisateurs.

Vendredi

La fin de la semaine nous donne l’occasion de régler les derniers détails du développement de nos produits, mais également de gérer les relations avec nos fournisseurs externes, d’échanger avec la communauté et de réfléchir à nos méthodes de travail afin de les améliorer.

À venir

Voici donc à quoi ressemble notre semaine de travail à l’heure actuelle. Dans les prochaines semaines, nous devrions commencer à utiliser pyIATI afin de créer un nouveau site Internet pour l’IITA. Ce sera un excellent moyen de tester s’il fonctionne en conditions réelles et d’identifier les points à améliorer afin de simplifier les projets à venir. #Lesjoiesdeslogiciels