Publié par Simkim
Je ne suis toujours pas convaincu...
Je vais expliquer mon point de vue par un exemple. On a une équipe de 5 personnes qui sont Chef (il centralise et intègre tout), MappeurA, MappeurB, ScripteurA et ScripteurB.
Version sans Source Safe :
MappeurA fait ses 50 cartes et les envoies au fur et à mesure ou toutes en même temps à Chef qui les intègre dans le module.
MappeurB fait ses 50 cartes et les envoies au fur et à mesure ou toutes en même temps à Chef qui les intègre dans le module.
ScripteurA fait ses 50 scripts et les envois au fur et à mesure ou toutes en même temps à Chef qui les intègre dans le module.
ScripteurB fait ses 50 scripts et les envois au fur et à mesure ou toutes en même temps à Chef qui les intègre dans le module.
Version avec Source Safe :
MappeurA fait ses 50 cartes et les intègre directement dans le module.
MappeurB fait ses 50 cartes et les intègre directement dans le module.
ScripteurA fait ses 50 scripts et les intègre directement dans le module.
ScripteurB fait ses 50 scripts et les intègre directement dans le module.
Au final chacun aura mit autant de temps à faire son travail que ce soit avec Source Safe ou sans Source Safe (les mappeurs vont pas mapper plus vite et les scripteurs vont pas scripté plus vite). La différence est juste que les mappeurs et scripteurs auront directement mit leur travail dans le module si Source Safe est disponible. Il y a juste suppression de l'intégration et de l'envoie des éléments au l'intégrateur. C'est un gain plutôt négligeable de temps et la productivité n'est en rien améliorée.
Là où il y aurait eu un gain non négligeable c'est si certaines contraintes faisaient que l'intégration est longue et délicate. Par exemple si tu as une base de données et que tu travailles directement dessus, tu ne devrais pas avoir trop de bizarreries. Par contre, si tu essais de construire une base de données à partir de 4-5 bases tu vas t'amuser... Dans NWN on n'a pas trop ce problème là.
Pour avoir déjà travaillé (ou du moins essayé) en équipe, je peux dire tout de suite que la première proposition prend énormément plus de temps et demande beaucoup plus de travail sur un gros projet.
Tout d'abord, il faut prendre en compte les temps d'envois (Rien que pour renvoyer les versions mises à jour du module à chaque membre de l'équipe une fois que l'intégration a été faite, si le module fait plusieurs dizaines de Mo ça prend un peu de temps, tout le monde n'a pas une connexion très haut débit).
Autre point a ce sujet, chaque membre de l'équipe est obligé d'attendre les versions mises à jour avant de pouvoir commencer autre chose, tout le monde est dépendant de ce que font les autres et de leur rapidité car bien souvent les scripts d'un même module sont interdépendants (Il suffit que l'on mette en place un système un peu sophistiqué pour la gestion des quêtes et autres pour que tout dialogue ou toute quêtes nécessite d'avoir la dernière version de la bibliothèque gérant ce système).
Deuxieme point, si le Chef est indisponible, toute mise à jour se retrouve gelée. C'est très ennuyeux.
Troisieme point, lorsque l'équipe dépasse les 4-5 personnes, le boulot d'intégration du Chef devient absolument monstrueux. S'il est un minimum rigoureux, il doit vérifier que tous le contenu fourni soit conforme au guide de style demandé (S'il ne le fait pas, le module va devenir une véritable usine à gaz très difficile à contrôler au moindre bug). Donc passer en revue tout ce qu'on lui envoie... Et, en plus de cela, il va devoir mettre les mains dans le cambouis pour intégrer tous les scripts qu'on lui a refilé entre eux et avec les scripts déjà existants. Qu'il s'agisse d'une mise à jour d'une librairie, de systèmes nécessitant un préchargement au lancement du module ou d'autres choses agissant sur un peu tous les scripts et cela devient un véritable enfer ou il va passer plusieurs jours à tout faire fonctionner ensemble (C'est du vécu...
)
Bref, tout ça pour dire qu'une méthode pour que tous les membres travaillent sur les dernières versions des fichiers, avec un temps de synchronisation très rapide (il suffit simplement de mettre à jour les fichiers modifiés) permet non seulement de libérer le chef de projet de son travail de titan (et donc lui donner la possibilité de contribuer lui aussi à l'amélioration du module plutôt que de passer son temps à faire des intégrations) mais aussi d'accelérer le développement en supprimant les temps nécessaires à une mise à jour. Même si un des développeurs a du retard, les autres ne sont pas obligés d'attendre qu'il ai fini et que le module soit à jour pour reprendre leur travail.
PS : Evidement ce n'est pas toujours aussi imbriqué, les Mappeurs sont parfois beaucoup plus libres vis à vis des Scripteurs par ex, mais parfois non, et entre Scripteurs, c'est certainement beaucoup plus rare.