Par programmering - Pair programming
Parprogrammering er en agil softwareudviklingsteknik , hvor to programmører arbejder sammen på en arbejdsstation. Den ene, føreren , skriver kode, mens den anden, observatøren eller navigatoren , gennemgår hver linje kode, som den er skrevet i. De to programmører skifter ofte roller.
Under gennemgangen overvejer observatøren også den "strategiske" retning af arbejdet og kommer med ideer til forbedringer og sandsynlige fremtidige problemer at tackle. Dette er beregnet til at frigøre føreren til at fokusere al deres opmærksomhed på de "taktiske" aspekter ved at fuldføre den aktuelle opgave ved hjælp af observatøren som sikkerhedsnet og vejledning.
Økonomi
Parprogrammering øger de arbejdstimer, der kræves for at levere kode sammenlignet med programmører, der arbejder individuelt. Den resulterende kode har dog færre mangler. Sammen med kodeudviklingstid indregnes andre faktorer som omkostninger til feltstøtte og kvalitetssikring også til investeringsafkastet. Parprogrammering kan teoretisk modregne disse udgifter ved at reducere mangler i programmerne.
Ud over at forhindre fejl, når de begås, kan der være andre immaterielle fordele. For eksempel høflighed af at afvise telefonopkald eller andre distraktioner, mens du arbejder sammen, tager færre pauser med aftalte intervaller eller delte pauser for at vende tilbage til telefonopkald (men vender hurtigt tilbage til arbejde, da nogen venter). Et medlem af teamet kan have mere fokus og hjælpe med at drive eller vække det andet, hvis de mister fokus, og den rolle kan med jævne mellemrum ændre sig. Et medlem kan have kendskab til et emne eller teknik, som det andet ikke gør, hvilket kan eliminere forsinkelser med at finde eller teste en løsning eller muliggøre en bedre løsning og dermed effektivt udvide en programmørs færdighedssæt, viden og erfaring sammenlignet med at arbejde alene. Hver af disse immaterielle fordele og mange flere kan være udfordrende at måle nøjagtigt, men kan bidrage til en mere effektiv arbejdstid.
Designkvalitet
Et system med to programmører har større potentiale for generering af mere forskellige løsninger på problemer af tre grunde:
- programmørerne bringer forskellige tidligere erfaringer til opgaven;
- de kan vurdere oplysninger, der er relevante for opgaven, på forskellige måder
- de står i forskellige forhold til problemet i kraft af deres funktionelle roller.
I et forsøg på at dele mål og planer skal programmørerne åbenlyst forhandle om en fælles fremgangsmåde, når en konflikt opstår mellem dem. Dermed overvejer de et større antal måder at løse problemet på, end en enkelt programmerer alene kan gøre. Dette forbedrer programmets designkvalitet markant, da det reducerer chancerne for at vælge en dårlig metode.
Tilfredshed
I en online undersøgelse af parprogrammerere fra 2000 sagde 96% af programmørerne, at de nød mere at arbejde, mens de programmerede par end programmering alene. Desuden sagde 95%, at de var mere sikre på deres arbejde, når de programmerede par.
Læring
Viden deles konstant mellem parprogrammerere, hvad enten det er i branchen eller i et klasseværelse. Mange kilder antyder, at studerende viser højere tillid, når de programmerer parvis, og mange lærer, om det er fra tip til programmeringssprogregler til generel designfærdighed. I "promiskuøs parring" kommunikerer hver programmør og arbejder med alle de andre programmører på holdet i stedet for kun at parre med en partner, hvilket får viden om systemet til at sprede sig i hele teamet. Parprogrammering giver programmører mulighed for at undersøge deres partners kode og give feedback, hvilket er nødvendigt for at øge deres egen evne til at udvikle overvågningsmekanismer for deres egne læringsaktiviteter.
Teambuilding og kommunikation
Parprogrammering giver teammedlemmer mulighed for at dele hurtigt, hvilket gør dem mindre tilbøjelige til at have dagsordener skjult for hinanden. Dette hjælper parprogrammerere med at lære at kommunikere lettere. "Dette øger kommunikationsbåndbredden og -frekvensen inden for projektet, hvilket øger den samlede informationsstrøm i teamet."
Undersøgelser
Der er både empiriske undersøgelser og metaanalyser af parprogrammering. De empiriske undersøgelser har en tendens til at undersøge produktivitetsniveauet og kvaliteten af koden, mens meta-analyser kan fokusere på bias, der er introduceret ved test- og udgivelsesprocessen.
En meta-analyse fundet par overvejer typisk flere designalternativer end programmører, der arbejder alene, når frem til enklere, mere vedligeholdelige designs og fanger designfejl tidligere. Det rejste imidlertid bekymring for, at dets fund kan have været påvirket af "tegn på offentliggørelsesforstyrrelse blandt offentliggjorte studier om parprogrammering". Det konkluderede, at "programmering af par ikke er ensartet gavnlig eller effektiv".
Selvom parprogrammerere muligvis udfører en opgave hurtigere end en soloprogrammerer, øges det samlede antal timer . En leder bliver nødt til at afbalancere hurtigere afslutning af arbejdet og reduceret test- og fejlretningstid mod de højere kodningsomkostninger. Den relative vægt af disse faktorer kan variere alt efter projekt og opgave.
Fordelen ved parring er størst på opgaver, som programmørerne ikke forstår fuldt ud, før de begynder: det vil sige udfordrende opgaver, der kræver kreativitet og sofistikering, og for nybegyndere sammenlignet med eksperter. Parprogrammering kan være nyttigt for at opnå høj kvalitet og korrekthed i komplekse programmeringsopgaver, men det vil også øge udviklingsindsatsen (omkostningerne) betydeligt.
På enkle opgaver, som parret allerede forstår fuldt ud, resulterer parring i et nettofald i produktivitet. Det kan reducere kodeudviklingstiden, men risikerer også at reducere programmets kvalitet. Produktivitet kan også falde, når parring mellem novice og novice bruges uden tilstrækkelig tilgængelighed af en mentor til at coache dem.
Indikatorer for manglende præstation
Der er indikatorer for, at et par ikke klarer sig godt:
- Frakobling kan forekomme, når et af medlemmerne fysisk trækker sig væk fra tastaturet, får adgang til e-mail eller endda falder i søvn.
- Den "Watch Master" fænomen kan opstå, hvis et medlem er mere erfarne end den anden. I denne situation kan juniormedlemet tage observatørrollen og henvise til parrets seniormedlem for størstedelen af kodningsaktiviteten. Dette kan let føre til frakobling.
Parringsvariationer
- Ekspert – ekspert
- Parring mellem ekspert og ekspert kan synes at være det oplagte valg for den højeste produktivitet og kan give gode resultater, men det giver ofte lidt indsigt i nye måder at løse problemer på, da begge parter næppe vil stille spørgsmålstegn ved etablerede fremgangsmåder.
- Ekspert – nybegynder
- Parring mellem ekspert og novice skaber mange muligheder for eksperten til at vejlede novisen. Denne parring kan også introducere nye ideer, da en nybegynder mere sandsynligt vil sætte spørgsmålstegn ved etablerede fremgangsmåder. Eksperten, som nu kræves for at forklare etableret praksis, er også mere tilbøjelig til at stille spørgsmålstegn ved dem. Imidlertid kan en skræmt nybegynder i denne parring passivt "se mesteren" og tøve med at deltage meningsfuldt. Desuden har nogle eksperter muligvis ikke den tålmodighed, der er nødvendig for at tillade konstruktiv deltagelse af uerfarne.
- Novice – novice
- Parring mellem novice og novice kan give resultater betydeligt bedre end to novicere, der arbejder uafhængigt, selvom denne praksis generelt frarådes, fordi det er sværere for novicere at udvikle gode vaner uden en ordentlig rollemodel.
Fjernpar programmering
Fjern-par-programmering , også kendt som virtuel par-programmering eller distribueret par-programmering , er par-programmering, hvor de to programmører er forskellige steder, der arbejder via en samarbejdende realtidseditor , delt desktop eller et fjern-par-programmering IDE- plugin. Ekstern parring indfører vanskeligheder, der ikke er til stede i parring ansigt til ansigt, såsom ekstra forsinkelser for koordinering, afhængigt mere af "tungvægt" -opgaver-sporingsværktøjer i stedet for "lette" som indekskort og tab af verbal kommunikation, hvilket resulterer i forvirring og konflikter om ting som hvem "der har tastaturet".
Værktøjssupport kan leveres af:
- Software til deling af hele skærmen
- Terminalmultiplexere
- Specialiserede distribuerede redigeringsværktøjer
- Programmer til lydchat eller VoIP-software kan være nyttige, når skærmdelingssoftwaren ikke giver tovejs-lydfunktion. Brug af headset holder programmørernes hænder fri
- Cloud-udviklingsmiljøer
- Samarbejdspar programmeringstjenester
Se også
Referencer
eksterne links
- wikiHow: Sådan parres programvejledningen ; indeholder almindelig visdom om, hvordan man får parprogrammering til at fungere.
- Tuple: Par-programmeringsvejledning Par-programmeringsvejledning, der dækker parringsstile, antipatterns og meget mere. Inkluderer eksempler på paringsvideoer.
- c2: PairProgramming
- c2: PairProgrammingPattern
- c2: PairRotationFrequency