Vous le savez peut être ou pas, je travaille avec mon binome sur ce projet, dans le cadre de mes études à l'ISIMA. Malheureusement, cette fin de trimestre ne nous a pas laissé assez de temps pour nous y mettre (TPs à rendre, examens à préparer etc.) mais maintenant que les partiels sont terminés, et qu'un nouveau trimestre va commencer il est grand temps de donner un gros gros punch pour bien démarrer le projet. Le démarrage est l'une des phases les plus critiques, étant donné que nous devons reprendre un code existant, s'assurer qu'il compile, l'étudier, étudier les technologies qui gravitent autour. Mais avant ça, il faut définir une stratégie d'organisation à suivre tout au long du projet.
J'ai passé donc une grande partie de mon week-end à réfléchir aux méthodes et outils qui nous permettront de travailler efficacement. La chose la plus important x 10000, est d'abord de s'assurer que nous allons faire du bon travail d'équipe avec mon binôme. Quelque soit le niveau respectif des membres d'une équipe, si chacun se la joue solo et si la coordination entre les différents membres ne se fait pas correctement, le résultat ne pourra certainement pas être à la hauteur (ou alors, le résultat sera atteint en 3 fois plus de temps que si les membres avaient mieux collaboré ensemble!). D'ailleurs, je ne suis pas le seul à le penser:
Feu Mr. Reynholm (aka The greatest man in the world) donnait une grande improtance au travail d'équipe, et il n'a pas tort ! :).
Pour qu'un travail d'équipe soit efficace, il faut s'assurer que :
1) Tous les membres de l'équipe puissent communiquer efficacement : Si un membre envoie un message, les autres membres doivent le lire et doivent réagir par rapport au message envoyé.
2) Les données soient partagées en temps réel entre les différents membres.
3) Les objectifs pour chaque membre soient clairement définis.
4) Deux membres ne travaillent pas sur la même tache.
Il est nécessaire alors de définir un certain nombre d'outils qui permettront la mise en pratique des 4 principes énoncés ci dessus. J'ai donc passé toute une journée, à chercher tous les outils qui permettront de faciliter la communication et optimiser nos efforts durant ce projet, cette liste je vais la partager avec vous :
Client SVN Subversion: Gestionnaire de versions de fichiers. Il est important dans un projet de développement, de pouvoir partager en temps réel avec les différents membres, la toute dernière version du code source utilisé. Un SVN permet également de gérer les conflits (deux personnes modifiant le même fichier en même temps). Ainsi plus la peine, de s'envoyer le code source par email ou par flash disk, un simple "commit" (jargon SVN pour dire que l'on update les fichiers sur le serveur) permet de partager le projet avec toute l'équipe !
Le client que j'utilise est : Tortoise SVN. Il est pas mal foutu, intuitif, permet de gérer les différentes opérations via une interface user-friendly :). Si vous êtes sous linux ou Mac, vous aurez par contre affaire au Terminal !
Serveur SVN : Qui dit Client SVN, dit Serveur SVN ! (Faut bien mettre ces fichiers quelque part !). Là deux choix s'offrent à vous, soit vous dédiez une machine à vous à cette tâche (faut qu'elle soit tout le temps allumée pour que les membres de l'équipe puissent envoyer leurs dernières versions autant qu'ils le souhaitent), ou alors utiliser un service tiers qui fournit en plus du serveur SVN un tas d'autres fonctionnalités intéressantes utiles !
C'est le cas de Assembla, qui fournit entre autres un espace de travail collaboratif (partage de fichiers, messages, chat etc.). Assembla, m'a été plusieurs fois utile jusqu'ici et c'est donc sans aucune hésitation que je rempile encore une fois avec ce merveilleux outil !
Mesh : En complément du Serveur SVN, j'utilise Live Mesh pour synchroniser mon répertoire de travail entre les différentes machines sur lesquels je pourrais travailler. Pour moi la différence avec le serveur SVN, c'est que là la synchronisation se fait automatiquement et instantanément. ça me permet de garder mon répertoire updaté tout le temps, même si j'oublie de faire un commit.
WinMerge : Un conflit à résoudre au niveau des versions de fichiers ? Pas de panique, munissez vous de WinMerge et comparez ligne par ligne les deux versions de fichier en votre possession. Et effectuer la fusion des deux contenus de manière organisée et prudente ! Les différences sont highlightées en jaune pour une meilleure observation !
Pastie : Vous pourriez avoir besoin de partager des bouts de code avec votre équipe. Au lieu d'un copier coller non indenté de votre code, vous pouvez utiliser pastie qui permet coller son bout de code et d'obtenir un rendu correct (indentation + coloration syntaxique).
Shared View: Je sens que je vais avoir besoin de cet outil pour le démarrage du projet :). Shared view, permet d'intervenir sur un ordinateur distant (partage de dekstop). Vous voulez aider votre équipe à configurer un IDE ? C'est l'outil qu'il vous faut ! :).
Ever note : Ce site web, permet de centraliser tout ce que vous pouvez trouver utile sur internet (liens, vidéos, photos, articles..) ou dans la vie réelle (photo prise avec votre téléphone, enregistrement d'une conférence ou d'un cours etc.). Le concept est simple, vous disposez d'une sorte de mur que vous remplissez depuis l'extérieur soit en envoyant un mail à votre espace ou en en envoyant un DM via twitter à myen. Au lieu de noyer sa boite email de liens ou de tout autre fichier, envoyez tout ça sur ever note et triez par la suite :).
Spotify : INDISPENSABLE. La musique me permet d'entrer la zone et de me concentrer sur la tâche que j'ai à accomplir. Aussi bizarre que cela puisse paraitre, je suis beaucoup plus distrait sans musique ! Je suppose, qu'elle me permet de rythmer mon activité cérébrale :P. Pour l'information Spotify vaut vraiment le détour, pour moi c'est l'un des meilleurs lecteurs musicaux qui soient, à ne rater sous aucun prétexte !
Jing : Imaginez que vous testez le rendu de ce que vous étiez en train de coder depuis 48h, et que vous voulez partager le résultat avec votre équipe (par exemple dans le cas d'un bug que vous n'arrivez pas à résoudre, l'idéal est de montrer une capture d'écran montrant visuellement le problème). Là vous pouvez soit, faire le fameux impr écran, aller sur Paint, coller votre capture, puis allez sur imageshack et uploader votre capture, pour enfin transmettre le lien vers votre image. Pfffiouu, assez énervant comme procédure. C'est pour cette raison que j'utilise Jing, qui s'installe sous la forme d'un widget et qui permet de capturer une photo ou une vidéo à partir de n'importe quelle zone de votre écran et de partager instantanément cette capture avec l'ensemble de votre équipe (Un lien est automatiquement généré vers votre fichier). En 2 clics, le tour est joué !
Bouml : Un logiciel qui permet de générer des diagrammes UML, avec option de reverse engineering ! (qui sera certainement utilisée pour notre projet vu qu'on récupère un code existant !)
Balsamiq : Cet outil permet de générer des mockup (croquis) pour vos interfaces utilisateurs. Un outil pareil est quasiment indispensable au moment de la conception, au lieu de dessiner vous même au crayon vos croquis, faites le numériquement avec des composants adaptés à la création de logiciels !
Voilà, je n'ai pas tout cité je pense mais voici un bon paquet de logiciels/outils qui permettent d'améliorer l'efficacité d'une équipe sur un projet. Je vais tenter de prêcher la bonne parole pour qu'il adopte ces outils et les utilise, on verra bien ce que ça donnera :).
Pour terminer, n'hésitez pas à partagez les outils que vous jugez utiles sur un projet (notamment ceux que je n'ai pas cité ex: builds automatiques, tests d'intégration/unitaires ou des alternatives aux outils que j'ai déjà cité, notamment le balsamiq qui est payant !). Si vous avez des anecdotes à partager concernant les différents travaux que vous avez eu à faire en équipe (soit dans le cadre d'un projet académique ou pro) faites les nous partager également :).
14 commentaires:
Il ne faut pas oublier les Google Docs, et dernièrement Google Wave (très utile, j'ai testé pour Bloginy), un système d'issue Tracking (J'utilise Trac en général).
Mais sinon excellent billet ;) Merci.
Merci pour le commentaire Riad :)
Google doc ? Tu pourrais expliciter l'intérêt ?
+1 pour google wave (ou encore http://etherpad.com/, qui est vraiment simplifié mais offre un environnement similaire à google wave pour la communication collaborative ^^).
+1 pour le tracking !
Pour le Google Doc, bain il sert tout simplement à travailler en collaboration et au même moment sur le meme fichier que ce soit un document, une présentation ou un tableur. Très très utile.
Mais peut être qu'à long terme, il sera remplacé par Google Wave mais on est pas encore la.
Un EDI peut etre
essayer Pencil, un trés bon remplaçant pour balsamiq, gratuit. peut etre installer tant qu'une extension firefox ou une application standalone (Windows, Fedora)
http://www.evolus.vn/Pencil/Downloads.html
En effet, on me l'a d'ailleurs recommandé sur twitter (http://twitter.com/odelassi).
J'en profite pour signaler qu'il y a également : http://gomockingbird.com/
qui est aussi gratuit :)
Vous savez les articles de Amokrane c'est comme du bon vin: il faut que ça prenne du temps pour avoir des millesimes :)
J'aurais cependant quelques remarques si tu veux bien:
1. D'abord, apparement ton Server SVN est payant, je voudrais savoir si y'a pas une alternative gratuite autres que les Forge.
2. Pour le partage de ressources, je n'utilise pas EverNote mais plutot Delicious pour les URL et Tumblr pour tout le reste, je centralise tout ça grace à Netvibes.
3. Pour Bouml et le Model Driven Developpement, j'ai travaillé l'an dernier avec Leonardi, et franchement j'en ai un mauvais souvenir, je me demande vraiment si c'est outils valent vraiment le coup.
4. Maintenant pour les Mockups, moi j'utilise Visual Studio pour faire mais interfaces en 2, 3 min et je suis satisfait, j'ameliore le tout a la fin du projet (si fin il y a :)pas besoin d'autres outils!
5. Audela des outils, a mon avis il est plus important de maitriser a fond le language sur lequel on travail.
Maintenant, pour les outils que j'peux proposé:
0. d'abord, comment pouvoir vivre sans Visual Studio?
1. Outils de test unitaires (nunit sur du C#), toujours sur plateforme .NET, on parle de plus en plus de Code Contract, ça vaut le detours !
2. Je pense que des outils de gestion de projet(MS Project notamment) peuvent etre interessant sur certain projet meme petits.
3. Si on est une petite equipe, google group peut etre une solution efficace pour la communication.
4. Twitter et autres reseaux sociaux, pour tous ce que ça peut apporter: info, contact, serendipidité, etc.
5. Enfin, je ne peux toujours pas me separer de la feuille blanche, que ça soit pour la conceptions de mes classes ou de ma base de données, ou pour ecrire les premieres (et seules?) specs.
Voila, notre chere ami Scott Hanselman, y est allé de sa liste annuelle aussi: http://www.hanselman.com/blog/ScottHanselmans2009UltimateDeveloperAndPowerUsersToolListForWindows.aspx
A+
@iChaib Je pense qu'on peut trés bien vivre sans Visual Studio (si on ne fait pas de .NET). moi même je vis très bien ;)
et pour compléter les outils avec les serveurs SVN, Trac http://youknowriad.nomade-dz.com/svn-prives-et-trac-gratuits/
Merci de ton commentaire Ismail :)
Faire ses mockup avec Visual Studio, moui à 50%..rien avoir avec un vrai outil dédié à ça !
La feuille blanche, yess j'avais oublié ça :). J'avoue que les idées viennent plus rapidement à l'esprit lorsque je tiens un stylo et un papier au lieu d'un clavier :P.
+1 pour l'article de Riad concernant les SVN et trac gratuits !
Etant donné que mon projet actuel est à caractère académique je m'en fiche un peu qu'il soit public :)
Merci Amokrane merci Riad :)
Sinon, c'est prouvé scientifiquement: Visual Studio améliore la qualité de vie ;)
Je capote pour shared view, j'ai toujours eu du mal à configurer les applications toute seule. donc merci pour le tuyau.
Sinon ton binome est trop beau ^^
+1 pour le blog
au plaisir
Enregistrer un commentaire