Vil du være udvikler? Du bør sandsynligvis være parprogrammering.

Når folk tænker på softwareudvikling, tænker de forståeligt nok på en ensom ulvsprogrammerer, der er lukket væk fra verden og løser komplekse problemer.

Hvad hvis jeg fortalte dig, at det næppe nogensinde var, hvordan softwareudvikling virkelig fungerer i den virkelige verden ... og at parprogrammering kunne være dit svar på at lære at kode hurtigere, forberede dig på den virkelige verden af ​​softwareudvikling og måske have mere sjov i behandle?

Lyder godt. Så hvordan fungerer softwareudviklere virkelig?

Hvad der kan være mere nøjagtigt er et team af softwareudviklere, der undertiden lukker sig væk fra verden, forbinder sig med verden på andre tidspunkter og stadig løser komplekse problemer (men sammen ).

Lone-ulv-scenariet kan være sandt i visse situationer, såsom at gennemføre et sideprojekt eller freelance-arbejde. Oftere end ikke udføres softwareudvikling for produkter i en hvilken som helst meningsfuld skala af et fuldt udviklet softwareteam, sandsynligvis med en blanding af forskellige udviklingsstyrker (se nedenstående billede fra DSDM Agile Framework). Dette softwareteam vil blive tilsluttet et bredere forretnings- og kommercielt team (vi kan ikke glemme vores slutbruger :))

Hvad betyder dette for os softwareudviklere, der lærer branchen? Det betyder, at mens vi lærer at kode ofte starter som et ensomt ulvespil, vil vi have det (så hurtigt som muligt) til at vokse til teamsporten softwareudvikling, der er udbredt i de fleste organisationer.

Ud over selve kodningsindholdet er det vigtigt at opbygge samarbejds- og teamwork-færdigheder, der hjælper dig med at trives i et softwareudviklingsteam. At have ekstern støtte fra andre til at strække dig er også en fantastisk (måske den bedste) måde at lære på, selvom den naturlige fristelse er at kæmpe gennem vanskelige kodningsproblemer alene.

At finde et team til at lære og vokse med er muligvis ikke en praktisk løsning. At finde en anden person at parre program med er et meget mere realistisk udgangspunkt.

Ok, jeg er fascineret ...

For de uindviede: hvad er parprogrammering?

Heldigvis kan Wikipedia hjælpe os her:

”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 linie kode, som den er indtastet. De to programmører skifter ofte roller. ”

Hvordan ændrer dette tankegangen hos de to personer, der nærmer sig koden?

”Under gennemgangen overvejer observatøren også den“ strategiske ”retning af arbejdet og kommer med ideer til forbedringer og sandsynlige fremtidige problemer at tackle. Dette frigør chaufføren 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. "

Ok fedt. Men vil dette par-programmering ikke være meget ubehageligt?

Du er måske skeptisk over for parprogrammering - jeg var bestemt skeptisk selv. Dine første tanker kan være, at ideen lyder som en ubehagelig. Vil det være sådan her?

For at berolige din rimelige skepsis, lad os tale om nogle af fordelene ved parprogrammering, anvendt med særligt fokus på dem nær starten af ​​deres kodningsrejse.

Tre centrale fordele ved parprogrammering, skræddersyet til en person, der lærer at kode:

(1) Parprogrammering er en fantastisk måde at lære af en anden koder på.

I intet andet miljø vil du være på det samme nøjagtige punkt i en kodningsudfordring, kæmpe gennem det nøjagtige samme problem og forsøge at løse det sammen. Du griner, du græder, og i sidste ende lærer du .

Vigtigere er, at du har oparbejdet forskellige videnbaser, efterhånden som du har lært at kode, og du vil være i stand til at hente nyt indhold fra dit par. Endnu vigtigere er, god programmering i sidste ende handler om at anvende din bedste problemløsningsproces, ikke bare at have masser af indholdsviden (se dette indlæg). Parprogrammering giver dig mulighed for at lære af en anden udviklers proces samt give dig mulighed for at modtage feedback om din egen kodningsproces (mere om feedback nedenfor).

Bonusfordel ved at have dette perspektiv på din kodningsproces og at skulle forklare det til dit par: Gummi-ducking er en fantastisk måde at fejle kode på. I en nøddeskal indebærer det at forklare, hvad du prøver at løse for en 'gummiand' eller en anden livløs genstand, så du får perspektiv på problemet. Hvorfor ikke forklare en koder i det virkelige liv, at du i stedet kan afvise ideer?

(2) Parring er et fantastisk miljø til at øve holdets færdigheder, der er centrale for god softwareudvikling.

Vi fastslog tidligere, at software er en teamsport. Ved at tage din kodningsøvelse uden for dit eget hoved ved parring, vil du naturligvis opbygge de bløde team-færdigheder, der er så vigtige for at arbejde i et større softwareudviklingsteam.

Kodningsinterviews kan ofte omfatte at tale din interviewer gennem din tankeproces, mens du koder eller pseudokoder. Med parringsøvelse vil du være i stand til klart at formulere dine kodningstanker og give dig selv den bedste chance, du kan i disse par-stil interviews.

(3) Fordelene ved parprogrammering er endnu større for (relativt) nye softwareudviklere.

Som understøttet af den forskning, der overholdes af Laurie Williams, fungerer parkodning bedst, når (i) parret arbejder på komplekse opgaver, og (ii) enkeltpersoner er på lignende niveauer af programmeringsviden (se par-programmeringsundersøgelse udarbejdet af Laurie Williams).

Som en nyudviklet koder, der strækker dig til storhed, vil mange af de opgaver, du påtager dig, være naturligt komplekse, fordi du endnu ikke har den base af erfaring og viden, der kan gøre specifikke kodningsopgaver lette. Dit par, der også lærer at kode, er mere sandsynligt at være på samme niveau som dig i en række kodende videnområder, selvom en af ​​jer er stærkere i et bestemt område.

Ud over hardcore-forskning kan du også trøste dig med det faktum, at de fleste prestigefyldte kodende bootcamps (designet til at tage folk fra nybegynderkodere til juniorudviklere på omkring 3 måneder) er stærkt afhængige af parprogrammering som en måde for programmører at gå fra nul til helt så hurtigt som muligt.

Det faktum, at disse intensive kodeundervisnings bootcamps, der bruger parring så meget, er en klar indikator for, at der bestemt er en guldklump i at bruge det til at lære og lære hurtigt. Selv opdagede jeg herligheden ved at bruge parring til at lære på den kodende bootcamp, jeg deltog i, Makers Academy.

Hvis du stadig er skeptisk, udfordrer jeg dig til at prøve parringskodning . Jeg kunne fortsætte med at nævne fordelene, men dette vil blegne i forhold til at prøve det, se dets kræfter i praksis og i sidste ende beslutte, om det er en god måde at lære for dig på.

OK Jeg er overbevist om at give det en chance, hvordan starter jeg?

Find først dit par (ideelt set en person, der har et lignende færdighedsniveau og også lærer at kode). Dette kan være en ven, du kender, og som lærer at kode, eller en person, du møder på din koderejse.

Personlig parring er ideel, men ekstern parring er også fantastisk og kan være en mere bekvem løsning (som du kan bruge skærmdelingssoftware til som Skype eller Mikogo). På arbejdspladsen udføres parring ofte mellem senior- og juniorudviklere, så junioren hurtigt kan lære af seniorudvikleren.

Hvis du ikke i øjeblikket har nogen åbenlyse, du kan parre med, er det tid til at begynde at opbygge dit udviklerfællesskab.

At kende andre udviklere er et så vigtigt aspekt ved at lære at kode i sig selv. Du kan hoppe tanker fra mennesker, udvikle ideer sammen og lære af mennesker med en række baggrunde og styrker. Dette gør det umagen værd at fortsætte med at deltage i disse samfund bare for at møde andre devs. At finde nogen at parre med er en velsmagende bonus.

Hvis du er en ny koder, foreslår jeg to sikre ruter til møde med andre udviklere:

(1) Deltag i et kodende samfund, hvor folk mødes for at kode / lære at kode. For eksempel i London kan du deltage i 'London Hackspace'

(2) Deltag i kodende samfundshændelser, især dem til nye kodere. En god rute deltager i en begivenhed, der køres af en nuværende bootcamp. Andre kodere, der tjekker bootcampen, vil være i en lignende position som dig.

Når du først har fundet et potentielt par (eller flere!), Så prøv forskellige teknikker til parprogrammering for at finde en, du kan lide:

Nedenfor er to eksempler på parprogrammeringsteknikker:

(1) Pomodoro-parring. En timer indstilles til 25 minutter, hvor den ene person er chauffør og den anden navigator. Hvert 25. minut har du en kort pause og skifter rolle. Der er en fantastisk kromforlængelse til dette her.

(2) Ping-pong-parring. Føreren skriver en fejlagtig test og sender derefter førerrollen (og tastaturet) til den anden person. Den nye driver skriver koden for at få denne test til at bestå, refaktorer koden og skriver en svigtende test for den anden person at køre igennem. (For at forstå testdrevet udvikling, læs punkt 1 her)

Se flere programmeringsteknikker for par:

  • Par programmeringsteknikker
  • Fjernprogrammering af par

For at afslutte: afbalancere visningen på parprogrammering

Forhåbentlig føler du dig nu inspireret til at tilføje parprogrammering som et kraftfuldt værktøj til din læringsværktøjskasse. Det er virkelig meget nyttigt, og jeg håber, at du nu har nok information til at komme i gang.

For at afbalancere ovenstående: parprogrammering er selvfølgelig ikke altid let. Det kan være svært at lære at forklare og eksternalisere din kodningsproces. Arbejde med andre kan generelt være vanskeligt, og visse scenarier kan reducere den værdi, parprogrammeringen giver (for eksempel hvis parrets færdigheder eller mål ikke stemmer overens).

“Vanskelige ting er ikke lette, men de er det værd” Mia elsker

Grundlæggende, hvis du lærer at kode og lære at arbejde i et softwareudviklingsteam, har jeg ikke fundet noget mere nyttigt end timevis med parprogrammering med en bred vifte af mennesker med forskellige baggrunde og talenter.

Når det kommer til stykket, kommer de fleste ting i kode (og liv) ned til at arbejde godt sammen med andre. Den ekstra bonus? At arbejde med andre har spændingen ved at gå i retninger, som du måske ikke forventer, strengheden ved at sikre kode af høj kvalitet gennem uenighed og diskussion, og måske, bare måske, bliver det simpelthen meget sjovere!

Leder du efter flere kodningshemmeligheder?

Dette er det femte indlæg i en serie, der fokuserer på de hemmelige metalæringer, jeg har hentet, da jeg har lært at kode på Makers Academy: fremgangsmåderne, værktøjerne og tankegangen for at gøre de gennembrud, du har brug for for at være en kick-ass-koder .

Klik her for mit forrige indlæg: 5 måder at fjerne dig selv fra klæbrige, vanskelige kodningsproblemer

Hvis du kunne lide dette blogindlæg og gerne vil læse mere som det, skal du klikke på 'Følg' og give mig et par Claps ved at klikke på knappen Medium claps nedenfor?