Comment convaincre un membre de l'équipe d'utiliser un framework web? [fermé]


10

La question est la suivante et le détail suit: y a-t-il quelque chose que je puisse dire / évoquer, en tant que programmeur, pour l'amener à mes côtés?

J'adorerais entendre des arguments valables pour les deux parties sur celui-ci, mais surtout des suggestions sur la façon de lui parler.


Ma situation est la suivante: je travaille sur un projet d'équipe sur mon cursus, en construisant un site Web de taille moyenne comme prototype pour l'université. Tous sont considérés comme égaux dans le groupe et il n'y a pas de chef désigné, donc la réponse à ce problème ne peut pas être "tirer le rang".

Tous sont égaux, mais il existe un énorme fossé de connaissances entre les membres. Le membre de l'équipe en question et moi sommes tous deux des développeurs compétents, bien qu'il ne possède aucune expérience de l'industrie. Les trois autres membres sont moins capables et deux ont complètement abandonné le développement. Tous les trois ont refusé de commenter la situation en raison du manque de connaissances.

En tant que groupe, nous venons de décider quelles technologies utiliser dans la mise en œuvre du site Web; en particulier, s'il faut utiliser un framework PHP (Code Igniter) ou non.

Je plaide en faveur, citant:

  1. Ne pas réinventer la roue
  2. Base de code bien écrite et testée pour travailler à partir de
  3. Pour commencer (le délai est plus proche que nous le souhaiterions)
  4. Vitesse de développement
  5. Modèles de conception et bonnes pratiques solides et maintenables

Il plaide en faveur de travailler comme il le faisait auparavant:

  • Ecrire des fonctions ponctuelles sur mesure dans un fichier "bibliothèque" quand il en a besoin
    • Fonctions pour l'accès aux données et le rendu de ces données sur la page, obtenir / paramétrer vers et depuis la session et obtenir / publier des données, etc.
  • Avoir 1 fichier par page (n'entraînant aucune séparation des préoccupations entre le contrôle, la présentation et les données)

Ses raisons contre l'utilisation de framework sont principalement basées sur le fait qu'il ne peut pas voir le point: il peut déjà faire toutes ces choses. Le cadre ne change pas cela, cela le rend juste plus difficile parce qu'il doit apprendre le cadre; il ne veut pas utiliser de code qu'il n'a pas écrit personnellement.

Il a également déclaré que "peu importe la qualité de la base de code, car le projet n'est qu'un prototype et ne sera jamais maintenu". Pour moi, ce n'est pas une excuse pour écrire du code impossible à maintenir.

Je peux voir pourquoi il fait ces arguments, mais je conteste son "manque de préoccupation concernant la maintenabilité" et son "mépris pour une bonne conception", ou même la séparation des préoccupations. Cependant, je soupçonne qu'il n'a jamais étudié les modèles de conception, donc je ne sais pas à quel point il serait efficace de démontrer pourquoi sa méthode pourrait être impossible à maintenir.

Je veux me lancer dans ce projet, mais je ne veux pas le faire sans tenir compte de tout ce que j'ai appris au fil des ans. Comme je l'ai déjà dit, il n'y a aucune possibilité de se classer ici, et les autres membres de l'équipe ne sont pas prêts à intervenir. Dois-je simplement reculer et faire les choses à sa manière? Est-il trop têtu et inexpérimenté pour mieux savoir? Ou suis-je le têtu ici?

TL; DR Un membre inexpérimenté de l'équipe est têtu, comment puis-je le gagner?


2
Il est très difficile de trouver la vraie question dans votre article de blog :) Veuillez réviser d'une manière qui met l'accent sur les arguments techniques que vous faites tous les deux. Bien que nous ne puissions pas vraiment vous dire comment parler à une personne que nous ne connaissons pas, nous pourrions vous aider à aborder la situation du point de vue des programmeurs. Il semble y avoir une bonne question sur le prototypage évolutif là-dedans, mais je ne peux pas en être sûr ...
yannis

4
Certaines parties seraient probablement mieux adaptées à: area51.stackexchange.com/proposals/30887/professional-matters
Karlson

3
he doesn't want to use code he hasn't personally written.Il
ferait

4
@AndyBursh I want to know exactly how everything worksest un argument valable lors de l'apprentissage, ré-inventer la roue est en fait acceptable. Peut-être, juste peut-être, vous pourriez lire cela comme un appel à l'aide et non comme un entêtement.
yannis

4
since the project is only a prototype and will never be maintained Derniers mots :) Je souhaite avoir un dollar à chaque fois que j'ai fait cette supposition et découvert que l'impatience et la cupidité à court terme des hauts responsables ont décidé que le prototype EST le produit maintenant.
maple_shaft

Réponses:


20

Tu ne vas pas pouvoir le convaincre. Cela s'appelle l'effet Dunning-Kruger . Il est trop ignorant pour savoir ce qu'il ne sait pas et trop peur de perdre ce qu'il qualifie d'avantage.

Lorsque vous ne parvenez pas à parvenir à un consensus, vous devez plutôt parvenir à un compromis. Peut-être que vous pouvez diviser le travail afin que son besoin d'apprendre le cadre soit minime. Peut-être que vous avez une sorte de "conception" où vous le faites chacun pendant quelques semaines, puis l'équipe vote sur laquelle est la meilleure. Peut-être pouvez-vous impliquer votre professeur parrain ou qui que ce soit pour résoudre le lien.


3
+1 car cela arrive parfois dans le monde réel. J'ai été dans des emplois où je ne pouvais pas être d'accord avec un autre développeur sur la meilleure approche. Nous avons donc tous deux lancé un POC, puis examiné les avantages et les inconvénients de chacun. 9 fois sur 10, nous finirions par adopter une solution qui était un mashup des deux POC, et tout le monde a appris quelque chose du processus.
Timothy Baldridge

1
+1 pour avoir enseigné Dunning-Kruger! Tout le monde a besoin de savoir à ce sujet ..
Stephen Gross

Bah. Il est trop facile de citer Dunning-Kruger lorsque vous n'êtes pas d'accord avec quelqu'un - trop facile de les appeler stupides. Peut-être que le coéquipier pense que les cadres violent l'esprit de la mission, peut-être qu'il veut résoudre, de première main, les problèmes qu'un cadre résout, peut-être qu'il veut éviter le débat CodeIgniter, Cake, Symfony ... Ma première hypothèse n'était pas que c'était un idiot.
Corbin mars

1
@Corbin, Dunning-Kruger n'est pas un manque d'intelligence, c'est une inexpérience. Deux choses très différentes. Je suis d'accord que vos raisons pourraient être valables, mais le PO a dit que ce n'étaient pas les arguments qu'il faisait. Au lieu de cela, il "ne voit pas l'intérêt" d'utiliser des frameworks car il peut écrire quelque chose d'aussi bon lui-même à partir de zéro en moins de temps. Une personne inexpérimentée surestimant ses propres compétences par rapport à une solution dont il ne reconnaît presque rien est un exemple classique de Dunning-Kruger. De telles personnes ne peuvent pas être «amenées» à quelque chose, elles doivent être montrées.
Karl Bielefeldt

7

Un argument en votre faveur est la réutilisabilité des connaissances. Tous les membres de l'équipe qui apprennent un cadre bien connu et largement utilisé (comme CodeIgniter) pourront réutiliser leurs connaissances sur le prochain projet. Alors que la connaissance d'un hasard, la "bibliothèque" propriétaire n'est pas réutilisable. Cela peut bien résonner avec les autres membres de l'équipe, car ils préfèrent probablement acquérir des connaissances utiles et réutilisables sur ce projet.

Un autre argument pourrait être une mesure concrète des coûts de développement / maintenance. J'imagine qu'un développeur connaissant bien CodeIgniter peut se développer plus rapidement que votre collègue écrivant lui-même toutes ces fonctions propriétaires. Cela pourrait être démontré en vous faisant construire, vous et lui, une page Web identique - vous avec CodeIgniter, lui à sa manière - et en mesurant les délais d'exécution. Ensuite, effectuez un ensemble de modifications / extensions sur les pages, mesurant à nouveau le temps de réalisation. Bien sûr, le cahier des charges doit être préparé par une personne indépendante de vous deux, pour combattre en terrain neutre.

Un autre - comme vous l'avez mentionné - est la qualité du code. Une fois que les pages Web sont prêtes, exécutez le même ensemble de tests d'acceptation sur chacune et comparez la densité des bogues.

Bien sûr, lorsque vous êtes sous la pression du temps, il peut ne pas être possible de s'arrêter et de faire de telles mesures. Vous souhaitez donc probablement une résolution rapide de ce dilemme. Essayez de convaincre les autres membres de l'équipe (par exemple, en leur faisant lire les réponses à venir à votre message ici :-), pour augmenter la pression du groupe sur lui. Au final, s'il ne peut vraiment pas être convaincu, vous voudrez peut-être couper le projet en deux parties, une pour lui et - idéalement - une pour le reste de l'équipe, en utilisant CodeIgniter. Concentrez-vous sur votre propre rôle au mieux de vos capacités et laissez-le faire ce qu'il veut. Les résultats parleront probablement d'eux-mêmes.


J'aime l'idée d'un test de vitesse pour le démontrer. Quel genre de tests d'acceptation pourrions-nous exécuter? Je vais certainement suggérer cela, mais je ne suis pas sûr que cela conviendra bien à lui (ou au groupe) car nous avons tous d'autres délais à gérer, et je doute que quiconque soit particulièrement désireux d'écrire la spécification ou le "temps perdu" (comme Je suis sûr que ce serait mis) à ce sujet.
Andy Hunt du

1
La science, ça marche: xkcd.com/54
StuperUser

5

Je pense que vous devez engager les 3 autres coéquipiers. Vous devez tous les deux leur présenter vos arguments et leur expliquer les choses pour qu'ils comprennent. À la fin de la journée, ils devront également travailler avec cette base de code. Et si tous sont égaux, ils devraient avoir leur mot à dire sur ce avec quoi ils souhaitent travailler.

Je pense qu'une bonne approche serait que chacun de vous présente les avantages de vos solutions respectives et montre aux autres membres de l'équipe pourquoi vous pensez que c'est la meilleure façon de procéder. Laissez-les ensuite décider. Il y en a 3 donc ce sera le bris d'égalité.

Une chose que vous voudrez souligner est que si c'est votre projet principal et que les autres membres de l'équipe n'ont aucune autre expérience, ce projet doit refléter le travail qu'ils peuvent faire pour des employeurs potentiels. Si vous le faites correctement, cela peut être un bon sujet de discussion dans une interview. Je sais que je demande aux nouveaux diplômés de décrire leur projet senior et comment il a été conçu et développé.

S'ils vont avec l'approche de l'autre gars, vous devrez le sucer. Mais ne perdez pas espoir. Trouvez un bon design pour que le chaos qu'il écrit n'affecte pas tout. Si vous avez le temps, nettoyez le code et refactorisez certaines de ses affaires et montrez-lui qu'il n'a pas à réinventer la roue à chaque fois.


Honnêtement, je n'avais pas pensé à comment cela se reflétait sur les autres membres du groupe. Je ne manquerai pas de le souligner.
Andy Hunt du

1

Je pense que l'université est comme un bac à sable. La plupart des choses que vous faites là-bas ne sont pas utilisées dans le déploiement. Cela vous donne donc beaucoup plus de liberté pour expérimenter et sortir de votre zone de confort. Explorez de nouvelles choses car l'échec n'aura pas trop d'impact. Dans votre situation également, les membres de votre équipe ont l'avantage supplémentaire d'avoir quelqu'un avec des connaissances préalables pour les aider.

Quant à l'autre membre expérimenté de l'équipe, il n'avait pas besoin de venir à l'université s'il ne voulait rien apprendre de nouveau. C'est une bonne occasion d'apprendre quelque chose de nouveau et de l'ajouter à sa boîte à outils.

Et pour les membres de l'équipe inexpérimentés, leurs chances d'être employés / mieux employés augmenteront avec un cadre comme CodeIgniter sur leur CV (en fait, les connaissances pour le justifier sur leur CV).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.