Je suis entrepreneur d'une grande entreprise. Actuellement, il y a trois développeurs sur le projet, moi y compris.
Le problème est que les 2 autres développeurs ne comprennent pas vraiment. Par "ça", je veux dire ce qui suit:
- Ils ne comprennent pas les meilleures pratiques pour la technologie que nous utilisons. Après 6 mois de moi et d'autres qui leur ont donné des exemples, de terribles anti-schémas sont utilisés.
- Ce sont des programmeurs "copier-coller" qui produisent principalement du code spaghetti.
- Ils cassent constamment les choses, mettent en œuvre des changements mais ne font pas un test de fumée de base pour voir si tout va bien
- Ils refusent / rarement de demander des revues de code.
- Ils refusent / font rarement des choses de base comme le formatage du code.
- Aucune documentation sur les classes (jsdocs)
- Peur de supprimer du code qui ne fait rien
- Laissez des blocs de code commentés partout même si nous avons un contrôle de version.
Je me sens de plus en plus frustré lorsque je formate d'autres codes, corrige des bogues, découvre des fonctionnalités qui sont cassées et crée des abstractions pour supprimer les spaghettis.
Je ne sais vraiment pas quoi faire. J'essaie de ne pas être frustré, mais c'est juste un gâchis. J'aime ces personnes en tant que personnes, mais j'ai l'impression que la situation de codage est si mauvaise que je pourrais aller plus vite si elles naviguaient simplement sur le Web toute la journée.
Serait-il hors de propos de demander à notre responsable d'examiner les autres accès de validation svn; les commits ne peuvent être effectués qu'après un examen par une personne qui connaît bien ce que nous faisons? En tant qu'entrepreneur, je ne sais pas si c'est le meilleur choix.
Existe-t-il une manière subtile / pas si subtile de préciser combien de choses je corrige?
Réponses:
J'ai quelque chose comme ça dans mon équipe. J'ai fait de gros efforts pour amener les gens à faire la bonne chose et cela n'a pas fonctionné comme prévu, j'ai donc opté pour une solution différente.
Tout d'abord, je suis allé voir mon responsable et nous avons conclu un accord, aucun code ne rentre dans le contrôle de code source sauf s'il est couvert par des tests unitaires. Si le code entre sans tests unitaires, j'ai un droit de veto pour annuler immédiatement la validation et envoyer un ping à la personne responsable pour qu'ils puissent travailler sur les tests, puis pousser le code.
Avec cette règle en place, j'exécute régulièrement des outils de couverture de code (dans ce cas, jacoco dans notre build sbt ) pour m'assurer que les morceaux sont correctement couverts et je fais également des refactorings et des revues de code en permanence dans tout code poussé par eux. Comme il s'agit d'un projet Java et Scala , j'ai beaucoup d'outils pour m'aider à attraper des choses qui ne devraient pas être là ou qui ne fonctionnent pas comme nous le pensons, je ne sais pas comment vous pouvez faire la même chose avec JavaScript mais peut-être qu'il y a une solution.
La principale chose que je crois est de m'aider à suivre le rythme est que j'ai une vision claire de ce que j'attends du projet et de son architecture principale, donc chaque fois que je vois quelque chose qui ne reflète pas cette vue, je peux y aller et répare le. Vous devez faire de même, définir votre point de vue, les modèles à utiliser, la façon dont le code doit être écrit et vous tenir au courant, en les laissant toujours (et votre direction) savoir ce qui se passe et ce qui empêche le projet d'avancer. plus rapide.
Il y aura sûrement un moment où soit ils abandonneront et agiront correctement, soit la direction recevra le message et les supprimera du projet.
la source
Je suis sûr que maintenant vous avez vu mes commentaires et mon autre post, je ne vais donc pas prétendre connaître la réponse. Le mieux que je puisse offrir est un résumé de ce que j'ai entendu / lu des autres et ajouter une partie de ma propre expérience au mélange.
Tout d'abord, je tiens à dire qu'il y a quelque temps, je suis tombé sur un blog qui appartient à l'un de nos propres membres Programmers SE, Martin Blore et IMO, ce seul article spécifique sur l' auto-actualisation TDD est très précis. TDD est le dernier niveau le plus élevé qui relie tout, mais sans les niveaux précédents, en particulier le plus grand, les principes et les pratiques de production de code clair et lisible, il sera très difficile, voire impossible, de faire fonctionner TDD.
Dans mon entreprise, Agile et TDD nous ont été imposés par la direction, et au début nous les avons simplement fait parce qu'on nous l'avait dit (ce qui est l'opposé de l'agile). Nous avons essayé TDD deux fois et bien que je sois un grand partisan des tests automatisés, j'ai personnellement rejeté tous ceux que l'équipe a giflés ensemble dans la dernière version. Ils étaient fragiles, gigantesques, copiaient / collaient le wazoo et criblés de phrases de sommeil qui les faisaient courir très lentement et de façon imprévisible. Mon conseil pour votre équipe: NE PAS FAIRE TDD ... pour le moment.
Je ne sais pas quelle est votre situation parce que vous avez mentionné que vous travaillez pour l'entreprise depuis seulement 6 mois et que vous êtes un entrepreneur. Vos objectifs à long terme sont-ils de rester avec cette entreprise ou le contrat va-t-il expirer? Je demande parce que même si vous faites quelque chose, cela pourrait prendre un certain temps pour voir les résultats.
De plus, lorsque vous vous joignez à une équipe, il faut généralement du temps avant d'obtenir suffisamment de crédibilité et de respect de votre équipe où elle (les développeurs et la direction) considérerait même tout ce que vous proposez. D'après mon expérience, cela aide si vous éteignez quelques feux et démontrez que vous avez des compétences et des connaissances sur lesquelles les autres peuvent compter. Je ne sais pas si 6 mois suffisent. Très souvent, une nouvelle personne ambitieuse se joindrait à l'équipe, puis ferait un post ici demandant comment ils peuvent changer le monde. La triste réalité est qu'ils ne peuvent tout simplement pas.
En supposant que vous ayez le respect et l'attention de votre équipe. Maintenant quoi?
Tout d'abord, la direction et les développeurs doivent être conscients qu'il y a un problème. La direction mesure les résultats en termes de travail livré. S'ils sont satisfaits de la quantité et de la qualité actuelles des fonctionnalités, alors la triste réalité est qu'ils n'écouteront pas. Comme d'autres l'ont souligné, sans le soutien de la direction, il sera extrêmement difficile d'introduire tout type de changement.
Une fois que vous obtenez un support de gestion, l'étape suivante consiste à creuser profondément et à identifier les causes profondes de la raison pour laquelle l'équipe fonctionne comme elle le fait. Ce sujet suivant est quelque chose qui est une de mes recherches personnelles depuis un petit moment maintenant. Jusqu'à présent, cela a été mon voyage:
la source
Je vous suggère de parler à votre responsable de la question, mais il ne voudra certainement pas revoir chaque enregistrement.
Au lieu de cela, je suggère que vous suggériez une suite de tests unitaires / de régression, à raccorder à SVN et à exécuter pour chaque enregistrement. Cela vous aidera au moins à éviter les versions cassées. Vous pouvez progressivement proposer d'autres bonnes pratiques.
S'il se révèle totalement non réceptif, vous devriez peut-être passer par-dessus sa tête. Si vous décidez de le faire, vous devrez apporter votre meilleur jeu. Si vous le faites, vous proposerez essentiellement à la direction d'être embauché à un niveau supérieur.
la source