Blog myBlog = BlogFactory.getWordPressBlog();
Méthodes
Premier retour sur le ScrumDay
1/04/11
Aujourd’hui, j’étais au Scrum Day, dans le centre de conférences de Microsoft à Issy-les-Moulineaux.
La journée était très agréable, le déjeuner bon et assez copieux, et les conférences intéressantes. J’ai par ailleurs pu faire la connaissance de Guillaume Lours, Antoine Sabot-Durand, et Nathaniel Richand (dont la conférence sur les tests en environnement Java était très intéressante).
Pour appliquer un des grands principes de l’agilité, il faudra uniquement penser à noter quelques points dans la rétrospective de l’évènement (que je n’ai pas été le seul à noter, si j’en crois les retours sur Twitter :
- il manquait la possibilité de pouvoir se désaltérer entre les conférences (à l’exception du déjeuner et de la pause café de l’après-midi)
- certaines salles de conférence, parmi les plus intéressantes étaient dans des salles ridiculement petites. Je pense surtout à la salle Corail, qui était généralement pleine plus d’un quart d’heure avant les conférences… J’ai ainsi manqué les conférences de Bertrand Pinel (sur « l’agilité en mode forfait »), et d’Alex Boutin. J’espère que des comptes-rendus de ces conférences (entre autres) fleurirons prochainement
Siffler en télétravaillant
1/03/11
Hier soir se tenait à la Cité Universitaire le 3ème anniversaire du Paris JUG : un grand amphithéâtre regroupant plus de 500 javaïstes, Blanche-Neige et les 7 nains, des conférenciers passionnants, des sponsors, des masseurs… le tout dans une ambiance de folie !
Faire un résumé de complet de cette soirée n’est pas chose facile (et encore… je suis parti plus de 7 heures avant la fin). Je vais donc me consacrer dans ce billet sur l’excellente keynote d’ouverture, en essayant d’être le plus fidèle possible aux propos de la conférencière Nicole Turbé-Suetens (à qui j’ai honteusement volé le titre de cet article).
Elle a travaillé 16 ans chez IBM (en plusieurs fois), avant de fonder Distance Expert (site de veille sur l’état du télétravail en France), et de devenir expert européen. Elle a également co-écrit Le télétravail en France avec Pierre Morel à l’Huissier.
Note : essayant de reproduire sans la déformer la conférence, je ne prends pas particulièrement de recul par rapport aux chiffres et positions de Mme Turbé-Suetens…
La suite >
Libérons (un peu) les développeurs
29/08/10
Il y a peu, j’ai posé sur Twitter la question :
Sondage express : pour ou contre le commit des fichiers propres à l’IDE dans le gestionnaire de sources ?
Un petit échange s’en est suivi avec @pierre_fauvel, qui pense que c’est en effet une bonne pratique. Pour ma part, je suis plus mitigé sur cette question… 140 caractères, c’est un peu court pour argumenter : je pensais donc publier un billet pour étayer mon avis sur la question. M. Fauvel a eu la même idée, et m’a devancé.
Avant de lire ce qui suit, je vous renvoie donc a son très intéressant billet sur la question.
Oui, il faut partager les bonnes pratiques
Je suis bien évidemment d’accord : il doit y avoir de la communication dans une équipe, ainsi qu’un partage des bonnes pratiques : c’est une évidence !
Il me vient tout de suite à l’esprit plusieurs applications concrètes incontournables de ce principe. En particulier pour tout ce qui concerne l’outillage du projet :
- l’outil de gestion de configuration : c’est la base du travail collaboratif. Il est donc inconcevable qu’un développeur n’utilise pas le même système que les autres
- la gestion du build : la manière de construise le projet doit être la même pour chaque développeur (Ant, Maven, Gradle, Ivy, ou autre), afin d’assurer la reproductibilité de celui-ci. C’est pour cela que nous mettons les fichiers de configuration du build (les pom.xml, profiles.xml, etc. de Maven dans notre cas) sont mis en gestion de configuration.
- les outils d’intégration continue ainsi que les résultats associés (tests en échec, métriques de qualité Sonar, etc.)
- les règles de qualité de code à mettre en place (PMD, CheckStyle, FindBugs). En particulier pour celles-ci, il est important que tous les développeurs soient convaincus de leur utilité, et soient d’accord sur les limites à appliquer et leurs raisons : pourquoi limiter une méthode à 30 lignes de code plutôt que 20 ou 40 ?…
Mais il faut aussi laisser une marge de liberté aux développeurs…
Les points précédents étant acquis, il ne faut pas non plus trop vouloir trop contrôler. En particulier, je ne suis pas partisan d’avoir un environnement de développement unique, configuré de la même manière pour tous les développeurs, et dont la configuration serait mise en gestion de configuration.
En effet, même s’il faut partager les bonnes pratiques, il me semble que certaines pratiques ne peuvent justement pas être hiérarchisées. Dans ce cas, pourquoi en imposer une plutôt qu’une autre ?
Prenons un exemple concret : l’utilisation de SVN avec Eclipse. On peut utiliser Subclipse ou Subversive. Les deux ont des fonctionnalités similaires, et le choix est donc affaire de préférence plus que de « bonne pratique ». On pourrait effectivement choisir d’en imposer un arbitrairement, afin d’uniformiser les environnements de développement, mais j’avoue que je n’en vois pas l’intérêt : le choix n’impacte en rien la productivité, et je préfère donc laisser la liberté à chacun de choisir celui qu’il préfère.
Les développeurs ont souvent leurs propres habitudes, et leurs outils préférés. Et bien souvent, il existe des outils concurrents dont il est difficile de dire lequel est meilleurs que l’autre :
- vi, kate, emacs, etc. pour l’édition de fichiers sur les systèmes Unix
- Notepad++, PSPad, etc. pour faire la même chose sous Windows
- 7Zip ou PeaZip pour la gestion des archives sous Windows
- etc.
Plutôt que d’imposer un outil unique, je préfère laisser le choix aux développeurs d’utiliser celui qu’ils préfèrent. Ainsi, chacun sera efficace (en utilisant l’outil avec lequel il est à l’aise), et cela ne pénalise à mon avis pas le travail de l’ensemble de l’équipe.
Si je fais ce choix, c’est aussi pour une question de moral : un développeur n’est pas un enfant, et n’aime donc généralement pas qu’on le prenne pour tel. J’ai tendance à penser que chacun est à même de décider quels outils lui conviennent le mieux, et appréciera de pouvoir les utiliser : il en sera non seulement plus efficace, mais aussi plus motivé qu’on lui fasse confiance.
Tout ceci n’étant bien sûr vrai que dans la mesure où ces choix personnels ne sont pas gênants pour le travail de l’équipe. Bien sûr, nous discutons souvent de ces choix, et parfois, nous convainquons nos collègues qu’un logiciel est vraiment meilleurs qu’un autre. C’est ainsi que sur la recommandation de Damien, j’ai adopté yEd pour l’édition de diagrammes.
Quelques exemples
Un de mes collaborateurs a préféré travailler sous Ubuntu plutôt que sous Windows. Cet OS répond à ses besoins, et est parfaitement compatible avec le travail du reste de l’équipe (SVN, serveurs de test, etc.). Sa licence Windows a été installée sur une machine virtuelle lorsqu’il en a besoin occasionnellement.
Mon nouveau dada, c’est Git. J’en ai fait la présentation aux équipes de développement, mais avant de le déployer à grande échelle, je préfère le tester : je l’ai donc installé localement, en le connectant au SVN de l’équipe. Mon environnement est donc « personnalisé », mais cela n’impacte pas le travail de l’équipe. Si je suis convaincu, je proposerai aux autres cette solution, en leur présentant ses avantages, mais en laissant libres ceux qui préfèrent garder leurs habitudes de travailler directement avec Subversion. Et il y a des arguments pour chacune, comme par exemple le plugin EGit pour Eclipse qui n’est pas encore du tout au niveau de ceux qui existent pour SVN (mais là, j’anticipe sur un prochain article…).
Nous travaillons tous sous Eclipse. Je n’ai jamais eu l’occasion de travailler avec des IDE mixtes. Mais dans la mesure où d’autres IDE (Netbeans par exemple), permettent de travailler avec Maven, SVN, etc., je ne pense pas que cela soit impossible ou nuisible. Ainsi, si un collaborateur préférait par habitude utiliser un autre IDE, je n’y verrais pas d’inconvénient (mais là, je suis peut-être un grand optimiste).
Conclusion
Afin de laisser cette marge de manoeuvre aux développeurs, il faut y mettre quelques moyens. Deux d’entre eux me viennent à l’esprit :
- chaque développeur est administrateur local de sa machine
- maintien de manière collaborative (wiki, par exemple) d’une liste de « logiciels recommandés » par catégorie : édition de texte, etc., voire d’un centre de téléchargement interne, pour accélérer la vitesse d’accès et uniformiser les versions des logiciels (lorsque c’est pertinent)
- chacun a un accès à Internet peu restreint, permettant au moins l’accès au téléchargement de logiciels (libres) de son choix, mais aussi à la veille technologique, aux forums de discussion techniques, etc. (personnellement, je préconise même l’absence totale de blocage, sauf en cas d’abus manifestes).
A mon sens, cette souplesse ne va pas à l’encontre d’un développement structuré, tant qu’elle respecte la plate-forme de développement commune et les spécificités du projet. Elle permet aux membres de l’équipe de tester plusieurs outils, et d’échanger sur leurs expériences avec ceux-ci.
Cette diversité permet de multiplier les tests comparatifs, de communiquer et de capitaliser sur les résultats de ces tests :
- si un outil a clairement l’avantage sur ses concurrents, il sera naturellement adopté par l’ensemble de l’équipe
- si les outils ne peuvent être départagés, il n’est pas la peine de choisir
Mais revenons au sujet initial. Pour les raisons évoquées ci-dessus, je ne mets pas les fichiers propres à l’IDE sous gestion de configuration. Je ne considère pas la configuration de l’environnement de développement comme étant une « partie intégrante du projet ». Ceci dit, une « configuration type du projet » est tout de même accessible pour ceux qui la veulent : elle n’est pas sous SVN pour éviter à ceux qui ont une configuration personnalisée d’écraser par erreur lors d’un commit celle par défaut.
Editeurs UML : nouvelles versions d’ArgoUML et de BOUML
19/04/09
Il y a quelques temps, je me suis (ré)intéressé aux éditeurs UML.
Mon choix a été grandement facilité par une très bonne étude des éditeurs UML Open Source, réalisée et mise en ligne par un autre ingénieur informaticien.
Avant de lire cette étude, j’utilisais lorsque j’en avais besoin ArgoUML, ou la version gratuite d’EclipseUML, mais qui est une véritable usine à gaz dont je n’avais pas l’utilité (l’avantage étant qu’elle s’intègre à mon IDE préféré, Eclipse). J’ai depuis testé et approuvé BOUML (que je ne connaissais pas avant de lire l’étude en question), qui est effectivement un autre bon produit, agréable à utiliser, et qui est assez “vivant” (la dernière version date du 28 mars d’hier).
Malgré ça, je reste pour le moment sur ArgoUML, pour plusieurs raisons :
- c’est un outil que je maitrise ;
- il n’existe pas (encore) de “convertisseur” pour passer convertir mes diagrammes au format BOUML ;
- la dernière version d’ArgoUML est également très récente (24 mars), et apporte un ensemble significatif d’améliorations (dont par exemple le diagramme de séquence qui en avait bien besoin) ;
Je n’exclue pas de basculer prochainement sur BOUML, après avoir comparé plus sérieusement ces deux produits (la plupart des autres n’étant plus en lice, et les produits payants étant exclus de cette analyse : je n’ai pas de budget “éditeur UML” pour mes développements personnels).