Le blog d'un geek devenu directeur technique

Billets libellés buglist

Skriv : Les listes

(ce billet fait partie d’un ensemble consacré au projet Skriv)

Comme vu précédemment, l’une des fonctionnalités de base de Skriv sera la possibilité d’y ajouter des listes.

J’imagine globalement 3 types de listes (les éléments en italique sont optionnels) :

  • minimales : La liste a juste un titre. Chaque entrée de liste ne contient qu’un titre et une description. Utile pour prendre des notes, ou pour faire une checklist.
  • simples : La liste a un titre, une date de début et une date d’échéance. Chaque entrée de liste contient un titre, un état (à faire / fait) et une description. Utile pour lister rapidement les tâches d’un sous-projet.
  • complètes : La liste a un titre, une date de début et une date d’échéance. Chaque entrée de liste contient un titre, un état (à faire / fait), une description, une importance (basse, moyenne, haute, critique), un responsable, une date d’échéance, un état d’avancement (en pourcentage). Utiles pour faire une vraie todo-list ou une buglist.

Quelques fonctionnalités sont générales à tous les types de listes :

  • Les entrées de liste peuvent être déplacés les unes par rapport aux autres par drag and drop. Idéalement (en fonction de la complexité technique) une entrée de liste pourra être déplacée d’une liste à une autre par drag and drop ; elle s’adaptera alors aux caractéristiques de la liste qui la réceptionnera.
  • On enregistre la date de création et le nom de l’utilisateur qui a créé l’entrée de liste. Ces informations seront disponibles (par exemple dans une infobulle).
  • Les descriptions associées aux entrées de liste utilisent une syntaxe Wiki.
  • Il est possible d’ajouter des commentaires aux entrées de liste. Le commentaires utilisent une syntaxe Wiki.
  • Il est possible d’ajouter des pièces-jointes aux entrée de liste et aux commentaires. Les pièces-jointes peuvent être des fichiers déjà présents sur le partage, des fichiers que l’on uploade à ce moment-là, des emails, des URLs.
  • Les entrées de liste avec un état (à faire/fait) ont une case à cocher devant leur titre. Quand on clique sur la case à cocher, le titre est barré, et l’entrée est déplacée en fin de liste. En décochant la case, le titre n’est plus barré, et l’entrée est déplacée à la fin des tâches « à faire » (au-dessus des tâches « faites »).
  • Les entrées de liste ayant un responsable possèdent une fonctionnalité de «harcèlement», qui sert à envoyer un message au responsable.

Ma vision

La plupart des outils de gestion de projet proposent une liste de tâches ; certains y ajoutent une buglist en plus. Les logiciels orientés « diagramme de Gantt » découpent les projets en sous-projets, qui sont eux-mêmes constitués de tâches.

Dans l’outil que j’utilise actuellement dans mon entreprise, nous avons aussi une todo-list et une buglist séparées. La todo-list est linéaire, elle contient une suite de tâches dont on peu définir un certain nombre de paramètres (responsable, avancement, criticité, urgence, deadline, …). Malheureusement, le concept de “sous-projet” manque, ce qui oblige souvent à créer des tâches dont la description contient une liste de sous-tâches.

Pour Skriv, j’imagine que l’on créera plusieurs listes pour créer autant de sous-projets. Pourquoi alors ne pas directement appeler ça des «sous-projets» ? Parce que ça me semble peu flexible. Dans certains cas, on voudra gérer plusieurs listes, sans les associer à une notion de sous-projet.
Je veux que ce soit l’outil qui s’adapte à notre vision, et non l’inverse. Si on veut signifier des choses différentes, il suffira d’utiliser l’outil de manière différente. C’est quand même mieux que d’être obligé à faire tenir nos propres concepts à l’intérieur de ceux de l’outil.

Qu’en pensez-vous ?

Lancement du projet Skriv

J’en parlais récemment dans le post concernant l’avenir de ce blog : Je réfléchis à l’idée de développer un outil de gestion de projet ouvert à tous.

Quasiment depuis que je travaille, j’ai développé des outils pour suivre les projets ou traiter les bugs. Comme j’ai souvent bossé dans des entreprises de petite taille, pour ne pas dire des start-ups, ces outils comblaient des manques évidents et étaient adoptés rapidement.

  • Il y a maintenant un paquet d’années, j’avais fait un gestionnaire de buglist. Doté d’une interface web, il était écrit en C et stockait ses données dans un fichier XML. Technologiquement, ce n’était pas une très bonne idée, mais c’était l’occasion de tester des librairies XML et CGI que j’avais écrites en C. Au niveau des fonctionnalités, je ne me souviens plus trop. Je crois que c’était assez simple, avec pour chaque bug le niveau de criticité, une description, et le projet affecté.
  • J’avais par la suite repris le même genre d’outil, mais écrit en PHP/MySQL. Pus facile à faire évoluer, je n’ai pas souvenir qu’on l’ait utilisé à son plein potentiel.
  • Dans mon entreprise actuelle, j’ai dès le début mis en place des outils open-source, les plus important étant Flyspray pour la buglist et MediaWiki pour le wiki. Depuis, j’ai développé des extensions MediaWiki qui nous servent à gérer les projets. Ainsi, chaque projet a une page dédiée sur laquelle apparaissent : la liste des bugs du projet, une liste de tâches, des pages wiki liées au projet, et des fichiers en « pièce-jointe ».

Cette extension est clairement inspirée par Backpack. J’aime vraiment ce logiciel. Par rapport à d’autres outils plus orientés « projet », comme Basecamp par exemple (pour reprendre un autre logiciel développé par 37signals), j’apprécie le fait que toutes les informations soient regroupées sur une seule page.
Habituellement, les logiciels de gestion de projets offrent plusieurs vues différentes, chacune pour un type d’information. Il y a un onglet pour les tâches, un onglet pour le calendrier, un onglet pour les bugs (si l’outil les gère), un onglet pour les pages de wiki (si c’est disponible), un onglet pour les fichiers, et ainsi de suite.
Pour ma part, je préfère avoir la vue la plus « intégrée » possible. Cela implique de penser l’interface en conséquence, ce qui peut s’avérer plus délicat qu’il n’y paraît.

Je cherche donc maintenant à définir un outil que je pourrais utiliser aussi bien pour mes besoins en entreprise, que pour gérer mes projets personnels. Je vais donc m’intéresser à chaque aspect d’un tel logiciel dans une série de billets sur le blog. Je ferais appel aux avis des lecteurs du blog, en espérant réussir à dégager des principes clairs de fonctionnement. J’espère aussi trouver le temps de développer ce logiciel, pour que tout cela ne reste pas théorique (d’un autre côté, si un autre outil est développé à partir de spécifications dérivées de mes idées, je n’y verrais aucun problème, bien au contraire).

Ah, au fait, pourquoi appeler ce projet «Skriv» ? C’est un nom que j’affectionne, que j’ai donné par le passé à plusieurs logiciels que j’ai développé. Le plus important était une interface web qui intégrait un webmail, un gestionnaire de bookmarks, un bloc-notes, un carnet d’adresses, une gestion de compte bancaire. Je l’utilisais tous les jours pour centraliser ma vie numérique. De nos jours, c’est assez commun ; mais à l’époque où je l’ai développé (en 2002), c’était assez novateur.
Pour le nom lui-même, il signifie « écrire » dans plusieurs langues comme le breton et le suédois. Ça va bien dans l’idée d’un outil qui sert principalement à communiquer.

Ne pas faire confiance à sa mémoire

Je vais le marteler une nouvelle fois : les listes sont la base de toute organisation, qu’elle soit personnelle ou d’équipe.

L’une des erreurs qu’on voit le plus souvent, que ce soit que les juniors que chez les gens désorganisés, est de faire confiance à sa mémoire.

Par exemple, un jeune développeur qui ne prend pas de notes. On lui donne 3 choses à faire pour la journée, et il revient le soir tout fier de lui. Malheureusement, il en a oublié une en cours de route.
Ou encore, un graphiste qui doit corriger une création, sans utiliser une buglist. Évidemment, il faut alors plusieurs itérations pour lui rappeler les petits détails qui lui ont déjà été remontés.
J’ai même vu une DRH qui n’avait établi aucune procédure, pensant avoir tout bien en tête. Régulièrement, il fallait lui rappeler qu’on était en attente d’un justificatif qu’elle n’avait pas préparé.

Le fondement de cette erreur, c’est qu’au moment où on reçoit une information, notre attention se focalise dessus. Elle remplit toutes nos « cases mémoire ». On a naturellement l’impression qu’à tout moment cette donnée sera disponible dans un coin de notre tête.
Malheureusement, il faut composer avec 2 choses :

  • Chaque nouvelle information pousse les précédentes vers la sortie.
  • Les informations se périment en mémoire avec le temps, et toujours plus vite qu’on ne le croit.

La conjonction de ces deux facteurs fait qu’il est difficile de se souvenir de plusieurs choses bénignes (qui ne sont pas d’une importance marquante) plus de quelques heures d’affilée.

Dans certaines disciplines, comme en ergonomie ou en présentation, on considère habituellement qu’il ne faut pas présenter plus de 7 éléments à la fois. C’est la limite au-delà de laquelle le cerveau humain ne peut pas tout retenir instantanément. Une liste comportant plus de 7 choix demandera plusieurs lectures successives avant qu’une personne puisse s’en faire une représentation mentale.
Sachant cela, combien de ces 7 éléments vont s’envoler de votre mémoire avant la fin de la journée ?

La solution pour remédier à ce problème, c’est de noter toutes les informations qu’on ne peut pas traiter dans la seconde, et qui nécessitent une action. Ce ne sont pas les moyens qui manquent : dans un cahier, un outil de gestion de projet, une buglist, une feuille de papier volante, un wiki, etc.
C’est simple, c’est facile. Pas d’excuse.

Retrospectiva

Retrospectiva est un web-logiciel de gestion de projets. Placé sous licence libre, il n’est pas possible de l’utiliser « directement » ; par contre, il est téléchargeable gratuitement et s’installe assez facilement sur n’importe quel système de type Unix (Linux, Mac OS X, BSD, …) pour peu que vous ayez un minimum de connaissances en administration de serveur.
Ce mode de fonctionnement est similaire à ce qu’on peut trouver du côté de Collabtive.

Fonctionnalités

Les fonctionnalités de Retrospectiva sont réparties en deux groupes : les fonctions de base, et celles qui sont apportées par des plug-ins.

Fonctions de base :

  • Gestion de tickets.
  • Revue de code.
  • Gestion de versions, avec deadlines et étapes d’avancement.

Fonctions additionnelles :

  • Wiki.
  • Blog.
  • Gestion de projet adaptée à la méthode Scrum.

On peut considérer que les fonctionnalités apportées par les plug-ins font parties intégrantes du logiciel. Parce que, de nos jours, un outil de gestion de projet qui ne contient même pas un wiki, c’est trop limité pour être intéressant.

Gestion de tickets

(image © retrospectiva.org)

Les tickets de Retrospectiva permettent de gérer aussi bien l’affectation de tâches (au sens classique du terme) que les relevés de bugs. C’est un des rares logiciels qui fournisse un système de gestion des tâches qui peut aussi convenir à la gestion des bugs, sans que l’ergonomie n’en souffre.

PLUS »

Flyspray

J’en parlais dans mon billet consacré aux listes, les buglists sont un élément essentiel dans la gestion des développements informatiques. Impossible de créer un logiciel, quel qu’il soit, sans y introduire des effets indésirables imprévus. Et il faut trouver un moyen efficace de lister ces bugs et de suivre leur résolution.

Je vais vous parler d’un logiciel open-source entièrement dédié à cela : Flyspray

Flyspray - page principale

Présentation

Flyspray est un logiciel développé en PHP, proposé gratuitement sous licence libre. Il est très facile à installer sur un serveur Linux, avec une base de données MySQL ou Postgresql. Ce n’est donc pas un logiciel qui s’utilise à distance sur les serveurs de son éditeur ; pas besoin de payer un abonnement mensuel. Par contre, il faut avoir un serveur à disposition (mais c’est souvent le cas en entreprise).

PLUS »

Backpack

Je vais vous parler de Backpack, un outil réalisé par 37Signals, une entreprise dont nous aurons l’occasion de parler de nouveau.

Backpack se définit comme un outil d’organisation et de partage d’information. Voici des images qui vous feront comprendre rapidement de quoi il retourne :

(image © 37signals.com)

(image © 37signals.com)

Fonctionnalités

Ce logiciel est d’une grande simplicité d’utilisation. Sa fonctionnalité principale est la création de « pages ». Une page est, comme le montrent les exemples ci-dessus, la combinaison de plusieurs éléments :

  • Des listes minimales, qui comprennent juste un titre et un état fait/à faire.
  • Des notes, composées d’un titre et d’un texte.
  • Des « writeboards », qu’on peut assimiler à des pages de wiki simplifiées.
  • Des pièces-jointes (uniquement disponibles dans la version payante).

PLUS »

Les listes

Les listes constituent le « niveau zéro » de l’organisation. Quand j’utilise cette expression, ce n’est pas pour dire que les listes ne servent à rien, mais bien qu’elles sont la base de toute organisation, qu’elle soit personnelle ou collective. Vous ne pouvez pas espérer mettre en place une méthode de travail complète si vous n’êtes pas capable de gérer une simple liste de chose à faire.

Je vais détailler 3 types de listes : les listes de choses à faire (todo-list), les listes de bugs (buglist) et les listes de choses à vérifier (checklist).

Todo-list

Il s’agit du plus évident. Tout le monde, un jour ou l’autre, a noté quelque part une liste de choses à ne pas oublier ou de courses à acheter. Le premier pas en direction d’une organisation personnelle efficace est la tenue d’une liste de tâches. À chacun de faire de la manière qui lui semble la plus confortable, et en la matière il existe une quasi-infinité de recettes : utiliser un cahier ou un bloc-notes qu’on peut emmener partout avec soi, tout noter sur des post-it qu’on collera dans une pochette ou un classeur, utiliser la todo-list intégrée à notre logiciel de messagerie électronique, éditer des fichiers bureautiques (traitement de texte ou tableur), utiliser un wiki ou un système dédié à la tenue de todo-list.

Dans le cadre professionnel, il faut dissocier 2 types de todo-list :

  • Les listes de tâches que chaque employé doit tenir, et qui lui permettent de ne pas perdre le fil du travail qu’il a à réaliser. On est alors complètement dans le cas d’une liste que chacun est libre de tenir de la manière qui lui convient le mieux.
  • Les listes de tâches relatives à chaque projet. Celles-ci doivent être visibles par toutes les personnes ayant un rapport avec le projet. Il est important de savoir où le projet en est de manière globale ; c’est motivant pour tous les intervenants, mais c’est aussi nécessaire aux managers pour effectuer un suivi de l’avancement du projet. Il faut que les managers puissent modifier la liste de tâches, et que les personnes à qui elles sont assignées puissent indiquer la progression du travail.

PLUS »