J'ai un problème avec mes coéquipiers. Longue histoire courte: nous sommes trois étudiants travaillant lors d'un projet de compétition. Le projet se compose de 2 applications distinctes: une pour Windows (que je développe) et une pour Android (mes collègues sont responsables de la développer). Nos bases de code ne se croisent jamais, les applications communiqueront. via des outils tiers.
Le problème est le suivant: J'ai une expérience de travail dans des équipes car j'ai fait un stage dans une grande entreprise l'année dernière et j'essaie d'appliquer des normes de codage pour notre code. J'ai également mis en place un logiciel de référentiel git/wiki/collaboration que nous pouvons utiliser pour appuyer des idées de code/d'écriture, de protocoles de document, etc., mais il semble que je suis le seul à utiliser ces outils.
J'ai essayé de leur dire que l'écriture de code de qualité et de documenter chaque étape nous bénéficiera à long terme, mais ils ne semblent pas en voir l'avantage. De plus, je pensais ajouter des tests d'intégration, mais d'après ce que je peux voir, tant qu'ils n'utilisent pas d'outils actuels pour faciliter leur vie, je ne pense pas pouvoir les convaincre de l'utilité des tests d'intégration.
La majeure partie du code de l'homologue réside sur leurs ordinateurs, ils ne partagent pas de base de code commun et, comme je l'ai découvert, ils ont intégré leurs pièces en rencontrant et en partageant le code via une clé USB.
Ma question est la suivante: suis-je trop dur à ce sujet? Est-ce que j'applique des règles absurdes? N'oubliez pas que ceci est un petit projet, les exigences sont très claires (j'ai créé des documents spécifiant ce que les applications devraient le faire), trois développeurs qualifiés pourraient le faire en 3-4 jours, afin de ne pas voir la complexité supplémentaire de la qualité de l'écriture code tant que leur méthode actuelle fonctionne simplement.
Y a-t-il un moyen de leur montrer l'avantage de la documentation du code, de l'utilisation de GIT, etc.
Ma question est la suivante: suis-je trop dur à ce sujet?
Vous pouvez mener un cheval à l'eau, mais vous ne pouvez pas le faire boire.
Il est difficile de dire si vous êtes "trop dur", mais il peut être irréaliste d'attendre que vos coéquipiers adoptent toutes les infrastructures que vous espérez. Et vraiment, si l'équipe fonctionne bien ensemble, l'utilisation d'un wiki pour communiquer entre trois personnes est probablement surchargée.
Échelle de vos attentes et recherchez des moyens d'atteindre certains de vos objectifs sans les avoir besoin de commencer à utiliser des outils qu'ils ne connaissent pas. S'ils ne savent pas comment utiliser Git, ils ne vont probablement pas en tirer profit. Cependant, vous voulez toujours vous assurer que tout code est sauvegardé en cas d'échec du disque dur ou d'une autre catastrophe, alors demandez-leur de copier périodiquement leur dossier de projet sur un service de partage de fichiers Google, Dropbox ou similaire. Assurez-vous de faire la même chose.
Mon attitude est que si vous pouvez apprendre à faire ces choses sur de petits projets, vous serez prêt lorsque de grands projets viennent.
S'ils suivent une bonne pratique de développement avec ce projet, ils auront du code pour montrer aux futurs employeurs, et ils auront une expérience qui les ferait de précieuse en tant qu'employés.
Si vous voulez plus de matériel pour les convaincre, je vous référerais au programmeur pragmatique , ou code complet .
D'autre part, envisagez de les couper du mou. Si le projet est une preuve de concept qui devient binifiée juste après la compétition, vous devriez envisager de les laisser faire comme ils le font. Ils pourraient avoir du mal à écrire le code en premier lieu, sans la surcharge mentale des bonnes pratiques.
J'ai bien peur que les règles que vous avez décrites ne soient pas du tout de base.
La tâche la plus facile la tâche convaincue vos coéquipiers d'utiliser certaines normes de codage. Et un moyen simple d'y parvenir est de leur montrer la même extrait de code une fois au format bien formaté, puis mal de style, leur demander de lire le code, de comprendre ce qu'il fait et de les laisser se juger.
Ce qui vient à utiliser un référentiel git, cela peut être une douleur aux novices. Quand je travaillais dans une équipe de 3 personnes sur un projet Android, nous avons eu beaucoup de problèmes avec notre système de contrôle de version au début. Je pense donc que vos coéquipiers auront aussi le problème.
Vous avez mentionné qu'il faudrait 3-4 jours pour que le développeur expérimenté puisse terminer le projet (je suppose que cela prendrait votre équipe 2 à 3 fois plus longtemps). Ceci est une très courte période, donc l'argument selon lequel l'utilisation de nouveaux outils aidera à long terme ne fonctionnera tout simplement pas.
Ce que vous pouvez faire, c'est faire des démos courts et simples pour montrer comment ces outils sont utilisés. Couvrir les fonctions les plus élémentaires d'abord, asseyez-vous à leur côté et les aider à utiliser les outils. Préparez-vous à faire toutes les tâches telles que la configuration de la GIT, créant la structure de la page Wiki, etc.
Edit: En réponse au commentaire, je pense que l'établissement de tâches claires, d'estimations et de délais et de suivre le temps passé est plus important que d'utiliser des outils GIT ou similaires. Si vous envisagez de travailler sur l'application plus tard, il est très important de garder une piste ce qui est déjà fait et de la fréquentation de chaque fonctionnalité. Je vous suggère donc de commencer à la gestion des tâches, puis de passer aux outils que vous souhaitez utiliser.
En fait, j'aime bien les pensées de Joel Spolsky, comme il a été mis en place Obtenir les choses en cours lorsque vous n'êtes qu'un grognement . Résumer:
La documentation, le wiki, le logiciel de versement, les méthodologies, etc. sont des expériences et des enseignements tirés dans le temps; Travailler plusieurs projets et probablement sur plusieurs équipes. Et cela colle habituellement avec ceux déjà employés ou qui prennent leur secteur au sérieux. Ce sont des étudiants, de sorte que leurs intérêts sont probablement peu limités de ce qui se passe à l'avenir. :)
Mais pour essayer de répondre à votre question:
Si vous êtes dans une équipe avec eux, vous devez appliquer ce que vous pensez être important d'une manière qui profite à leurs intérêts. Par exemple: devraient-ils se plaindre de leur code qui se brise beaucoup lorsque la USB-partage-la? Ensuite, peut-être leur donner une manière simple (non compliquée) d'utiliser SVN (plutôt que git) en tant qu'outil de versement.
Je suis également d'accord avec le commentaire d'Arnaud.
Vous avez vu l'avantage de tous ces outils lorsque vous travailliez avec eux et c'est ainsi que vous avez vu la valeur en eux et pourquoi vous comprenez leur utilisation. Si vos coéquipiers ne voient pas une valeur ajoutée dans la manière dont ils font actuellement des choses, ils ne l'appliqueront pas. Et la chose triste est que cela compte même pour les équipes faites de personnes avec n'importe quel niveau d'expérience.
L'approche a des problèmes:
Votre approche n'est pas symétrique. Vos autres membres de l'équipe doivent changer, mais vous n'apprenez pas leurs bonnes pratiques. L'application des règles dans la situation comme celle-ci est difficile. Une meilleure approche serait de collecter de bonnes règles et pratiques de tous les membres de l'équipe, puis tout le monde lit simplement le document résultant.
L'apprentissage est difficile. Les autres règles du peuple n'ont tout simplement pas de sens parce que ces règles ne disposent pas de la structure logique que vos programmeurs s'attendent. L'application des règles qui n'a pas de sens ne sont pas une activité utile.