Blog myBlog = BlogFactory.getWordPressBlog();
Article tagué Société
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.
Du droit d’auteur et de la contrefaçon [MAJ]
4/03/09
Je ne suis pas un spécialiste du droit (y compris lorsqu’il s’agit de droit informatique)… mais c’est un sujet qui m’intéresse beaucoup ! Je suis donc assidûment le “Journal d’un avocat”, blog d’un avocat au barreau de Paris qui vulgarise (au sens noble du terme) le droit pour les non-spécialistes, mais sans tomber dans les raccourcis inexacts qu’on trouve dans la presse.
Je laisse donc parler le professionnel, et relaie ce très bon billet concernant le droit d’auteur et la contrefaçon, “Le droit d’auteur pour les nuls”. Ce billet fait suite aux récentes déclarations de Luc Besson en la matière, qui ont été soutenues par Frédéric Lefebvre.
Et puisque je suis parti pour faire la promotion de ce blog de qualité, je rappelle également les précédents billets de Maître Eolas ayant des thèmes en rapport avec l’informatique :
- En rapport avec les billets ci-dessus, les commentaires de l’affaire Mulholland Drive (sur l’exception de copie privée et les DRM), ici et là ;
- Toujours sur un sujet voisin, le détail d’une affaire de copie privée, ici, ici et ici ;
- La loi DADVSI décortiquée dans une saga complète… ici, ici, ici, ici, ici, ici, ici, ici, ici, et enfin ici ;
- L’affaire Wizzgo (le magnétoscope en ligne), chronologiquement ici, ici, et enfin ici ;
- Utilisation des informations publiques de Facebook lors d’un procès ;
- La gratuité des frais de transport sur des sites de vente en ligne
- Le fichier EDVIDGE
- L’affaire Fuzz (concernant la responsabilité d’un site d’agrégation ayant repris une nouvelle portant atteinte à la vie privée), ici, ici et ici ;
- Et le meilleur pour la fin, puisque ce sujet me concerne de près avec ce nouveau blog : la responsabilité des blogueurs (par rapport à ce qu’ils publient, et au contenu des commentaires laissés sur le blog) . J’y ai en particulier appris que ce blog étant personnel, je n’aurai pas à le déclarer à la CNIL pour la collecte d’informations qui pourrait y être faite (les commentateurs laissant leur adresse mail par exemple).
En vous souhaitant une bonne lecture…
Mise à jour du 4 mars 2009 : un nouvel article du maître sur la loi HADOPI.