web-dev-qa-db-fra.com

Comment convaincre mes coéquipiers de suivre des règles de base

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.

28
razvanp

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.

43
Caleb

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.

22
Gustav Bertram

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.

10
superM

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:

  1. Faites-le simplement - Écrivez des fichiers de fabrication, créez un serveur de construction quotidien, etc.
  2. Personne n'utilise la commande source ou les bases de données de bugs? Commencez-les vous-même. Si quelqu'un signale un bogue contre votre travail, demandez-leur poliment d'utiliser la base de données de bugs pour signaler les bugs afin que vous puissiez suivre une trace. Sinon, vous ne serez pas capable de les garder directement dans votre tête et de les réparer. Sur n'importe quel projet non trivial, il y aura une situation que suffisamment solvable avec le contrôle de la source: utilisez le contrôle de la source pour le code par vous-même et survolez héroïquement pour économiser le jour où une telle situation se produit. Une fois que cela se produit plusieurs fois, ils deviendront convaincus
  3. Créer une poche d'excellence - Faites les bonnes choses pour vous-même: Spécification, planification, etc. puisque cela ne semble pas être un projet de travail, il ne le fait pas Il semble que vous puissiez prendre ce conseil tout en parcourant, car vous ne pouvez pas embaucher de nouveaux membres de l'équipe qui croient en votre message
  4. devenir inestimable - Démontrer que vous contributions à cimenter votre influence dans l'équipe. Sinon, vous courez le risque de devenir une personne qui valorise les processus et les outils sur les résultats
9
Jay

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.

4

L'approche a des problèmes:

  1. 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.

  2. 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.

  3. Tout le monde a appris différentes choses. Il est naturel que les programmeurs provenant de différents milieux ont appris différentes choses. Leurs forces sont différentes et styles de code d'écriture différent. Les outils qu'ils utilisent sont différents. Appliquer un ensemble de règles/outils/styles va être cauchemar car les limitations perdent la force de ces développeurs ont passé des années à apprendre.
  4. Le changement prend du temps. tandis que la personne qui a inventé les règles que vous appliquez une période assez facile à suivre les règles, tout le monde souffre et dépense du temps à apprendre les nouvelles règles. C'est une raison pour laquelle tous les membres de l'équipe devraient pouvoir modifier les règles.
  5. Choix des conventions d'outils/codages ou styles pour une équipe entière activité difficile. Cela ne peut être fait que lentement au fil du temps, testant ce qui fonctionne et ce qui ne fonctionne pas. Donner une équipe 2 semaines pour commencer à suivre 50 règles ne va pas fonctionner.
2
tp1