Infrastruktur som kod: hur man löser problem med XP

Hej, Habr! Tidigare klagade jag pÄ livet i Infrastrukturen som kodparadigm och erbjöd inget för att lösa den nuvarande situationen. Idag Àr jag tillbaka för att berÀtta vilka tillvÀgagÄngssÀtt och metoder som hjÀlper dig att fly frÄn förtvivlans avgrund och styra situationen i rÀtt riktning.

Infrastruktur som kod: hur man löser problem med XP

I en tidigare artikel "Infrastruktur som kod: första bekantskapen" Jag delade med mig av mina intryck av detta omrÄde, försökte reflektera över den aktuella situationen inom detta omrÄde och föreslog till och med att standardpraxis som alla utvecklare kÀnner till kunde hjÀlpa. Det kan tyckas att det fanns mÄnga klagomÄl pÄ livet, men det fanns inga förslag pÄ en vÀg ut ur den nuvarande situationen.

Vilka vi Àr, var vi Àr och vilka problem vi har

Vi Àr för nÀrvarande i Sre Onboarding Team, som bestÄr av sex programmerare och tre infrastrukturingenjörer. Vi försöker alla skriva infrastruktur som kod (IaC). Vi gör detta eftersom vi i grunden vet hur man skriver kod och har en historia av att vara utvecklare "över genomsnittet".

  • Vi har en uppsĂ€ttning fördelar: en viss bakgrund, kunskap om praxis, förmĂ„gan att skriva kod, en vilja att lĂ€ra sig nya saker.
  • Och det finns en hĂ€ngande del, som ocksĂ„ Ă€r ett minus: bristande kunskap om infrastrukturhĂ„rdvara.

Teknikstapeln vi anvÀnder i vÄr IaC.

  • Terraform för att skapa resurser.
  • Packare för sammansĂ€ttning av bilder. Dessa Ă€r Windows, CentOS 7-bilder.
  • Jsonnet för att göra en kraftfull build i drone.io, samt för att generera packer json och vĂ„ra terraform-moduler.
  • Azure.
  • Ansible nĂ€r du förbereder bilder.
  • Python för extratjĂ€nster och provisioneringsskript.
  • Och allt detta i VSCode med plugins som delas mellan teammedlemmar.

Slutsats frÄn min sista artikeln var sÄ hÀr: Jag försökte ingjuta (först av allt i mig sjÀlv) optimism, jag ville sÀga att vi kommer att prova de metoder och metoder som vi kÀnner till för att hantera de svÄrigheter och komplexiteter som finns inom detta omrÄde.

Vi kÀmpar för nÀrvarande med följande IaC-problem:

  • Ofullkomlighet av verktyg och medel för kodutveckling.
  • LĂ„ngsam utbyggnad. Infrastruktur Ă€r en del av den verkliga vĂ€rlden, och den kan vara lĂ„ngsam.
  • Brist pĂ„ tillvĂ€gagĂ„ngssĂ€tt och praxis.
  • Vi Ă€r nya och vet inte sĂ„ mycket.

Extreme programmering (XP) till undsÀttning

Alla utvecklare Àr bekanta med Extreme Programming (XP) och de metoder som ligger bakom det. MÄnga av oss har arbetat med detta tillvÀgagÄngssÀtt, och det har varit framgÄngsrikt. SÄ varför inte anvÀnda de principer och praxis som anges dÀr för att övervinna infrastrukturutmaningar? Vi bestÀmde oss för att ta detta tillvÀgagÄngssÀtt och se vad som hÀnder.

Kontrollera tillÀmpligheten av XP-metoden för din branschHÀr Àr en beskrivning av miljön som XP Àr vÀl lÀmpad för, och hur den relaterar till oss:

1. Dynamiskt förĂ€ndrade mjukvarukrav. Det stod klart för oss vad slutmĂ„let var. Men detaljerna kan variera. Vi bestĂ€mmer sjĂ€lva vart vi behöver taxi, sĂ„ kraven Ă€ndras med jĂ€mna mellanrum (frĂ€mst av oss sjĂ€lva). Om vi ​​tar SRE-teamet, som gör automatiseringen sjĂ€lv, och sjĂ€lva begrĂ€nsar kraven och omfattningen av arbetet, sĂ„ passar denna punkt bra.

2. Risker orsakade av tidsbundna projekt med ny teknik. Vi kan stöta pÄ risker nÀr vi anvÀnder vissa saker som Àr okÀnda för oss. Och detta Àr 100% vÄrt fall. Hela vÄrt projekt var anvÀndningen av teknologier som vi inte var helt bekanta med. I allmÀnhet Àr detta ett konstant problem, eftersom... Det finns mÄnga nya tekniker som dyker upp inom infrastruktursektorn hela tiden.

3,4. Litet, samlokaliserat utökat utvecklingsteam. Den automatiserade tekniken du anvĂ€nder tillĂ„ter enhets- och funktionstester. Dessa tvĂ„ punkter passar oss inte riktigt. För det första Ă€r vi inte ett samordnat team, och för det andra Ă€r vi nio stycken, som kan betraktas som ett stort team. Även om, enligt vissa definitioner av ett "stort" team, Ă€r mycket 14+ personer.

LÄt oss titta pÄ nÄgra XP-metoder och hur de pÄverkar hastigheten och kvaliteten pÄ feedback.

XP Feedback Loop Princip

Enligt min uppfattning Àr feedback svaret pÄ frÄgan, gör jag rÀtt, ska vi dit? XP har ett gudomligt schema för detta: en tidsÄterkopplingsslinga. Det intressanta Àr att ju lÀgre vi Àr, desto snabbare kan vi fÄ OS att svara pÄ nödvÀndiga frÄgor.

Infrastruktur som kod: hur man löser problem med XP

Detta Àr ett ganska intressant Àmne för diskussion, att det i vÄr IT-bransch gÄr att snabbt fÄ ett OS. FörestÀll dig hur smÀrtsamt det Àr att göra ett projekt i ett halvÄr och först dÄ fÄ reda pÄ att det var ett misstag i början. Detta hÀnder i design och i alla konstruktioner av komplexa system.

I vÄrt fall med IaC hjÀlper feedback oss. Jag kommer omedelbart att göra en liten justering av diagrammet ovan: releaseplanen har inte en mÄnatlig cykel, utan sker flera gÄnger om dagen. Det finns nÄgra metoder kopplade till denna OS-cykel som vi kommer att titta pÄ mer i detalj.

Viktigt: feedback kan vara en lösning pÄ alla ovanstÄende problem. I kombination med XP-övningar kan det dra dig upp ur förtvivlans avgrund.

Hur man tar sig upp ur förtvivlans avgrund: tre övningar

Tester

Tester nÀmns tvÄ gÄnger i XP-feedbackslingan. Det Àr inte bara sÄ. De Àr extremt viktiga för hela extremprogrammeringstekniken.

Det förutsÀtts att du har enhets- och acceptanstest. Vissa ger dig feedback pÄ nÄgra minuter, andra pÄ nÄgra dagar, sÄ de tar lÀngre tid att skriva och recenseras mer sÀllan.

Det finns en klassisk testpyramid, som visar att det borde finnas fler tester.

Infrastruktur som kod: hur man löser problem med XP

Hur gÀller detta ramverk för oss i ett IaC-projekt? Egentligen... inte alls.

  • Enhetstester kan, trots att det borde finnas mĂ„nga, inte bli för mĂ„nga. Eller sĂ„ testar de nĂ„got vĂ€ldigt indirekt. Vi kan faktiskt sĂ€ga att vi inte skriver dem alls. Men hĂ€r Ă€r nĂ„gra applikationer för sĂ„dana tester som vi kunde göra:
    1. Testar jsonnet-koden. Det hÀr Àr till exempel vÄr drönarrörledning, som Àr ganska komplicerad. Jsonnet-koden tÀcks vÀl av tester.
      Vi anvÀnder detta Enhetstestramverk för Jsonnet.
    2. Testar för skript som körs nÀr resursen startar. Skript skrivs i Python, och dÀrför kan test skrivas pÄ dem.
  • Det Ă€r potentiellt möjligt att kontrollera konfigurationen i tester, men det gör vi inte. Det Ă€r ocksĂ„ möjligt att konfigurera regler för kontrollresurskonfiguration via tflint. Dock Ă€r kontrollerna dĂ€r helt enkelt för grundlĂ€ggande för terraform, men mĂ„nga testskript Ă€r skrivna för AWS. Och vi Ă€r pĂ„ Azure, sĂ„ det hĂ€r gĂ€ller inte igen.
  • Komponentintegreringstester: det beror pĂ„ hur du klassificerar dem och var du placerar dem. Men de fungerar i princip.

    SÄ hÀr ser integrationstester ut.

    Infrastruktur som kod: hur man löser problem med XP

    Detta Àr ett exempel nÀr man bygger bilder i Drone CI. För att nÄ dem mÄste du vÀnta 30 minuter tills Packer-bilden bildas och sedan vÀnta ytterligare 15 minuter för att de ska passera. Men de finns!

    Bildverifieringsalgoritm

    1. Packer mÄste först förbereda bilden helt.
    2. Bredvid testet finns en terraform med en lokal stat, som vi anvÀnder för att distribuera den hÀr bilden.
    3. Vid utfÀllning anvÀnds en liten modul som ligger i nÀrheten för att göra det lÀttare att arbeta med bilden.
    4. NÀr den virtuella datorn har distribuerats frÄn bilden kan kontroller pÄbörjas. I princip utförs kontroller med bil. Den kontrollerar hur skripten fungerade vid start och hur demonerna fungerar. För att göra detta loggar vi via ssh eller winrm in pÄ den nyligen upphöjda maskinen och kontrollerar konfigurationsstatus eller om tjÀnsterna Àr uppe.

  • Situationen Ă€r liknande med integrationstester i moduler för terraform. HĂ€r Ă€r en kort tabell som förklarar funktionerna i sĂ„dana tester.

    Infrastruktur som kod: hur man löser problem med XP

    Feedback pÄ pipeline Àr cirka 40 minuter. Allt hÀnder under vÀldigt lÄng tid. Det kan anvÀndas för regression, men för nyutveckling Àr det i allmÀnhet orealistiskt. Om du Àr vÀldigt, vÀldigt förberedd pÄ detta, förbered körande skript, dÄ kan du minska det till 10 minuter. Men dessa Àr fortfarande inte enhetstester, som gör 5 stycken pÄ 100 sekunder.

FrÄnvaron av enhetstester vid sammansÀttning av bilder eller terraform-moduler uppmuntrar till att flytta arbetet till separata tjÀnster som helt enkelt kan köras via REST, eller till Python-skript.

Vi behövde till exempel se till att nÀr den virtuella maskinen startar registrerar den sig sjÀlv i tjÀnsten ScaleFT, och nÀr den virtuella maskinen förstördes tog den bort sig sjÀlv.

Eftersom vi har ScaleFT som tjÀnst Àr vi tvungna att arbeta med den via API:et. Det stod ett omslag skrivet dÀr som man kunde dra och sÀga: "GÄ in och radera det och det." Den lagrar alla nödvÀndiga instÀllningar och Ätkomster.

Vi kan redan skriva normala tester för detta, eftersom det inte skiljer sig frÄn vanlig programvara: nÄgon form av apiha hÄnas, du drar den och ser vad som hÀnder.

Infrastruktur som kod: hur man löser problem med XP

Resultat av testerna: Enhetstestning, som borde ge OS pÄ en minut, ger det inte. Och typer av tester högre upp i pyramiden Àr effektiva, men tÀcker bara en del av problemen.

Parprogrammering

Tester Àr förstÄs bra. Du kan skriva mÄnga av dem, de kan vara av olika slag. De kommer att arbeta pÄ sina nivÄer och ge oss feedback. Men problemet med dÄliga enhetstester, som ger det snabbaste operativsystemet, kvarstÄr. Samtidigt vill jag fortfarande ha ett snabbt OS som Àr lÀtt och trevligt att arbeta med. För att inte tala om kvaliteten pÄ den resulterande lösningen. Lyckligtvis finns det tekniker som kan ge Ànnu snabbare Äterkoppling Àn enhetstester. Detta Àr parprogrammering.

NÀr du skriver kod vill du fÄ feedback pÄ dess kvalitet sÄ snabbt som möjligt. Ja, du kan skriva allt i en funktionsgren (för att inte bryta nÄgot för nÄgon), göra en pull-förfrÄgan i Github, tilldela den till nÄgon vars Äsikt har vikt och vÀnta pÄ svar.

Men du kan vĂ€nta lĂ€nge. MĂ€nniskor Ă€r alla upptagna, och svaret, Ă€ven om det finns ett, kanske inte Ă€r av högsta kvalitet. Anta att svaret kom direkt, recensenten förstod omedelbart hela idĂ©n, men svaret kommer fortfarande sent, i efterhand. Jag önskar att det var tidigare. Det Ă€r detta som parprogrammering syftar till – direkt, i skrivande stund.

Nedan Àr parprogrammeringsstilarna och deras tillÀmpbarhet vid arbete med IaC:

1. Klassisk, Erfaren+Erfaren, skift för timer. TvĂ„ roller – förare och navigatör. TvĂ„ personer. De arbetar pĂ„ samma kod och byter roller efter en viss förutbestĂ€md tidsperiod.

LÄt oss övervÀga kompatibiliteten för vÄra problem med stil:

  • Problem: ofullkomlighet i verktyg och verktyg för kodutveckling.
    Negativ pÄverkan: det tar lÀngre tid att utvecklas, vi saktar ner, takten/rytmen i arbetet tappas.
    Hur vi kÀmpar: vi anvÀnder ett annat verktyg, en gemensam IDE och lÀr oss ocksÄ genvÀgar.
  • Problem: LĂ„ngsam distribution.
    Negativ effekt: ökar tiden det tar att skapa en fungerande kod. Vi blir uttrÄkade medan vi vÀntar, hÀnderna strÀcker sig ut för att göra nÄgot annat medan vi vÀntar.
    Hur vi slÄss: vi övervann det inte.
  • Problem: brist pĂ„ tillvĂ€gagĂ„ngssĂ€tt och praxis.
    Negativ pÄverkan: det finns ingen kunskap om hur man gör det bra och hur man gör det dÄligt. FörlÀnger mottagandet av feedback.
    Hur vi kÀmpar: ömsesidigt utbyte av Äsikter och metoder i pararbete löser nÀstan problemet.

Det största problemet med att anvÀnda denna stil i IaC Àr den ojÀmna arbetstakten. I traditionell mjukvaruutveckling har man en vÀldigt enhetlig rörelse. Du kan spendera fem minuter och skriva N. Spendera 10 minuter och skriv 2N, 15 minuter - 3N. HÀr kan du spendera fem minuter och skriva N, och sedan spendera ytterligare 30 minuter och skriva en tiondel av N. HÀr vet du ingenting, du har fastnat, dum. Utredningen tar tid och distraherar frÄn sjÀlva programmeringen.

Slutsats: i sin rena form Àr den inte lÀmplig för oss.

2. Ping-pong. Detta tillvÀgagÄngssÀtt innebÀr att en person skriver testet och en annan gör implementeringen för det. Med tanke pÄ att allt Àr komplicerat med Unit-tester, och du mÄste skriva ett integrationstest som tar lÄng tid att programmera, försvinner all lÀtthet med pingis.

Jag kan sÀga att vi försökte separera ansvar för att designa ett testskript och implementera kod för det. En deltagare kom pÄ manuset, i den hÀr delen av arbetet var han ansvarig, han hade sista ordet. Och den andra ansvarade för genomförandet. Det gick bra. Kvaliteten pÄ manuset med detta tillvÀgagÄngssÀtt ökar.

Slutsats: tyvÀrr tillÄter inte arbetstakten anvÀndningen av pingis som parprogrammering i IaC.

3. Stark stil. SvÄr övning. Tanken Àr att en deltagare blir direktivnavigator och den andra tar rollen som avrÀttningsförare. I detta fall Ävilar rÀtten att fatta beslut uteslutande navigatören. Föraren skriver bara ut och kan pÄverka vad som hÀnder med ett ord. Rollerna förÀndras inte pÄ lÀnge.

Bra för att lÀra, men krÀver starka mjuka fÀrdigheter. Det var hÀr vi vacklade. Tekniken var svÄr. Och det handlar inte ens om infrastruktur.

Slutsats: det kan potentiellt anvÀndas, vi ger inte upp att försöka.

4. Mobbing, svÀrmande och alla kÀnda men inte listade stilar Vi anser det inte, eftersom Vi har inte provat det och det Àr omöjligt att prata om det i samband med vÄrt arbete.

AllmÀnna resultat om anvÀndning av parprogrammering:

  • Vi har en ojĂ€mn arbetstakt, vilket Ă€r förvirrande.
  • Vi stötte pĂ„ otillrĂ€ckligt bra mjuka fĂ€rdigheter. Och Ă€mnesomrĂ„det hjĂ€lper inte till att övervinna dessa brister hos oss.
  • LĂ„nga tester och problem med verktyg gör parad utveckling svĂ„r.

5. Trots detta blev det framgÄngar. Vi kom pÄ vÄr egen metod "Convergence - Divergence". Jag ska kort beskriva hur det fungerar.

Vi har fasta partners under nÄgra dagar (mindre Àn en vecka). Vi gör en uppgift tillsammans. Vi sitter tillsammans en stund: en skriver, den andre sitter och tittar pÄ supportteamet. Sedan skingras vi under en tid, var och en gör nÄgra oberoende saker, sedan kommer vi samman igen, synkroniserar vÀldigt snabbt, gör nÄgot tillsammans och skingras igen.

Planering och kommunikation

Det sista blocket av praxis genom vilket OS-problem löses Àr organisationen av arbetet med sjÀlva uppgifterna. Detta inkluderar Àven erfarenhetsutbyte som ligger utanför pararbete. LÄt oss titta pÄ tre metoder:

1. MÄl genom mÄltrÀdet. Vi organiserade den övergripande ledningen av projektet genom ett trÀd som gÄr oÀndligt in i framtiden. Tekniskt sett görs spÄrningen i Miro. Det finns en uppgift - det Àr ett delmÄl. FrÄn det gÄr antingen mindre mÄl eller grupper av uppgifter. SjÀlva uppgifterna kommer frÄn dem. Alla uppgifter skapas och underhÄlls pÄ denna tavla.

Infrastruktur som kod: hur man löser problem med XP

Det hÀr schemat ger ocksÄ feedback, vilket sker en gÄng om dagen nÀr vi synkroniserar pÄ rallyn. Att ha en gemensam plan inför alla, men strukturerad och helt öppen, gör att alla kan vara medvetna om vad som hÀnder och hur lÄngt vi kommit.

Fördelar med visuell syn pÄ uppgifter:

  • Kausalitet. Varje uppgift leder till nĂ„got globalt mĂ„l. Uppgifterna grupperas i mindre mĂ„l. InfrastrukturdomĂ€nen i sig Ă€r ganska teknisk. Det Ă€r inte alltid omedelbart klart vilken specifik pĂ„verkan, till exempel att skriva en runbook vid migrering till en annan nginx, har pĂ„ verksamheten. Att ha mĂ„lkortet i nĂ€rheten gör det tydligare.
    Infrastruktur som kod: hur man löser problem med XP
    Kausalitet Àr en viktig egenskap hos problem. Det svarar direkt pÄ frÄgan: "Gör jag rÀtt?"
  • Parallellism. Vi Ă€r nio, och det Ă€r helt enkelt fysiskt omöjligt att kasta alla pĂ„ en uppgift. Uppgifter frĂ„n ett omrĂ„de kanske inte heller alltid rĂ€cker. Vi tvingas parallellisera arbetet mellan smĂ„ arbetsgrupper. Samtidigt sitter grupperna pĂ„ sin uppgift en tid, de kan förstĂ€rkas av nĂ„gon annan. Ibland faller mĂ€nniskor bort frĂ„n denna arbetsgrupp. NĂ„gon Ă„ker pĂ„ semester, nĂ„gon gör en rapport för DevOps-konferensen, nĂ„gon skriver en artikel om Habr. Att veta vilka mĂ„l och uppgifter som kan göras parallellt blir vĂ€ldigt viktigt.

2. ErsĂ€ttande föredragshĂ„llare av morgonmöten. PĂ„ stand-ups har vi det hĂ€r problemet – mĂ€nniskor gör mĂ„nga uppgifter parallellt. Ibland Ă€r uppgifter löst sammankopplade och det finns ingen förstĂ„else för vem som gör vad. Och Ă„sikten frĂ„n en annan lagmedlem Ă€r mycket viktig. Detta Ă€r ytterligare information som kan förĂ€ndra hur problemet ska lösas. SjĂ€lvklart brukar det vara nĂ„gon med dig, men rĂ„d och tips Ă€r alltid anvĂ€ndbara.

För att förbÀttra denna situation anvÀnde vi tekniken "Changing the Leading Stand-Up". Nu roteras de enligt en viss lista, och det har sin effekt. NÀr det Àr din tur tvingas du dyka in och förstÄ vad som hÀnder för att kunna köra ett bra Scrum-möte.

Infrastruktur som kod: hur man löser problem med XP

3. Intern demo. HjÀlp med att lösa ett problem frÄn parprogrammering, visualisering pÄ problemtrÀdet och hjÀlp vid scrummöten pÄ morgonen Àr bra, men inte idealiskt. Som ett par begrÀnsas ni bara av er kunskap. UppgiftstrÀdet hjÀlper till att globalt förstÄ vem som gör vad. Och presentatören och kollegorna pÄ morgonmötet kommer inte att dyka djupt in i dina problem. De kanske missar nÄgot.

Lösningen fann man genom att demonstrera det utförda arbetet för varandra och sedan diskutera det. Vi trÀffas en gÄng i veckan under en timme och visar detaljer om lösningar pÄ uppgifter vi gjort den senaste veckan.

Under demonstrationen Àr det nödvÀndigt att avslöja detaljerna i uppgiften och se till att demonstrera dess funktion.

Rapporten kan göras med hjÀlp av en checklista.1. GÄ in i sammanhanget. Var kom uppdraget ifrÄn, varför var det ens nödvÀndigt?

2. Hur löstes problemet innan? Till exempel krÀvdes massiva musklick, eller sÄ var det omöjligt att göra nÄgonting alls.

3. Hur vi förbÀttrar det. Till exempel: "Titta, nu finns det scriptosik, hÀr Àr readme."

4. Visa hur det fungerar. Det Àr tillrÄdligt att direkt implementera nÄgot anvÀndarscenario. Jag vill ha X, jag gör Y, jag ser Y (eller Z). Till exempel distribuerar jag NGINX, röker webbadressen och fÄr 200 OK. Om ÄtgÀrden Àr lÄng, förbered den i förvÀg sÄ att du kan visa den senare. Det Àr tillrÄdligt att inte bryta det för mycket en timme före demot, om det Àr ömtÄligt.

5. Förklara hur framgÄngsrikt problemet löstes, vilka svÄrigheter kvarstÄr, vad som inte Àr slutfört, vilka förbÀttringar som Àr möjliga i framtiden. Till exempel nu CLI, dÄ blir det full automatisering i CI.

Det Àr lÀmpligt för varje högtalare att hÄlla det till 5-10 minuter. Om ditt tal uppenbarligen Àr viktigt och kommer att ta lÀngre tid, samordna detta i förvÀg i sre-takeover-kanalen.

Efter öga mot öga-delen Àr det alltid en diskussion i trÄden. Det Àr hÀr den feedback vi behöver pÄ vÄra uppgifter visas.

Infrastruktur som kod: hur man löser problem med XP
Som ett resultat görs en undersökning för att faststÀlla nyttan av det som hÀnder. Detta Àr feedback pÄ talets kÀrna och uppgiftens betydelse.

Infrastruktur som kod: hur man löser problem med XP

LÄnga slutsatser och vad som hÀnder hÀrnÀst

Det kan tyckas att tonen i artikeln Àr nÄgot pessimistisk. Detta Àr fel. TvÄ lÀgre nivÄer av feedback, nÀmligen tester och parprogrammering, fungerar. Inte lika perfekt som i traditionell utveckling, men det finns en positiv effekt av det.

Tester, i sin nuvarande form, ger endast delvis kodtÀckning. MÄnga konfigurationsfunktioner hamnar oprövade. Deras inflytande pÄ sjÀlva arbetet nÀr man skriver kod Àr lÄgt. Det finns dock en effekt frÄn integrationstester, och de lÄter dig oförskrÀckt utföra omfaktoreringar. Detta Àr en stor prestation. Dessutom, med förskjutningen av fokus till utveckling pÄ högnivÄsprÄk (vi har python, go), försvinner problemet. Och du behöver inte mÄnga kontroller för "limmet"; en allmÀn integrationskontroll rÀcker.

Att arbeta i par beror mer pÄ specifika personer. DÀr finns uppgiftsfaktorn och vÄra mjuka fÀrdigheter. Med vissa mÀnniskor fungerar det mycket bra, med andra fungerar det sÀmre. Det finns definitivt fördelar med detta. Det Àr tydligt att Àven om reglerna för pararbete inte följs tillrÀckligt, har sjÀlva det faktum att man utför uppgifter tillsammans en positiv effekt pÄ kvaliteten pÄ resultatet. Personligen tycker jag att det Àr lÀttare och roligare att arbeta i par.

SÀtt pÄ högre nivÄ att pÄverka OS - planering och arbete med uppgifter ger precis effekter: högkvalitativt kunskapsutbyte och förbÀttrad utvecklingskvalitet.

Korta slutsatser pÄ en rad

  • HR-utövare arbetar i IaC, men med mindre effektivitet.
  • StĂ€rk det som fungerar.
  • Kom pĂ„ dina egna kompensationsmekanismer och metoder.

KĂ€lla: will.com

LĂ€gg en kommentar