Kom til 10x (resultater): Hvad enhver udvikler kan lære af det bedste

Hvad hvis jeg fortalte dig, at du kan være 10 gange bedre end gennemsnittet? Ikke dobbelt så god. 10 gange bedre: En størrelsesorden. Du vil virkelig skille dig ud. Du har adgang til bedre job, højere løn og øget jobtilfredshed.

Jeg har interviewet, undervist og menteret hundreder af udviklere. Den mest værdifulde afhentning er måske, at der er et stort udvalg af færdighedsniveauer, også blandt udviklere, der har kodet i leve i årevis.

Endnu mere slående for mig er hvor let de fleste af dem kan forbedre sig. Jeg har også bemærket, at et stort antal udviklere ønsker at forbedre sig. Hvad de ser ud til at kæmpe med er at vide, hvad de skal arbejde på, og hvordan de kan arbejde på det.

Den gode nyhed for dem, der er engageret i ekspertise, er, at de fleste andre udviklere simpelthen ikke er opmærksomme på muligheden for at forbedre sig eller ikke er motiverede nok til at forpligte sig.

Ved blot at beslutte at blive en 10x udvikler vil du give dig en enorm fordel i forhold til konkurrencen.

Hvad der mere er, 10x handler ikke kun om udviklingsfærdigheder. Det er kun én faktor i en lang række vigtige faktorer. Det er klart, at du ikke kan være 10x-udvikler uden chops, men kodning af chops alene er ikke nok.

Origins of the 10x Developer Meme

En overvægt af forskning antyder, at der er en størrelsesorden forskel i ydelse mellem udviklere. For at citere Steve McConnell (forfatter, “Code Complete”):

Den generelle konstatering af, at "Der er forskelle mellem størrelsesordenen mellem programmerere" er blevet bekræftet af mange andre studier af professionelle 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 sig, at denne 10x ting strækker sig langt ud over individuelle udviklere. Forskellene findes i holdproduktivitet på tværs af en række brancher, kvalifikationsniveauer blandt alle slags kunstnere og atleter osv. ...

10x virker som en hel masse forskel. Det er let at lave fejlen, at resten af ​​os ikke har nogen chance for at nå dette niveau af ekspertise - den enkle kendsgerning er, at de fleste af os ikke har det. Men hvad der virkelig er interessant er, at der er en klar sti til ekspertise. Folk er ikke født som store udviklere. De kommer dertil gennem fokuseret, bevidst praksis.

Det rejser et vigtigt spørgsmål: Hvad skal vi praktisere præcist? Hvad har de bedste udviklere fælles, og er det disse egenskaber ting, som resten af ​​os kan lære af og efterligne?

Hvad gør nogle enheder 10x bedre end andre?

Der er mange faktorer, der gør nogle udviklere 10 gange bedre end andre. Det er meget mere end hvor mange billetter de lukker. At få gjort arbejde er naturligvis en meget vigtig foranstaltning, men hvad kan du ellers forbedre dig for at komme til 10 gange, og hvad skal du først arbejde på?

Vi undersøgte omkring ~ 1.000 udviklere for at finde ud af det. Først gennemførte vi en uformel undersøgelse på Twitter for at samle ord, der blev brugt til at beskrive ekstraordinære udviklere, og ikke så ekstraordinære udviklere:

Derefter konsoliderede vi svar i en liste med enkle, beskrivende ord og oprettede en undersøgelse med 2 multiple choice-spørgsmål.

Hvad gør en stor udvikler?

1. Tænk på den mest ekstraordinære udvikler, du nogensinde har arbejdet med. Vælg alle de ord, der beskriver dem.

Ideen her er at give udviklere en liste over kvaliteter, de kan fokusere på. Dette er alle færdigheder, som du kan øve og forbedre.

Lad os starte med at se på, hvad der gør store udviklere store. Vi starter med top 5:

Det viser sig, at alle disse faktorer slår fælles produktivitetstiltag som "hurtig" og "effektiv" med en sund margin.

Problemløser: Problemløsning er hvad udviklere gør, så det er ikke overraskende, at denne kvalitet får høje karakterer, men hvad adskiller en gennemsnitlig problemløser fra en stor problemløser? Løsning af de rigtige problemer. Udviklere ønsker at føle sig produktive og blive frustrerede, når der er ting, der holder dem tilbage.

I de fleste store kodebaser er der dele af koden, som ingen ønsker at vedligeholde. Hvis du kan få tid til at grave i den del af koden og rense den op, vil du gøre livet lettere for alle, der er nødt til at håndtere den kode.

Hvis der er almindelige processer, der skal automatiseres, skal du tage tiden til at automatisere dem. Få nogle store gevinster, og dine kolleger og ledere vil sætte pris på initiativet. Fokuser på de problemer, der har mest effekt. Hvis hver udvikler i teamet bruger 5 minutter om dagen på en gentagen opgave, der kunne automatiseres, og det kun vil tage dig 30 minutter at automatisere det, gør det. På et hold med 6 udviklere vil det kun tage 1 dag at betale investeringen.

Færdigheder: Færdigheder er udviklet ud fra to ingredienser: forståelse og praksis. Først skal du vide, hvad du skal øve. Du er nødt til at forstå de begreber, der danner grundlaget for sproget og håndværket i programmering, og derefter skal du sætte denne forståelse i gang.

Hvis du ikke er sikker på, hvad du skal lære og øve, skal du tage et kig på "Top JavaScript-rammer og emner, du skal lære i 2017". Tekniske ændringer hurtigt, men sproget tilpasser sig langsomt, og læringsværktøjer som React & Redux lærer dig arkitektoniske mønstre og programmeringskoncepter, der tjener dig godt i årevis, uanset månedens rammer.

Nogle gange interviewer jeg udviklere, der besvarer alle mine spørgsmål smukt, men så snart jeg beder dem om at vise mig eksempler i kode, snubler de. Du har brug for bogsmart og øvet dygtighed. At have kun den ene eller den anden kommer dig ikke meget langt. Når du læser om nye koncepter, skal du sørge for at øve dem og derefter prøve at indarbejde dem i din daglige kode. Sørg for, at du har et rigtig solidt greb om, hvornår og hvordan du bruger koncepterne, og en grundig forståelse af, hvordan de fungerer i faktiske apps.

Den bedste måde at lære at kode er at kode.

Mentor / lærer: At vide meget om programmering er fantastisk, men du er bare én person. Uanset hvor produktiv du er på egen hånd, er der ingen måde, du kan matche ydeevnen for en stor multiplikator. En multiplikator er nogen, der multiplicerer produktiviteten for hele hold.

Det er vanskeligt at overvægte den indflydelse, som en multiplikator kan have på dit team. Selv hvis multiplikatoren ikke selv skulle producere nogen kode, på et hold på 3, vil du stadig komme foran hvis en af ​​dem er en stor multiplikator:

  • 2 1x devs
  • 1 10x dev gør intet andet end at hjælpe de andre 2 devs med at nå 5x
  • 3 devs kan matche værdien af ​​10 1x devs

I virkeligheden har hold med en stærk mentorkultur en tendens til at mentorere hinanden. Alle bidrager med en kode. En eller to skiller sig ud og investerer mere af deres tid på at hjælpe andre udviklere og levere kodevurderinger af højere kvalitet.

At kaste mere gennemstrømning på et problem giver naturligvis ikke bedre resultater hurtigere. (Se "Den mytiske mand-måned"), men en udvikler, der deler bedste praksis med teamet og hjælper dem med at skrive mere fleksibel, mere vedligeholdelig og mere bugfri kode er deres vægt værd i guld.

Fremragende lærer: Jeg beder ofte folk om at ansætte lidenskabelige elever. Teknologiverdenen ændrer sig hurtigt, og ingen kan holde trit med alt, men du vil have udviklere, der hurtigt kan tilpasse sig, hvis du beslutter at foretage vigtige teknologiske ændringer. Hvis du vil have mest udbytte af multiplikatorer, skal du også ansætte udviklere, der er træningsdygtige og ivrige efter at lære nye ting. De bedste udviklere er både mentorer og mentees - gode lærere, som også klart forstår, at de kan lære værdifulde nye ting fra selv de grønneste nybegynder.

Lidenskabelig: For at konstant forbedre dig, skal du være motiveret til at gå ud over de grundlæggende jobkrav. Du skal have en forpligtelse til ekspertise, og når du bliver bedre og får mere anerkendelse, belønnes det engagement ved anerkendelse og jobtilfredshed.

Lidenskabelige udviklere mestrer deres håndværk, udvikler en følelse af stolthed og ejerskab i arbejdet, og de bliver gladere i deres job.

Mange udviklere har spurgt mig, hvordan man bliver mere lidenskabelig og motiveret. Mit svar er at blive bedre. Læg værket i. Når du henter flere færdigheder, begynder du at nyde det mere. (Se "Så gode, at de ikke kan ignorere dig").

Stol på mig, ingen musiker nød glæde gennem deres skalaer og hastighedsøvelser, indtil de begyndte at føle deres forbedring. Få løbere elskede følelsen af ​​at løbe tør for ånden, indtil de bemærkede forbedringer i deres løbetider, eller hvor langt de kunne løbe, før de løb tør for ånden.

Når vi udfører ting, udløser vi positive kemiske feedback-løkker i vores hjerne, der fylder os med en følelse af lykke eller eufori. Styrken af ​​denne effekt varierer afhængigt af hvor stort målet var, men selv små mål kan udløse den positive feedback-cyklus.

Med andre ord, hvis du kæmper for at føle dig motiveret til at arbejde på dine kodningsevner, skal du starte med noget virkelig enkelt, som du kan gøre i løbet af få minutter, og derefter bygge videre på det. Når du gentager processen mere og mere og tackle større mål, vil niveauerne af dopamin i din hjerne vokse, og med den vil din glæde af læring også vokse.

Når du får mere dygtighed, får du mere passion for at mestre evnen.

Hvad har de værste udviklere fælles?

Uanset hvor mange gode egenskaber du har, er der et par negative attributter, der virkelig kan trække dig ned. Heldigvis, hvis du er opmærksom på dem, og du har evnen til at se dine mangler klart, kan du måske reducere den negative virkning.

2. Tænk på den værste udvikler, du nogensinde har arbejdet med. Vælg alle de ord, der beskriver dem.

Inkompetent: Heldigvis er den dårligste egenskab hos de værste udviklere også den nemmeste at løse. Hvis du bare ikke er en meget god koder lige nu, så tjek "Lær at kode: 13 tip, der kan spare dig for mange års indsats", og gå på arbejde! Hvis du ikke føler dig meget motiveret, skal du rulle op og læse afsnittet om udvikling af lidenskab til dit håndværk igen.

Arrogant: Denne er meget sværere at løse, men blot at beslutte at gøre en indsats kan gøre en stor forskel i, hvordan andre mennesker opfatter dig. En arrogant person føler behov for at skjule sig selv eller lægge andre mennesker ned for at føle sig godt om sig selv - men det fungerer aldrig. I stedet for at føle dig bedre til dig selv, kan du føle en følelse af imposter-syndrom og angst, som andre mennesker måske opdager, at du ikke er så smart, som du gør dig selv til at være.

Arrogante mennesker ofte:

  • Antag, at de er den smarteste person i rummet.
  • Nægter at forklare noget, fordi den anden person "ikke ville forstå".
  • Tal ned med andre / nedbrydes.
  • Foregive at være smartere end de virkelig er. Ofte google ting for at lyde smart i stedet for at indrømme, at der er noget i verden, de ikke kender. (Bemærk: intet galt med Googling at lære. Googling bare for at lyde smart er en anden sag).

Ikke-samarbejdsvillige: Arrogante antager ofte, at de ved bedst, og når andre mennesker arbejder på en fælles vision, og en arrogant person ofte vil nægte at komme om bord. Hvis du er uenig med noget, skal du tale og blive hørt, men ikke formode at have en fuld forståelse af alle de kompromiser, som resten af ​​holdet overvejer, og selvom du har en fuld forståelse af situationen, Brug ikke det til at retfærdiggøre insubordination og uønsket adfærd. Gør altid dit bedste for at være venlig og hjælpsom.

Umotiveret: Det er svært at få gjort noget nyttigt, hvis du ikke er motiveret til at komme i arbejde. Se afsnittet om udvikling af lidenskab ovenfor.

Stædig: Årsagen til, at jeg ikke konsoliderede “stædig” og “ikke-samarbejdsvillig”, er, at stædighed ikke kun handler om samarbejde. Nogle gange sidder udviklere ved at prøve at gøre noget, der simpelthen ikke fungerer. De vil sætte dage i en løsning, der ikke har nogen chance for succes, men somme tider nægter at indrømme, at de er stubbet. Ofte vil udviklere slå deres hoveder mod en bug, som de er blinde for i timevis, når nogen andre måske har set løsningen på få minutter.

Fald ikke i den fælde. Vær åben for, at hver udvikler fra tid til anden blinde for problemer i deres egen kode. Hver udvikler kæmper. Hver udvikler har brug for hjælp nu og da. Vær villig til at bede om det, og vær villig til at give det, når det bliver bedt om dig.

Andre kvaliteter hos 10x udviklere

Efter min mening bør du fokusere mere på dine styrker end dine svagheder. Vælg en ting at forbedre denne uge og fokusere ubarmhjertigt på den. Men måske er du største styrke er ikke på top 5-listen. Her er nogle andre kvaliteter, der kan gøre en stor forskel:

Ærlige, kommunikative mennesker tilskynder til et af de vigtigste træk ved ethvert udviklingsforhold: Tillid.

Ofte falder udviklere i en fælde, hvor de forsvinder ned i et kaninhul i flere dage, og når de dukker op igen, har de bygget noget, der ikke integreres med resten af ​​appen, eller du finder ud af, at de har jaget deres hale forsøger at løse et problem, der burde have taget timer eller minutter.

Kommunikere, kommunikere, kommunikere. Du må ikke løbe for dig selv for længe. Tjek din kode hver dag. Få kodevurderinger fra mindst 1 eller 2 teammedlemmer. Fortæl din manager, hvad du arbejder med dagligt.

Det vil skabe gensidig tillid. Dit team får en chance for at hjælpe dig med at fjerne forhindringer, og de lærer, at de kan stole på dig for at holde dem i løkken og gøre konstante, stadige fremskridt.

Effektivitet: Det, der slår mig ved denne, er, hvor langt nede på listen det er. Det er helt klart et af de vigtigste aspekter af personlig produktivitet, men personlig produktivitet påvirker teamets produktivitet meget mindre, end du måske tror. For at være virkelig effektiv skal du fokusere på attributter, der forbedrer din multiplikationsfaktor: Hvor meget kan du forbedre effektiviteten af ​​hele teamet? For mere information om personlig effektivitet, se “Nedtælling af JavaScript til nytårsfunktioner”. Især punkt 2: “Forbedre din udviklingsproces”.

Næste skridt

Som vi har set, er der mange vigtige faktorer, der bidrager til succes for de bedste udviklere. Så hvor skal du starte?

Evne til at løse problemer er det øverste punkt på listen. Her er nogle ting, du kan gøre lige nu for at forbedre det:

  • Skub dig selv med nogle kodningsøvelser. Begyndere skal tjekke JavaScript-sporet på FreeCodeCamp eller øvelserne i Eloquent JavaScript. Mere avancerede udviklere skal arbejde på arkitektoniske koncepter, mens de bygger praksis-apps. Skub altid dig selv forbi kanten af ​​dine nuværende kapaciteter.

Den samme ting vil arbejde på at udvikle dine færdigheder, dine læringsevner og endda din glæde og passion for kode: Øv!

Hvem kunne have gætt, at alt hvad du skal gøre for at hente 4 af de 5 vigtigste egenskaber hos en 10x udvikler er praksis?

For at udfylde det eneste manglende stykke skal du lære det, du lærer andre mennesker. Besvar spørgsmål, mentor, par program med dine medarbejdere, og sørg for, at alle i dit team er forpligtet til en kultur for mentorskab.

Del din nye fundne lidenskab for ekspertise med alle omkring dig, og hele teamet forbedrer sig med dig.

Er du ikke sikker på, hvad du skal arbejde på?

Lær JavaScript med Eric Elliott. Tag teamet med dig!

Eric Elliott er forfatteren af ​​“Programmering af JavaScript-applikationer” (O’Reilly) og “Lær JavaScript med Eric Elliott”. Han har bidraget til softwareoplevelser for Adobe Systems, Zumba Fitness, The Wall Street Journal, ESPN, BBC og topindspilningskunstnere, herunder Usher, Frank Ocean, Metallica og mange flere.

Han tilbringer det meste af sin tid i San Francisco Bay-området med den smukkeste kvinde i verden.