Bonjour Habr! Auparavant, je me plaignais de la vie dans le paradigme de l'infrastructure en tant que code et je n'avais rien proposĂ© pour rĂ©soudre la situation actuelle. Aujourdâhui, je suis de retour pour vous expliquer quelles approches et pratiques vous aideront Ă sortir de lâabĂźme du dĂ©sespoir et Ă orienter la situation dans la bonne direction.

Dans un article prĂ©cĂ©dent J'ai partagĂ© mes impressions sur ce domaine, essayĂ© de rĂ©flĂ©chir Ă la situation actuelle dans ce domaine et j'ai mĂȘme suggĂ©rĂ© que des pratiques standards connues de tous les dĂ©veloppeurs pourraient aider. Il peut sembler qu'il y a eu beaucoup de plaintes concernant la vie, mais il n'y a eu aucune proposition pour sortir de la situation actuelle.
Qui nous sommes, oĂč nous sommes et quels problĂšmes nous avons
Nous faisons actuellement partie de l'équipe Sre Onboarding, composée de six programmeurs et de trois ingénieurs en infrastructure. Nous essayons tous d'écrire l'Infrastructure as Code (IaC). Nous faisons cela parce que nous savons fondamentalement comment écrire du code et que nous sommes des développeurs « au-dessus de la moyenne ».
- Nous avons un ensemble d'avantages : un certain bagage, une connaissance des pratiques, la capacité d'écrire du code, une envie d'apprendre de nouvelles choses.
- Et il y a une partie qui s'affaisse, qui est aussi un inconvénient : le manque de connaissances sur le matériel d'infrastructure.
La pile technologique que nous utilisons dans notre IaC.
- Terraform pour créer des ressources.
- Packer pour assembler des images. Ce sont des images Windows, CentOS 7.
- Jsonnet pour créer un build puissant dans drone.io, ainsi que pour générer le packer json et nos modules terraform.
- D'azur.
- Ansible lors de la préparation des images.
- Python pour les services auxiliaires et les scripts de provisionnement.
- Et tout cela en VSCode avec des plugins partagés entre les membres de l'équipe.
Conclusion de mon Ă©tait comme ceci : j'ai essayĂ© d'inculquer (d'abord en moi-mĂȘme) l'optimisme, je voulais dire que nous allons essayer les approches et les pratiques que nous connaissons afin de faire face aux difficultĂ©s et complexitĂ©s qui existent dans ce domaine.
Nous sommes actuellement aux prises avec les problĂšmes IaC suivants :
- Imperfection des outils et moyens de développement de code.
- DĂ©ploiement lent. L'infrastructure fait partie du monde rĂ©el et elle peut ĂȘtre lente.
- Manque dâapproches et de pratiques.
- Nous sommes nouveaux et ne savons pas grand chose.
Extreme Programming (XP) Ă la rescousse
Tous les dĂ©veloppeurs connaissent Extreme Programming (XP) et les pratiques qui la sous-tendent. Beaucoup dâentre nous ont travaillĂ© avec cette approche, et cela a Ă©tĂ© couronnĂ© de succĂšs. Alors pourquoi ne pas utiliser les principes et les pratiques qui y sont Ă©noncĂ©s pour surmonter les dĂ©fis liĂ©s aux infrastructures ? Nous avons dĂ©cidĂ© d'adopter cette approche et de voir ce qui se passe.
Vérifier l'applicabilité de l'approche XP à votre secteur d'activitéVoici une description de l'environnement pour lequel XP est bien adapté et de ses relations avec nous :
1. Exigences logicielles changeantes de maniĂšre dynamique. Il Ă©tait clair pour nous quel Ă©tait lâobjectif final. Mais les dĂ©tails peuvent varier. Nous dĂ©cidons nous-mĂȘmes oĂč nous devons rouler, donc les exigences changent pĂ©riodiquement (principalement par nous-mĂȘmes). Si nous prenons l'Ă©quipe SRE, qui effectue elle-mĂȘme l'automatisation, et limite elle-mĂȘme les exigences et la portĂ©e du travail, alors ce point correspond bien.
2. Risques causés par les projets à durée déterminée utilisant les nouvelles technologies. Nous pouvons rencontrer des risques lors de l'utilisation de choses qui nous sont inconnues. Et c'est 100% notre cas. L'ensemble de notre projet reposait sur l'utilisation de technologies que nous ne connaissions pas entiÚrement. En général, c'est un problÚme constant, car... De nombreuses nouvelles technologies émergent constamment dans le secteur des infrastructures.
3,4. Petite Ă©quipe de dĂ©veloppement Ă©tendue colocalisĂ©e. La technologie automatisĂ©e que vous utilisez permet d'effectuer des tests unitaires et fonctionnels. Ces deux points ne nous conviennent pas tout Ă fait. PremiĂšrement, nous ne sommes pas une Ă©quipe coordonnĂ©e, et deuxiĂšmement, nous sommes neuf, ce qui peut ĂȘtre considĂ©rĂ© comme une grande Ă©quipe. Bien que, selon certaines dĂ©finitions d'une « grande » Ă©quipe, un lot compte plus de 14 personnes.
Examinons quelques pratiques XP et comment elles affectent la vitesse et la qualité des commentaires.
Principe de la boucle de rétroaction XP
à mon sens, le feedback est la réponse à la question : est-ce que je fais la bonne chose, y allons-nous ? XP a un plan divin pour cela : une boucle de rétroaction temporelle. Ce qui est intéressant, c'est que plus nous sommes bas, plus vite nous pouvons amener le systÚme d'exploitation à répondre aux questions nécessaires.

C'est un sujet de discussion plutÎt intéressant, car dans notre industrie informatique, il est possible d'obtenir rapidement un systÚme d'exploitation. Imaginez à quel point il est pénible de réaliser un projet pendant six mois et de découvrir ensuite seulement qu'il y a eu une erreur au tout début. Cela se produit lors de la conception et de toute construction de systÚmes complexes.
Dans notre cas d'IaC, les commentaires nous aident. Je vais immédiatement apporter un petit ajustement au schéma ci-dessus : le plan de publication n'a pas de cycle mensuel, mais a lieu plusieurs fois par jour. Il existe certaines pratiques liées à ce cycle du systÚme d'exploitation que nous examinerons plus en détail.
Important : les commentaires peuvent ĂȘtre une solution Ă tous les problĂšmes mentionnĂ©s ci-dessus. CombinĂ© aux pratiques XP, cela peut vous sortir de lâabĂźme du dĂ©sespoir.
Comment se sortir du gouffre du désespoir : trois pratiques
Tests
Les tests sont mentionnĂ©s deux fois dans la boucle de rĂ©troaction XP. Ce n'est pas juste comme ça. Ils sont extrĂȘmement importants pour lâensemble de la technique Extreme Programming.
On suppose que vous disposez de tests unitaires et d'acceptation. Certains vous donnent leur avis en quelques minutes, dâautres en quelques jours, ils prennent donc plus de temps Ă rĂ©diger et sont rĂ©visĂ©s moins souvent.
Il existe une pyramide de tests classique, qui montre quâil devrait y avoir davantage de tests.

Comment ce cadre sâapplique-t-il Ă nous dans un projet IaC ? En fait... pas du tout.
- Les tests unitaires, mĂȘme s'ils devraient ĂȘtre nombreux, ne peuvent pas ĂȘtre trop nombreux. Ou alors ils testent quelque chose de maniĂšre trĂšs indirecte. En fait, on peut dire que nous ne les Ă©crivons pas du tout. Mais voici quelques applications de tels tests que nous avons pu rĂ©aliser :
- Test du code jsonnet. Il sâagit par exemple de notre pipeline dâassemblage de drones, qui est assez compliquĂ©. Le code jsonnet est bien couvert par les tests.
Nous utilisons ceci . - Teste les scripts exĂ©cutĂ©s au dĂ©marrage de la ressource. Les scripts sont Ă©crits en Python et des tests peuvent donc ĂȘtre Ă©crits dessus.
- Test du code jsonnet. Il sâagit par exemple de notre pipeline dâassemblage de drones, qui est assez compliquĂ©. Le code jsonnet est bien couvert par les tests.
- Il est potentiellement possible de vérifier la configuration lors de tests, mais nous ne le faisons pas. Il est également possible de configurer des rÚgles de configuration des ressources de vérification via . Cependant, les vérifications y sont tout simplement trop basiques pour Terraform, mais de nombreux scripts de test sont écrits pour AWS. Et nous sommes sur Azure, donc cela ne s'applique pas encore une fois.
- Tests d'intĂ©gration de composants : cela dĂ©pend de la façon dont vous les classez et de l'endroit oĂč vous les placez. Mais en gros, ils fonctionnent.
Voici à quoi ressemblent les tests d'intégration.

Ceci est un exemple lors de la création d'images dans Drone CI. Pour les atteindre, il faut attendre 30 minutes que l'image Packer se forme, puis attendre encore 15 minutes pour qu'elles passent. Mais ils existent !Algorithme de vérification d'image
- Packer doit dâabord prĂ©parer complĂštement lâimage.
- à cÎté du test se trouve une terraform avec un état local, que nous utilisons pour déployer cette image.
- Lors du dépliage, un petit module situé à proximité est utilisé pour faciliter le travail avec l'image.
- Une fois la VM déployée à partir de l'image, les vérifications peuvent commencer. Fondamentalement, les contrÎles s'effectuent en voiture. Il vérifie le fonctionnement des scripts au démarrage et le fonctionnement des démons. Pour ce faire, via ssh ou winrm, nous nous connectons à la machine nouvellement créée et vérifions l'état de la configuration ou si les services sont opérationnels.
- La situation est similaire avec les tests d'intégration dans les modules pour Terraform. Voici un petit tableau expliquant les caractéristiques de ces tests.

Le retour sur le pipeline dure environ 40 minutes. Tout se passe depuis trĂšs longtemps. Il peut ĂȘtre utilisĂ© pour la rĂ©gression, mais pour le nouveau dĂ©veloppement, il est gĂ©nĂ©ralement irrĂ©aliste. Si vous ĂȘtes trĂšs, trĂšs prĂ©parĂ© Ă cela, prĂ©parez des scripts en cours d'exĂ©cution, vous pouvez alors le rĂ©duire Ă 10 minutes. Mais ce ne sont toujours pas des tests unitaires, qui font 5 piĂšces en 100 secondes.
L'absence de tests unitaires lors de l'assemblage d'images ou de modules Terraform incite à déplacer le travail vers des services distincts exécutables simplement via REST, ou vers des scripts Python.
Par exemple, nous devions nous assurer que lorsque la machine virtuelle dĂ©marre, elle s'enregistre dans le service , et lorsque la machine virtuelle a Ă©tĂ© dĂ©truite, elle s'est supprimĂ©e d'elle-mĂȘme.
Puisque nous avons ScaleFT en tant que service, nous sommes obligés de travailler avec lui via l'API. Il y avait un wrapper écrit là -bas que vous pouviez extraire et dire : « Entrez et supprimez ceci et cela ». Il stocke tous les paramÚtres et accÚs nécessaires.
Nous pouvons déjà écrire des tests normaux pour cela, car ce n'est pas différent d'un logiciel ordinaire : on se moque d'une sorte d'apiha, vous le tirez et voyez ce qui se passe.

RĂ©sultats des tests : Les tests unitaires, qui devraient donner le systĂšme d'exploitation en une minute, ne le donnent pas. Et les types de tests situĂ©s plus haut dans la pyramide sont efficaces, mais ne couvrent quâune partie des problĂšmes.
Programmation en binĂŽme
Les tests sont bien sĂ»r bons. Vous pouvez en Ă©crire beaucoup, ils peuvent ĂȘtre de diffĂ©rents types. Ils travailleront Ă leur niveau et nous feront part de leurs commentaires. Mais le problĂšme des mauvais tests unitaires, qui donnent le systĂšme dâexploitation le plus rapide, demeure. En mĂȘme temps, je souhaite toujours un systĂšme dâexploitation rapide, facile et agrĂ©able Ă utiliser. Sans parler de la qualitĂ© de la solution obtenue. Heureusement, il existe des techniques qui peuvent fournir un feedback encore plus rapide que les tests unitaires. Il sâagit dâune programmation en binĂŽme.
Lorsque vous écrivez du code, vous souhaitez obtenir un retour sur sa qualité le plus rapidement possible. Oui, vous pouvez tout écrire dans une branche de fonctionnalités (pour ne rien casser à personne), faire une pull request dans Github, l'attribuer à quelqu'un dont l'avis a du poids et attendre une réponse.
Mais vous pouvez attendre longtemps. Les gens sont tous occupĂ©s et la rĂ©ponse, mĂȘme sâil y en a une, nâest peut-ĂȘtre pas de la plus haute qualitĂ©. Supposons que la rĂ©ponse vienne immĂ©diatement, que le critique comprenne instantanĂ©ment l'idĂ©e dans son ensemble, mais que la rĂ©ponse arrive encore tard, aprĂšs coup. J'aurais aimĂ© que ce soit plus tĂŽt. Câest Ă cela que vise la programmation en binĂŽme â dĂšs la rĂ©daction de cet article.
Vous trouverez ci-dessous les styles de programmation en binÎme et leur applicabilité au travail sur IaC :
1. Classique, ExpĂ©rimentĂ©+ExpĂ©rimentĂ©, dĂ©calage par minuterie. Deux rĂŽles â conducteur et navigateur. Deux personnes. Ils travaillent sur le mĂȘme code et changent de rĂŽle aprĂšs une certaine pĂ©riode de temps prĂ©dĂ©terminĂ©e.
Considérons la compatibilité de nos problÚmes avec le style :
- ProblÚme : imperfection des outils et outils de développement de code.
Impact négatif : on met plus de temps à se développer, on ralentit, le rythme de travail se perd.
Comment nous combattons : nous utilisons un outil différent, un IDE commun et apprenons également des raccourcis. - ProblÚme : déploiement lent.
Impact négatif : augmente le temps nécessaire pour créer un morceau de code fonctionnel. On s'ennuie en attendant, nos mains se tendent pour faire autre chose pendant qu'on attend.
Comment nous combattons : nous ne lâavons pas surmontĂ©. - ProblĂšme : manque dâapproches et de pratiques.
Impact négatif : on ne sait pas comment bien faire les choses et comment les mal faire. Rallonge la réception des commentaires.
Comment nous combattons : l'échange mutuel d'opinions et de pratiques dans le cadre du travail en binÎme résout presque le problÚme.
Le principal problĂšme liĂ© Ă l'utilisation de ce style dans IaC est le rythme de travail inĂ©gal. Dans le dĂ©veloppement logiciel traditionnel, vous avez un mouvement trĂšs uniforme. Vous pouvez passer cinq minutes et Ă©crire N. Passez 10 minutes et Ă©crire 2N, 15 minutes - 3N. Ici, vous pouvez passer cinq minutes et Ă©crire N, puis passer encore 30 minutes et Ă©crire un dixiĂšme de N. Ici, vous ne savez rien, vous ĂȘtes coincĂ©, stupide. L'enquĂȘte prend du temps et dĂ©tourne l'attention de la programmation elle-mĂȘme.
Conclusion : sous sa forme pure, il ne nous convient pas.
2. Ping-pong. Cette approche implique quâune personne rĂ©dige le test et quâune autre effectue sa mise en Ćuvre. Compte tenu du fait que tout est compliquĂ© avec les tests unitaires, et qu'il faut Ă©crire un test d'intĂ©gration qui prend beaucoup de temps Ă programmer, toute la facilitĂ© du ping-pong disparaĂźt.
Je peux dire que nous avons essayĂ© de sĂ©parer les responsabilitĂ©s pour la conception d'un script de test et la mise en Ćuvre du code correspondant. Un participant a proposĂ© le scĂ©nario, dans cette partie du travail dont il Ă©tait responsable, il avait le dernier mot. Et lâautre Ă©tait responsable de la mise en Ćuvre. Cela a bien fonctionnĂ©. La qualitĂ© du scĂ©nario avec cette approche augmente.
Conclusion : hélas, le rythme de travail ne permet pas d'utiliser le ping-pong comme pratique de programmation en binÎme en IaC.
3. Style fort. . LâidĂ©e est quâun participant devient le navigateur directif et que le second joue le rĂŽle de pilote dâexĂ©cution. Dans ce cas, le droit de prendre des dĂ©cisions appartient exclusivement au navigateur. Le conducteur imprime uniquement et peut influencer ce qui se passe avec un mot. Les rĂŽles ne changent pas pendant longtemps.
Bon pour apprendre, mais nĂ©cessite de solides compĂ©tences gĂ©nĂ©rales. C'est lĂ que nous avons hĂ©sitĂ©. La technique Ă©tait difficile. Et ce n'est mĂȘme pas une question d'infrastructure.
Conclusion : cela peut potentiellement ĂȘtre utilisĂ©, nous ne renonçons pas Ă essayer.
4. Mobbing, swarming et tous les styles connus mais non rĂ©pertoriĂ©s Nous ne le considĂ©rons pas, parce que Nous ne lâavons pas essayĂ© et il est impossible dâen parler dans le cadre de notre travail.
Résultats généraux sur l'utilisation de la programmation par paires :
- Nous avons un rythme de travail inĂ©gal, ce qui prĂȘte Ă confusion.
- Nous nous sommes heurtés à des soft skills insuffisamment bonnes. Et ce domaine ne nous aide pas à surmonter nos lacunes.
- Les longs tests et les problÚmes avec les outils rendent le développement en binÎme difficile.
5. Malgré cela, des succÚs ont été enregistrés. Nous avons imaginé notre propre méthode « Convergence - Divergence ». Je vais décrire briÚvement comment cela fonctionne.
Nous avons des partenaires permanents pour quelques jours (moins d'une semaine). Nous accomplissons une tùche ensemble. Nous restons assis ensemble pendant un moment : l'un écrit, l'autre s'assoit et regarde l'équipe d'assistance. Ensuite, nous nous dispersons pendant un certain temps, chacun fait des choses indépendantes, puis nous nous réunissons à nouveau, nous synchronisons trÚs rapidement, faisons quelque chose ensemble et nous nous dispersons à nouveau.
Planification et communication
Le dernier bloc de pratiques grĂące auquel les problĂšmes du systĂšme d'exploitation sont rĂ©solus est l'organisation du travail avec les tĂąches elles-mĂȘmes. Cela inclut Ă©galement lâĂ©change dâexpĂ©riences en dehors du travail en binĂŽme. Examinons trois pratiques :
1. Objectifs Ă travers lâarbre des objectifs. Nous avons organisĂ© la gestion globale du projet Ă travers un arbre qui va sans fin dans le futur. Techniquement, le suivi se fait dans Miro. Il y a une tĂąche : câest un objectif intermĂ©diaire. De lĂ partent soit des objectifs plus petits, soit des groupes de tĂąches. Les tĂąches elles-mĂȘmes viennent d'eux. Toutes les tĂąches sont créées et maintenues sur ce tableau.

Ce systĂšme fournit Ă©galement un retour d'information, qui se produit une fois par jour lorsque nous nous synchronisons lors de rallyes. Avoir un projet commun devant tout le monde, mais structurĂ© et totalement ouvert, permet Ă chacun dâĂȘtre conscient de ce qui se passe et du chemin parcouru.
Avantages de la vision visuelle des tĂąches :
- CausalitĂ©. Chaque tĂąche mĂšne Ă un objectif global. Les tĂąches sont regroupĂ©es en objectifs plus petits. Le domaine de l'infrastructure lui-mĂȘme est assez technique. Il n'est pas toujours clair quel impact spĂ©cifique, par exemple, l'Ă©criture d'un runbook sur la migration vers un autre nginx, a sur l'entreprise. Avoir la carte cible Ă proximitĂ© rend les choses plus claires.

La causalitĂ© est une propriĂ©tĂ© importante des problĂšmes. Cela rĂ©pond directement Ă la question : « Est-ce que je fais la bonne chose ? » - ParallĂ©lisme. Nous sommes neuf et il est tout simplement physiquement impossible de confier tout le monde Ă une seule tĂąche. Les tĂąches dâun seul domaine ne suffisent pas toujours non plus. Nous sommes obligĂ©s de parallĂ©liser le travail entre petits groupes de travail. En mĂȘme temps, les groupes restent assis sur leur tĂąche pendant un certain temps, ils peuvent ĂȘtre renforcĂ©s par quelqu'un d'autre. Parfois, des gens se dĂ©tachent de ce groupe de travail. Quelqu'un part en vacances, quelqu'un fait un rapport pour la confĂ©rence DevOps, quelqu'un Ă©crit un article sur Habr. Savoir quels objectifs et quelles tĂąches peuvent ĂȘtre rĂ©alisĂ©s en parallĂšle devient trĂšs important.
2. Remplacement des prĂ©sentateurs des rĂ©unions du matin. Dans les stand-ups, nous avons ce problĂšme : les gens effectuent de nombreuses tĂąches en parallĂšle. Parfois, les tĂąches sont vaguement liĂ©es et on ne sait pas qui fait quoi. Et lâavis dâun autre membre de lâĂ©quipe est trĂšs important. Il s'agit d'informations supplĂ©mentaires qui peuvent changer le cours de la rĂ©solution du problĂšme. Bien sĂ»r, il y a gĂ©nĂ©ralement quelqu'un avec vous, mais les conseils et astuces sont toujours utiles.
Pour amĂ©liorer cette situation, nous avons utilisĂ© la technique « Changer le Leading Stand-Up ». Maintenant, ils tournent selon une certaine liste, et cela a son effet. Quand c'est votre tour, vous ĂȘtes obligĂ© de plonger et de comprendre ce qui se passe afin d'organiser une bonne rĂ©union Scrum.

3. DĂ©mo interne. L'aide Ă la rĂ©solution d'un problĂšme grĂące Ă la programmation en binĂŽme, la visualisation sur l'arbre Ă problĂšmes et l'aide lors des rĂ©unions Scrum le matin sont bonnes, mais pas idĂ©ales. En couple, vous n'ĂȘtes limitĂ© que par vos connaissances. Lâarborescence des tĂąches permet de comprendre globalement qui fait quoi. Et le prĂ©sentateur et ses collĂšgues de la rĂ©union du matin n'approfondiront pas vos problĂšmes. Ils pourraient certainement manquer quelque chose.
La solution a été trouvée en se montrant mutuellement le travail effectué et en en discutant ensuite. Nous nous réunissons une fois par semaine pendant une heure et montrons les détails des solutions aux tùches que nous avons effectuées au cours de la semaine derniÚre.
Lors de la démonstration, il est nécessaire de révéler les détails de la tùche et de s'assurer de démontrer son fonctionnement.
Le rapport peut ĂȘtre rĂ©alisĂ© Ă lâaide dâune liste de contrĂŽle.1. Entrez dans le contexte. D'oĂč venait cette tĂąche, pourquoi Ă©tait-elle mĂȘme nĂ©cessaire ?
2. Comment le problÚme a-t-il été résolu auparavant ? Par exemple, il fallait cliquer massivement avec la souris, ou il était impossible de faire quoi que ce soit.
3. Comment nous l'améliorons. Par exemple : « Regardez, maintenant il y a scriptosik, voici le fichier readme. »
4. Montrez comment cela fonctionne. Il est conseillĂ© d'implĂ©menter directement un scĂ©nario utilisateur. Je veux X, je fais Y, je vois Y (ou Z). Par exemple, je dĂ©ploie NGINX, je fume l'URL et j'obtiens 200 OK. Si lâaction est longue, prĂ©parez-la Ă lâavance pour pouvoir la montrer plus tard. Il est conseillĂ© de ne pas trop le casser une heure avant la dĂ©mo, s'il est fragile.
5. Expliquez dans quelle mesure le problÚme a été résolu, quelles difficultés subsistent, ce qui n'est pas terminé, quelles améliorations sont possibles à l'avenir. Par exemple, maintenant CLI, il y aura alors une automatisation complÚte dans CI.
Il est conseillé à chaque intervenant de s'en tenir à 5 à 10 minutes. Si votre discours est évidemment important et prendra plus de temps, coordonnez-le à l'avance dans le canal de reprise.
AprĂšs le face-Ă -face, il y a toujours une discussion dans le fil de discussion. Câest ici quâapparaissent les retours dont nous avons besoin sur nos tĂąches.

En consĂ©quence, une enquĂȘte est menĂ©e pour dĂ©terminer lâutilitĂ© de ce qui se passe. Il s'agit d'un retour sur l'essence du discours et l'importance de la tĂąche.

Longues conclusions et quelle est la suite
Il peut sembler que le ton de lâarticle soit quelque peu pessimiste. C'est faux. Deux niveaux infĂ©rieurs de feedback, Ă savoir les tests et la programmation en binĂŽme, fonctionnent. Pas aussi parfait que dans le dĂ©veloppement traditionnel, mais cela a un effet positif.
Les tests, dans leur forme actuelle, ne fournissent qu'une couverture partielle du code. De nombreuses fonctions de configuration ne sont finalement pas testĂ©es. Leur influence sur le travail rĂ©el lors de lâĂ©criture du code est faible. Cependant, les tests d'intĂ©gration ont un effet et permettent d'effectuer des refactorings sans crainte. C'est une grande rĂ©ussite. De plus, avec le dĂ©placement de l'attention vers le dĂ©veloppement dans des langages de haut niveau (nous avons python, allez), le problĂšme disparaĂźt. Et vous nâavez pas besoin de beaucoup de contrĂŽles pour la « colle » ; un contrĂŽle gĂ©nĂ©ral dâintĂ©gration suffit.
Le travail en binĂŽme dĂ©pend davantage de personnes spĂ©cifiques. Il y a le facteur tĂąche et nos soft skills. Avec certaines personnes, cela fonctionne trĂšs bien, avec dâautres, cela fonctionne moins bien. Cela prĂ©sente certainement des avantages. Force est de constater que mĂȘme si les rĂšgles du travail en binĂŽme ne sont pas suffisamment respectĂ©es, le fait mĂȘme de rĂ©aliser des tĂąches ensemble a un effet positif sur la qualitĂ© du rĂ©sultat. Personnellement, je trouve que travailler en binĂŽme est plus facile et plus agrĂ©able.
Les moyens d'influencer le systÚme d'exploitation de niveau supérieur - la planification et l'exécution des tùches produisent précisément des effets : un échange de connaissances de haute qualité et une qualité de développement améliorée.
De courtes conclusions en une seule ligne
- Les praticiens RH travaillent en IaC, mais avec moins d'efficacité.
- Renforcez ce qui fonctionne.
- Créez vos propres mécanismes et pratiques compensatoires.
Source: habr.com



