J'aimerais lancer cette question pour voir de façon intéressante où se trouve le support.
Je vais admettre qu'au cours de mes 12 derniers mois, j'ai choisi TDD et beaucoup de valeurs Agile dans le développement de logiciels. J'étais tellement submergé de voir à quel point mon développement de logiciels était devenu meilleur que je ne les abandonnerais jamais par principe. Jusqu'à ... On m'a proposé un poste de contractuel qui a doublé mon salaire net pour l'année.
La société que j'ai rejointe n'a suivi aucune méthodologie spécifique, l'équipe n'avait pas entendu parler de quelque chose comme des odeurs de code, SOLID, etc., et je n'allais certainement pas m'en passer en passant du temps à faire du TDD si l'équipe n'avait même jamais vu des tests unitaires dans la pratique. Suis-je complet? Non, pas complètement ... Le code sera toujours écrit "proprement" (selon les enseignements de l'oncle Bob) et les principes de SOLID seront toujours appliqués au code que j'écris en fonction de leurs besoins. Cependant, les tests ont été abandonnés pour moi, la société ne pouvait pas se permettre de remettre une telle inconnue à l'équipe qui, bien franchement, même si j'ai créé des cadres de test, ils n'utiliseraient / ne maintiendraient jamais correctement le cadre de test.
En utilisant cela comme exemple, à quel point diriez-vous qu'un développeur ne devrait jamais abandonner ses principes de fabrication pour des raisons d'argent ou d'autres avantages pour lui personnellement? Je comprends que cela peut être une opinion très personnelle sur la façon dont on est concerné par ses propres besoins, les besoins de l'entreprise, et par souci de savoir-faire, etc. Mais on peut considérer que, par exemple, les tests peuvent être abandonnés si la société décide qu'elle préfère avoir un l'équipe de test, plutôt que de comprendre les tests unitaires dans la programmation, est-ce que vous pourriez vous pardonner comme moi? Donc, étant donné qu'il y a quelque chose que vous abandonneriez, il devrait généralement y avoir un coût égal dans l'entreprise qui compense ce que vous abandonnez - avec un peu de chance, bien sûr, à moins que vous ne soyez à peu près prêt à vous remplir les poches et non à collaborer avec la communauté / la société; ).
Doublez votre argent, retournez à RAD? Ou continuez et cherchez quelqu'un qui fait Agile, et ne regardez jamais en arrière ...
Réponses:
Depuis que je suis devenu accro aux tests unitaires il y a plus de 10 ans, dans la majorité de mes lieux de travail, j'étais le premier à en avoir entendu parler. Néanmoins, j'ai continué à écrire mes petits tests unitaires chaque fois que je le pouvais et à estimer le coût des tests unitaires dans mes tâches. Chaque fois que quelqu'un me posait des questions sur mes habitudes de codage, je disais ce que je faisais et pourquoi cela fonctionnait pour moi. Habituellement, au moins certaines des personnes étaient intéressées, et finalement j'ai pu faire des présentations sur le sujet et encadrer les gens pour qu'ils écrivent leurs premiers tests unitaires.
Vous n'avez pas besoin de commencer à convaincre les gens de la manière agile dès le premier jour sur votre nouveau lieu de travail. Suivez simplement autant que possible les principes de votre propre travail. Si vous le faites bien, vous fournirez un meilleur code. Si vos collègues et / ou la direction le remarquent, ils vous demanderont comment vous le faites. Ensuite, vous pouvez leur dire.
Mise à jour
La plupart des développeurs (et gestionnaires) chevronnés ont vu les tendances et les modes se succéder, de sorte qu'ils ne sont pas excités par les derniers mots à la mode. Cependant, si vous pouvez démontrer qu'une certaine approche (outil, mode de pensée) fonctionne vraiment dans la pratique, dans le projet réel , ceux qui se soucient de leur métier s'asseoiront presque sûrement et écouteront. Mais si vous n'avez pas de telles personnes dans votre équipe, il est peut-être temps de chercher un meilleur endroit ...
la source
C'est là que je pense que tous les développeurs devraient également connaître un peu la gestion de projet. Tout est un compromis entre le temps, l'argent et les ressources. Considérez-vous comme la ressource.
Au cours de mes 12 années de programmation, je ne pense pas avoir déjà terminé un projet et je l'ai pensé comme terminé ou achevé dans mon esprit. Il y avait toujours quelque chose que j'aurais aimé pouvoir faire mieux ou plus propre. Il m'a fallu beaucoup de temps pour réaliser que c'était à cause de ces compromis.
Donc, si vous songez à changer d'emploi simplement parce que les méthodologies ne sont pas là, je penserais encore si j'étais vous. Ces compromis sont constants et s'appliquent à tous les développeurs de logiciels. Même les développeurs de jeux les plus dévoués souhaiteraient pouvoir refaire certaines choses ou répéter une méthodologie différente s'ils en avaient l'occasion.
Je dirais que vous devriez regarder vos pratiques de développement agile et réaliser que vous pouvez le faire même au niveau micro. Bien sûr, vos coéquipiers pourraient être à la la-land en faisant ce qu'ils veulent, mais votre satisfaction personnelle sera plus grande et vous générerez certainement un meilleur code qu'eux à long terme. Ensuite, lorsque le manager vient vous demander pourquoi votre code est tellement meilleur, vous avez la possibilité de convertir l'équipe :)
Mais si vous n'aimez pas les gens ou le travail, je pense que vous connaissez déjà la réponse. Mais je doute fortement que quiconque entre dans la pièce et vous dise de ne pas utiliser les principes de développement agile lors du codage ... s'ils le font ... exécutez des cris.
la source
Ne laissez jamais tomber quelque chose qui vous rendra malheureux à long terme. Bien sûr, vous pouvez commencer dans le no-mans-land et essayer de faire bouger l'équipe dans votre direction. Si vous êtes prêt à faire l'effort et que le travail en vaut la peine, cela peut même être un défi intéressant.
Mais si vous devez quitter les choses mêmes qui gardent le plaisir de coder (ou n'importe quel travail d'ailleurs), mon expérience est que vous vous éloignerez tôt ou tard. J'ai appris que la frustration ne doit jamais être sous-estimée ...
la source
Les gens de votre dernier emploi connaissaient déjà TDD, SOLID, etc. C'est super. Je suis sûr que vous avez aimé travailler là-bas et beaucoup appris. Maintenant, vous avez la possibilité d' enseigner ces concepts (tout en gagnant beaucoup d'argent en même temps). D'après mon expérience, devoir enseigner un concept à quelqu'un d'autre m'a toujours aidé à l'apprendre moi-même encore plus en détail. Soyez patient avec eux et continuez à pousser vos concepts un par un. Lorsque vous êtes frustré, rentrez chez vous et comptez votre argent. Ou recherchez un support sur SE.
la source
Je dois admettre que je suis ab * tch à cet égard. En tant que pigiste, quelle que soit la méthode que le client considère comme la bonne pour le projet, cela me convient. Cela ne signifie pas que l'argent est la seule chose qui m'importe, mais la décision sur ce qu'il faut faire et ce qu'il faut laisser est au client. Cependant, je n'accepterais pas de mauvaises conditions de travail (bruyantes, longues heures, etc.).
la source
Je veux citer un de mes anciens collègues. Il a dit que chaque fois qu'il cherche un emploi ou un projet à temps partiel, le projet doit répondre à trois critères:
A la lecture de votre question, ce projet ne répond qu'aux derniers critères.
Comme vous vous passionnez pour TDD (tout comme moi), je pense que vous vous promènerez quotidiennement et souhaiterez que tous vos collègues aient atteint la même vision que vous. Les premiers critères ne seraient donc probablement pas remplis.
Deuxièmement, si vous souhaitez poursuivre des projets TDD, et peut-être acquérir plus d'expérience avec la constitution d'équipes agiles, alors travailler sur ce projet ne vous aidera pas à renforcer ces compétences. Par conséquent, la seconde ne sera probablement pas remplie non plus.
Donc, personnellement, si j'étais à votre poste et que je n'étais pas en mesure d'aider à introduire le TDD dans l'entreprise, je chercherais ailleurs.
la source
Jamais.
La vie est trop courte (surtout en vieillissant) pour faire des choses que vous allez détester.
Bien sûr, il est plus difficile de changer d'emploi et il y a moins de lieux de travail.
Mais au moins, seul le code hérité sent mauvais. (Et j'ai l'autonomie, donc nous pouvons faire des choses sensées comme passer une semaine à éliminer les avertissements du compilateur de la base de code héritée ....)
la source
Bref, la méthodologie de développement ne fait pas partie de vous. Ce n'est pas une religion et ce n'est pas qui vous êtes. C'est un outil. Faites ce qu'on vous dit, comment on vous le dit et gagnez de l'argent supplémentaire. Des milliers de systèmes ont été développés et fonctionnent aujourd'hui sans TDD, Code Smell, etc. Dans quelques années, personne ne saura ce que signifient ces termes car les méthodologies vont et viennent plus fréquemment qu'un bus de ville. Travaillez dur comme on vous le dit et prenez l'argent c'est apprécié à tout moment et tout le temps :)
la source
Assurez-vous simplement que travailler avec la nouvelle équipe est un bon investissement de votre temps.
Peut-être fonctionnent-ils de manière plus efficace que ce que vous avez rencontré jusqu'à présent? Si c'est le cas, travailler avec eux sera une grande expérience d'apprentissage pour vous (donc un bon investissement).
En revanche, les méthodologies de la nouvelle équipe peuvent avoir peu de valeur pour vous (trop de "codage cowboy" etc). Dans ce cas, l'argent supplémentaire n'en vaut probablement pas la peine (sauf s'il s'agit d'une start-up pré-IPO ou de quelque chose d'extraordinaire). Vous n'apprendrez probablement pas grand-chose ... et vous risquez de vous épuiser.
la source
Je ne travaillerais pas quelque part qui ne me permettrait pas de travailler comme je le voulais. J'entends par là que je ne veux pas être microgéré.
Je travaille en supposant que je suis bon dans ce que je fais, et si vous me donnez des tâches, je les ferai efficacement. La façon dont je les implémente, à condition de ne pas casser vos directives et modèles de code, dépend de moi. C'est la partie amusante de mon travail.
Si je voulais faire un test unitaire pour chaque classe que j'écris, cela pourrait être un problème, mais écrire des tests unitaires est généralement bien, à condition de respecter les délais. Je m'attends à ce qu'un promoteur de TDD soutienne que l'écriture de tests unitaires augmente réellement la productivité (plus tard, etc.). Si j'étais à votre place, j'écrirais des tests unitaires qui me feront gagner du temps (vraisemblablement moins de bugs, des corrections plus faciles). Si vous réinvestissez ce temps économisé dans plus de tests, cela augmentera encore plus le temps et finalement vous pourrez vous asseoir avec un grand sourire lorsque vous aurez une impressionnante suite de tests, et pourrez facilement vérifier vos changements de code lors de la nouvelle 11e heure l'exigence entre en jeu.
Si je ne pouvais pas faire ça, alors je ne sais pas si je voudrais y travailler.
Ce que je dis, c'est que je pense qu'il devrait y avoir des concessions mutuelles - un peu de négociation. Plus ils me paient, moins j'attends de subtilités non monétaires. Mais j'ai toujours besoin d'un niveau d'autonomie et de respect de soi, surtout quand il n'y a pas lieu de refuser. Je laisserai tomber tout autre principe tant que j'aurai ce peu d'autonomie. Après tout, ce qui pourrait ressembler à une méthodologie folle à l'envers pourrait être la meilleure chose que vous ayez jamais faite!
la source