Få 10x (resultater): Hva enhver utvikler kan lære av de beste

Hva om jeg fortalte deg at du kan være 10 ganger bedre enn gjennomsnittet? Ikke dobbelt så bra. 10 ganger bedre: En størrelsesorden. Du vil virkelig skille deg ut. Du har tilgang til bedre jobber, høyere lønn og økt arbeidsglede.

Jeg har intervjuet, undervist og veiledet hundrevis av utviklere. Kanskje den mest verdifulle takeawayen er at det er et stort spekter av ferdighetsnivåer, selv blant utviklere som har kodet i leveår i mange år.

Enda mer slående for meg er hvor lett de fleste av dem kan forbedre seg. Jeg har også lagt merke til at et stort antall utviklere ønsker å forbedre seg. Det de ser ut til å slite med er å vite hva de skal jobbe med og hvordan de kan jobbe med det.

Den gode nyheten for de som er forpliktet til dyktighet er at de fleste andre utviklere rett og slett ikke er klar over muligheten til å forbedre seg, eller ikke motiverte nok til å gjøre forpliktelsen.

Bare å bestemme deg for å bli en 10x utvikler vil gi deg et stort fortrinn i forhold til konkurransen.

10x handler ikke bare om utviklingsferdigheter. Det er bare en faktor i en lang rekke viktige faktorer. Det er klart at du ikke kan være en 10x utvikler uten kotelettene, men koding av koteletter alene er ikke nok.

The Origins of the 10x Developer Meme

En overvekt av forskning tyder på at det er en størrelsesorden forskjell i ytelse mellom utviklere. For å sitere Steve McConnell (forfatter, “Code Complete”):

Det generelle funnet at "Det er størrelsesforskjeller mellom programmerere" er bekreftet av mange andre studier av profesjonelle programmerere (Curtis 1981, Mills 1983, DeMarco og Lister 1985, Curtis et al. 1986, Card 1987, Boehm og Papaccio 1988, Valett og McGarry 1989, Boehm et al 2000).

Det viser seg at denne 10x tingen strekker seg langt utover individuelle utviklere. Forskjellene eksisterer i teamproduktivitet på tvers av en rekke bransjer, ferdighetsnivåer blant alle slags utøvere og idrettsutøvere, osv ...

10x virker som en hel del forskjell. Det er lett å gjøre feilen at resten av oss ikke har noen sjanse til å nå det nivået av dyktighet - det enkle faktum er at de fleste av oss ikke vil ha det. Men det som er virkelig interessant er at det er en tydelig vei til dyktighet. Folk blir ikke født som gode utviklere. De kommer dit gjennom fokusert, bevisst praksis.

Det reiser et viktig spørsmål: Hva skal vi egentlig øve på? Hva har de beste utviklerne til felles, og er det disse egenskapene ting som resten av oss kan lære av og etterligne?

Hva gjør noen enheter 10 ganger bedre enn andre?

Det er mange faktorer som gjør at noen utviklere er 10 ganger bedre enn andre. Det er mye mer enn hvor mange billetter de stenger. Selvfølgelig er det et livsnødvendig tiltak å få gjort arbeid, men hva annet kan du forbedre deg for å komme til 10 ganger, og hva bør du jobbe med først?

Vi undersøkte omtrent ~ 1000 utviklere for å finne ut av det. Først gjennomførte vi en uformell undersøkelse på Twitter for å samle ord som ble brukt for å beskrive ekstraordinære utviklere, og ikke så ekstraordinære utviklere:

Deretter konsoliderte vi svarene til en liste over enkle, beskrivende ord og opprettet en undersøkelse med 2 flervalgsspørsmål.

Hva gjør en flott utvikler?

1. Tenk på den mest ekstraordinære utvikleren du noen gang har jobbet med. Velg alle ordene som beskriver dem.

Ideen her er å gi utviklere en liste over kvaliteter de kan fokusere på. Dette er alle ferdigheter du kan trene og forbedre deg på.

La oss begynne med å se på hva som gjør flotte utviklere. Vi starter med topp 5:

Det viser seg at alle disse faktorene slår vanlige produktivitetstiltak som "raskt" og "effektivt" med en god margin.

Problemløser: Problemløsing er det utviklere gjør, så det er ikke overraskende at denne kvaliteten får høye karakterer, men hva skiller en gjennomsnittlig problemløser fra en stor problemløser? Å løse de riktige problemene. Utviklere ønsker å føle seg produktive og bli frustrerte når det er ting som holder dem tilbake.

I de fleste store kodebaser er det deler av koden som ingen ønsker å opprettholde. Hvis du kan gjøre deg tid til å grave i den delen av koden og rydde den opp, vil du gjøre livet enklere for alle som må takle den koden.

Hvis det er vanlige prosesser som trenger automatisering, må du ta deg tid til å automatisere dem. Få noen store gevinster, og dine kolleger og ledere vil sette pris på initiativet. Fokuser på problemene med mest innvirkning. Hvis hver utvikler på teamet bruker 5 minutter om dagen på en repeterende oppgave som kan automatiseres, og det bare tar 30 minutter å automatisere den, gjør det. På et team med 6 utviklere vil det bare ta en dag å betale ned investeringen.

Dyktige: Ferdigheter er utviklet fra to ingredienser: forståelse og praksis. Først må du vite hva du skal øve på. Du må forstå konseptene som danner grunnlaget for språket og håndverket for programmering, og så må du sette den forståelsen i stand.

Hvis du ikke er sikker på hva du skal lære og øve på, kan du ta en titt på “Topp JavaScript-rammer og emner å lære i 2017”. Teknisk endring raskt, men språket tilpasser seg sakte, og læringsverktøy som React & Redux vil lære deg arkitektoniske mønstre og programmeringskonsepter som vil tjene deg godt i flere år, uavhengig av månedens rammer.

Noen ganger intervjuer jeg utviklere som svarer på alle spørsmålene mine vakkert, men så snart jeg ber dem vise meg eksempler i kode, snubler de. Du trenger boksmart og øvd dyktighet. Å ha bare det ene eller det andre kommer deg ikke veldig langt. Når du leser om nye konsepter, må du huske å øve på dem, og prøv deretter å arbeide dem inn i hver dagskoden. Forsikre deg om at du har et virkelig solid grep om når og hvordan du bruker konseptene, og en grundig forståelse av hvordan de fungerer i faktiske apper.

Den beste måten å lære å kode er å kode.

Mentor / lærer: Det er bra å vite mye om programmering, men du er bare en person. Uansett hvor produktiv du er på egen hånd, er det ingen måte du kan matche ytelsen til en flott multiplikator. En multiplikator er noen som multipliserer produktiviteten til hele lag.

Det er vanskelig å legge vekt på hvilken innvirkning en multiplikator kan ha på teamet ditt. Selv om multiplikatoren ikke skulle produsere noen kode selv, på et lag på 3, vil du fremdeles komme foran hvis en av dem er en flott multiplikator:

  • 2 1x devs
  • 1 10x dev gjør ikke annet enn å hjelpe de andre 2 devsene med å nå 5x
  • 3 devs kan samsvare med verdibidraget til 10 1x devs

I virkeligheten har team med en sterk mentorkultur en tendens til å veilede hverandre. Alle bidrar med en kode. En eller to skiller seg ut og investerer mer av tiden sin på å hjelpe andre utviklere og gi kodevurderinger av høyere kvalitet.

Bare å kaste mer gjennomstrømning på et problem vil selvfølgelig ikke gi bedre resultater raskere. (Se “The Mythical Man Month”), men en utvikler som deler beste praksis med teamet og hjelper dem med å skrive mer fleksibel, mer vedlikeholdbar og mer bug-fri kode er verdt sin vekt i gull.

Utmerket elev: Jeg ber folk ofte ansette lidenskapelige elever. Teknologiverdenen forandrer seg raskt, og ingen kan følge med på alt, men du vil ha utviklere som raskt kan tilpasse seg hvis du bestemmer deg for å gjøre viktige teknologiske endringer. Hvis du vil ha mest mulig utbytte av multiplikatorer, må du også ansette utviklere som er trenbare og ivrige etter å lære nye ting. De beste utviklerne er både mentorer og mentees - flotte lærere som også tydelig forstår at de kan lære verdifulle nye ting fra selv de grønneste nybegynnere.

Lidenskapelig: For å forbedre deg konstant, må du være motivert for å gå utover de grunnleggende jobbkravene. Du bør ha en forpliktelse til dyktighet, og når du blir bedre og får mer anerkjennelse, belønnes det engasjementet ved anerkjennelse og arbeidsglede.

Lidenskapelige utviklere mestrer håndverket sitt, utvikler en følelse av stolthet og eierskap i arbeidet, og de blir lykkeligere i jobbene sine.

Mange utviklere har spurt meg hvordan jeg kan bli mer lidenskapelig og motivert. Mitt svar er å bli bedre. Sett inn arbeidet. Når du henter flere ferdigheter, vil du begynne å glede deg over det. (Se "Så bra at de ikke kan ignorere deg").

Stol på meg, ingen musiker likte å lure seg gjennom skalaene og hastighetsøvelsene før de begynte å føle forbedring. Få løpere elsket følelsen av å løpe ut av pusten til de la merke til forbedringer i løpetiden, eller hvor langt de kunne løpe før de gikk tom for pusten.

Når vi oppnår ting, utløser vi positive kjemiske tilbakemeldingssløyfer i hjernen vår som fyller oss med en følelse av lykke eller eufori. Styrken til den effekten varierer avhengig av hvor stort målet var, men selv små mål kan utløse den positive tilbakemeldingssyklusen.

Med andre ord, hvis du sliter med å føle deg motivert for å jobbe med kodingsferdighetene dine, kan du begynne med noe veldig enkelt du kan gjøre om noen minutter, og deretter bygge videre på det. Når du gjentar prosessen mer og mer og takler større mål, vil nivåene av dopamin i hjernen vokse, og med den vil glede av å lære også vokse.

Når du får større ferdigheter, vil du få mer lidenskap for å mestre ferdigheten.

Hva har de verste utviklerne felles?

Uansett hvor mange gode egenskaper du har, er det noen få negative attributter som virkelig kan dra deg ned. Heldigvis, hvis du er klar over dem, og du har muligheten til å se manglene dine tydelig, kan du kanskje redusere den negative effekten.

2. Tenk på den verste utvikleren du noen gang har jobbet med. Velg alle ordene som beskriver dem.

Inkompetent: Heldigvis er den verste egenskapen til de verste utviklerne også den enkleste å fikse. Hvis du bare ikke er en veldig god koder akkurat nå, kan du sjekke ut "Lær å kode: 13 tips som kan spare deg for mange års innsats", og gå på jobb! Hvis du ikke føler deg veldig motivert, kan du bla opp og lese delen om utvikling av lidenskap for håndverket ditt.

Arrogant: Denne er mye vanskeligere å fikse, men bare å bestemme seg for å gjøre en innsats kan gjøre en stor forskjell i hvordan andre mennesker oppfatter deg. En arrogant person føler behov for å puste seg selv, eller legge andre mennesker ned for å føle seg bra med seg selv - men det fungerer aldri. I stedet for å føle deg bedre om deg selv, kan du føle en følelse av imposter-syndrom og angst som andre mennesker kan oppdage at du ikke er så smart som du gjør deg selv til å være.

Arrogante mennesker:

  • Anta at de er den smarteste personen i rommet.
  • Nekter å forklare noe fordi den andre personen "ikke ville forstå".
  • Snakk ned til andre / nedlatende.
  • Later som du er smartere enn de egentlig er. Ofte Google-ting for å høres smart ut enn å innrømme at det er noe i verden de ikke kjenner. (Merk: ingenting galt med Googling å lære. Googling bare for å høres smart ut er en annen sak).

Ikke-samarbeidsvillige: Arrogante antar ofte at de vet best, og når andre mennesker jobber med en delt visjon, og arrogant person ofte vil nekte å komme om bord. Hvis du er uenig med noe, snakk og bli hørt, men ikke antar å ha full forståelse av alle de avveiningene som resten av teamet vurderer, og selv om du har en full forståelse av situasjonen, ikke bruk det for å rettferdiggjøre insubordination og runkete oppførsel. Gjør alltid ditt beste for å være snill og hjelpsom.

Umotivert: Det er vanskelig å få gjort noe nyttig hvis du ikke er motivert for å sette inn arbeidet. Se avsnittet om å utvikle lidenskap ovenfor.

Hardnakket: Årsaken til at jeg ikke konsoliderte “sta” og “ikke samarbeidende” er at stahet ikke bare handler om samarbeid. Noen ganger blir utviklere fast og prøver å gjøre noe som ganske enkelt ikke fungerer. De vil sette dager på en løsning som ikke har noen sjanse til å lykkes, men noen ganger nekter å innrømme at de er blitt stumpet. Ofte vil utviklere slå hodet mot en feil som de er blinde for i flere timer, når noen andre kan ha oppdaget løsningen på få minutter.

Ikke fall i den fella. Vær åpen for at hver utvikler av og til blir blind for problemer i sin egen kode. Hver utvikler sliter. Hver utvikler trenger hjelp nå og da. Vær villig til å be om det, og vær villig til å gi det når det blir bedt om deg.

Andre kvaliteter hos 10x utviklere

Etter min mening bør du fokusere på styrkene dine mer enn svakhetene dine. Velg en ting å forbedre på denne uken, og fokuser ubønnhørlig på det. Men kanskje du har størst styrke, er det ikke på topp 5-listen. Her er noen andre egenskaper som kan utgjøre en stor forskjell:

Ærlige, kommunikative mennesker oppfordrer til en av de viktigste funksjonene i ethvert utviklingsforhold: Tillit.

Ofte vil utviklere falle i en felle der de forsvinner ned et kaninhull i flere dager, og når de dukker opp igjen, har de bygget noe som ikke vil integreres med resten av appen, eller du finner ut at de har jaget etter hale prøver å løse et problem som burde ha tatt timer eller minutter.

Kommunisere, kommunisere, kommunisere. Ikke løp på egen hånd for lenge. Sjekk inn koden din hver dag. Få kodevurderinger fra minst 1 eller 2 teammedlemmer. La manageren din vite hva du jobber med daglig.

Det vil bygge gjensidig tillit. Teamet ditt vil få en sjanse til å hjelpe deg med å rydde hindringer, og de vil lære at de kan stole på deg for å holde dem i loopen og gjøre kontinuerlig, jevn fremgang.

Effektivitet: Det som slår meg ved denne er hvor langt nede på listen det er. Det er helt klart et av de viktigste aspektene ved personlig produktivitet, men personlig produktivitet påvirker teamets produktivitet mye mindre enn du kanskje tror. For å være virkelig effektiv, må du fokusere på attributter som vil forbedre multiplikasjonsfaktoren din: Hvor mye kan du forbedre effektiviteten til hele teamet? For mye mer om personlig effektivitet, se "Nedtelling av JavaScript nyttårsforsett". Spesielt punkt 2: “Forbedre utviklingsprosessen”.

Neste skritt

Som vi har sett, er det mange viktige faktorer som bidrar til suksess for de beste utviklerne. Så hvor skal du begynne?

Evne til å løse problemer er toppelementet på listen. Her er noen ting du kan gjøre akkurat nå for å forbedre det:

  • Press deg selv med noen kodingsøvelser. Nybegynnere bør sjekke JavaScript-sporet på FreeCodeCamp, eller øvelsene i Eloquent JavaScript. Mer avanserte utviklere bør jobbe med arkitektoniske konsepter mens de bygger praksisapper. Skyv deg selv bare forbi kanten av dine nåværende evner.

Det samme vil arbeide for å utvikle ferdighetene dine, dine læringsevner og til og med din glede og lidenskap for kode: Øv deg!

Hvem kunne ha gjettet at alt du trenger å gjøre for å plukke opp 4 av de 5 viktigste egenskapene til en 10x utvikler er praksis?

For å fylle ut det eneste manglende stykket, lær hva du lærer andre mennesker. Svar på spørsmål, mentor, par program med dine medarbeidere, og sørg for at alle i teamet ditt er opptatt av en kultur for mentorskap.

Del din nye lidenskap for dyktighet med alle rundt deg, og hele teamet vil bli bedre med deg.

Er du ikke sikker på hva du skal jobbe med?

Lær JavaScript med Eric Elliott. Ta med deg teamet!

Eric Elliott er forfatteren av “Programmering JavaScript Applications” (O’Reilly), og “Lær JavaScript med Eric Elliott”. Han har bidratt til programvareopplevelser for Adobe Systems, Zumba Fitness, The Wall Street Journal, ESPN, BBC og toppopptakere, inkludert Usher, Frank Ocean, Metallica og mange flere.

Han tilbringer mesteparten av tiden sin i San Francisco Bay Area med den vakreste kvinnen i verden.