Naar 10x (resultaten): wat elke ontwikkelaar van de beste kan leren

Wat als ik je vertelde dat je 10x beter kunt zijn dan gemiddeld? Niet twee keer zo goed. 10 keer beter: een orde van grootte. Je zal echt opvallen. U hebt toegang tot betere banen, een hoger loon en een grotere werktevredenheid.

Ik heb honderden ontwikkelaars geïnterviewd, onderwezen en begeleid. Misschien is de meest waardevolle afhaalmaaltijd dat er een enorm scala aan vaardigheidsniveaus is, zelfs onder ontwikkelaars die al jaren voor het leven coderen.

Nog opvallender voor mij is echter hoe gemakkelijk de meeste van hen kunnen verbeteren. Ik heb ook gemerkt dat een groot aantal ontwikkelaars willen verbeteren. Waar ze mee worstelen, is weten waaraan ze moeten werken en hoe ze eraan moeten werken.

Het goede nieuws voor degenen die streven naar excellentie is dat de meeste andere ontwikkelaars zich eenvoudigweg niet bewust zijn van de mogelijkheid om te verbeteren, of niet gemotiveerd genoeg zijn om de verbintenis aan te gaan.

Alleen al het besluit om 10x ontwikkelaar te worden, geeft u een enorm voordeel ten opzichte van de concurrentie.

Bovendien gaat 10x niet alleen over ontwikkelingsvaardigheden. Dat is slechts één factor in een groot aantal belangrijke factoren. Natuurlijk kun je geen 10x ontwikkelaar zijn zonder de karbonades, maar codeerkarbonades alleen zijn niet genoeg.

The Origins of the 10x Developer Meme

Een overwicht aan onderzoek suggereert dat er een orde van grootte verschil is in prestaties tussen ontwikkelaars. Om Steve McConnell te citeren (auteur, "Code voltooid"):

De algemene bevinding dat "Er zijn orde-van-grootte verschillen tussen programmeurs" is bevestigd door vele andere studies van professionele programmeurs (Curtis 1981, Mills 1983, DeMarco en Lister 1985, Curtis et al. 1986, Card 1987, Boehm en Papaccio 1988, Valett en McGarry 1989, Boehm et al 2000).

Het blijkt dat dit 10x-ding veel verder gaat dan individuele ontwikkelaars. De verschillen bestaan ​​in teamproductiviteit in verschillende bedrijfstakken, vaardigheidsniveaus tussen allerlei artiesten en atleten, enz ...

10x lijkt heel veel verschil. Het is gemakkelijk om de fout te maken dat de rest van ons geen enkele kans heeft om dat niveau van uitmuntendheid te bereiken - het simpele feit is dat de meesten van ons dat niet zullen doen. Maar wat echt interessant is, is dat er een duidelijk pad is naar uitmuntendheid. Mensen worden geen geweldige ontwikkelaars geboren. Ze komen er door gerichte, doelbewuste oefening.

Het roept een belangrijke vraag op: wat moeten we precies oefenen? Wat hebben de beste ontwikkelaars gemeen, en zijn die eigenschappen dingen die de rest van ons kan leren en nabootsen?

Wat maakt sommige Devs 10x beter dan anderen?

Er zijn veel factoren die sommige ontwikkelaars 10x beter maken dan anderen. Het is veel meer dan hoeveel tickets ze sluiten. Het is natuurlijk van vitaal belang om werk af te krijgen, maar waar kun je nog meer aan verbeteren om tot 10x te komen, en waar moet je eerst aan werken?

We hebben ongeveer 1.000 ontwikkelaars ondervraagd om erachter te komen. Eerst hebben we een informeel onderzoek op Twitter uitgevoerd om woorden te verzamelen die worden gebruikt om buitengewone ontwikkelaars te beschrijven, en niet zo buitengewone ontwikkelaars:

Vervolgens hebben we de antwoorden geconsolideerd in een lijst met eenvoudige, beschrijvende woorden en een enquête gemaakt met 2 meerkeuzevragen.

Wat maakt een geweldige ontwikkelaar?

1. Denk aan de meest buitengewone ontwikkelaar waarmee je ooit hebt gewerkt. Selecteer alle woorden die ze beschrijven.

Het idee hier is om ontwikkelaars een lijst met kwaliteiten te geven waarop ze zich kunnen concentreren. Dit zijn allemaal vaardigheden die je kunt oefenen en verbeteren.

Laten we beginnen met kijken naar wat geweldige ontwikkelaars geweldig maakt. We beginnen met de top 5:

Het blijkt dat al die factoren met een gezonde marge de gebruikelijke productiviteitsmaatregelen verslaan zoals "snel" en "efficiënt".

Probleemoplosser: probleemoplossing is wat ontwikkelaars doen, dus het is geen verrassing dat deze kwaliteit hoge cijfers haalt, maar wat onderscheidt een gemiddelde probleemoplosser van een geweldige probleemoplosser? De juiste problemen oplossen. Ontwikkelaars willen zich productief voelen en gefrustreerd raken als er dingen zijn die hen tegenhouden.

In de meeste grote codebases zijn er delen van de code die niemand wil onderhouden. Als je de tijd kunt nemen om in dat deel van de code te graven en het op te ruimen, maak je het leven gemakkelijker voor iedereen die met die code te maken heeft.

Als er veel voorkomende processen zijn die moeten worden geautomatiseerd, maak dan de tijd om ze te automatiseren. Scoor enkele grote overwinningen en uw collega's en managers zullen het initiatief waarderen. Focus op de problemen met de meeste impact. Als elke ontwikkelaar in het team 5 minuten per dag besteedt aan een repetitieve taak die kan worden geautomatiseerd, en het u slechts 30 minuten kost om het te automatiseren, doe het dan. In een team met 6 ontwikkelaars duurt het slechts 1 dag om de investering terug te betalen.

Bekwaam: vaardigheden worden ontwikkeld op basis van twee ingrediënten: begrip en oefening. Eerst moet je weten wat je moet oefenen. Je moet de concepten begrijpen die de basis vormen van de taal en het ambacht van programmeren, en dan moet je dat begrip gebruiken.

Als u niet zeker weet wat u moet leren en oefenen, bekijkt u de "Top JavaScript Frameworks and Topics to Learn in 2017". Tech verandert snel, maar de taal past zich langzaam aan, en leermiddelen zoals React & Redux leren je architecturale patronen en programmeerconcepten die je jarenlang van dienst zullen zijn, ongeacht het kader van de maand.

Ik interview soms ontwikkelaars die al mijn vragen mooi beantwoorden, maar zodra ik hen vraag om me voorbeelden in code te tonen, struikelen ze. Je hebt slimme boeken en geoefende vaardigheden nodig. Als je alleen het een of het ander hebt, kom je er niet ver mee. Terwijl je over nieuwe concepten leest, moet je ze oefenen en probeer ze vervolgens in je dagelijkse code te verwerken. Zorg ervoor dat u een goed begrip hebt van wanneer en hoe u de concepten moet gebruiken, en een grondig begrip van hoe ze werken in echte apps.

De beste manier om te leren coderen is coderen.

Mentor / docent: veel weten over programmeren is geweldig, maar je bent maar één persoon. Hoe productief u ook bent, er is geen manier om de prestaties van een geweldige multiplier te evenaren. Een multiplier is iemand die de productiviteit van hele teams vermenigvuldigt.

Het is moeilijk om te veel nadruk te leggen op de impact die een multiplier op uw team kan hebben. Zelfs als de multiplier zelf geen code zou produceren, in een team van 3 kom je nog steeds naar voren als een van hen een geweldige multiplier is:

  • 2 1x devs
  • 1 10x dev doet niets anders dan de andere 2 devs helpen 5x te bereiken
  • 3 devs kan overeenkomen met de waardebijdrage van 10 1x devs

In werkelijkheid hebben teams met een sterke mentorcultuur de neiging om elkaar te begeleiden. Iedereen draagt ​​wat code bij. Een of twee vallen op en investeren meer van hun tijd om andere ontwikkelaars te helpen en code-evaluaties van hogere kwaliteit te bieden.

Als u gewoon meer doorvoer naar een probleem gooit, levert dit natuurlijk niet sneller betere resultaten op. (Zie "De Mythische Man-maand"), maar een ontwikkelaar die best practices met het team deelt en hen helpt om flexibelere, beter te onderhouden, meer bug-vrije code te schrijven, is goud waard.

Uitstekende leerling: ik vertel mensen vaak om gepassioneerde leerlingen in te huren. De technische wereld verandert snel en niemand kan alles bijhouden, maar u wilt ontwikkelaars die zich snel kunnen aanpassen als u besluit belangrijke technische wijzigingen aan te brengen. Als je het meeste uit multiplicatoren wilt halen, moet je ook ontwikkelaars inhuren die trainbaar zijn en graag nieuwe dingen willen leren. De beste ontwikkelaars zijn mentoren en leerlingen - geweldige leraren die ook duidelijk begrijpen dat ze waardevolle nieuwe dingen kunnen leren van zelfs de groenste nieuwkomers.

Gepassioneerd: om constant te verbeteren, moet je gemotiveerd zijn om verder te gaan dan de basale functie-eisen. Je moet streven naar excellentie, en naarmate je beter wordt en meer erkenning krijgt, wordt die inzet beloond door erkenning en werkplezier.

Gepassioneerde ontwikkelaars beheersen hun vak, ontwikkelen een gevoel van trots en eigendom in het werk, en ze worden gelukkiger in hun werk.

Veel ontwikkelaars hebben me gevraagd hoe ik meer gepassioneerd en gemotiveerd kan worden. Mijn antwoord is om beter te worden. Zet in het werk. Naarmate je meer vaardigheden opdoet, zul je er meer van gaan genieten. (Zie "Zo goed dat ze je niet kunnen negeren").

Geloof me, geen enkele muzikant vond het leuk om door hun weegschaal en snelheidsoefeningen te sabbelen totdat ze hun verbetering begonnen te voelen. Weinig hardlopers hielden van het gevoel buiten adem te raken totdat ze verbeteringen in hun looptijden opmerkten, of hoe ver ze konden rennen voordat ze buiten adem raakten.

Terwijl we dingen bereiken, activeren we positieve chemische feedbacklussen in ons brein die ons vervullen met een gevoel van geluk of euforie. De sterkte van dat effect varieert afhankelijk van hoe groot het doel was, maar zelfs kleine doelen kunnen de positieve feedbackcyclus activeren.

Met andere woorden, als je moeite hebt om je gemotiveerd te voelen om aan je codeervaardigheden te werken, begin dan met iets heel eenvoudigs dat je binnen een paar minuten kunt doen en bouw daar dan op verder. Naarmate je het proces meer en meer herhaalt en grotere doelen aanpakt, zullen de niveaus van dopamine in je hersenen groeien, en daarmee ook je plezier in leren.

Naarmate je meer vaardigheden opdoet, krijg je meer passie om de vaardigheid onder de knie te krijgen.

Wat hebben de slechtste ontwikkelaars gemeen?

Ongeacht hoeveel geweldige kwaliteiten je hebt, er zijn een paar negatieve attributen die je echt naar beneden kunnen slepen. Gelukkig kunt u de negatieve impact verminderen als u zich hiervan bewust bent en uw tekortkomingen duidelijk kunt zien.

2. Denk aan de slechtste ontwikkelaar waarmee je ooit hebt gewerkt. Selecteer alle woorden die ze beschrijven.

Incompetent: Gelukkig is het slechtste kenmerk van de slechtste ontwikkelaars ook het gemakkelijkst op te lossen. Als je op dit moment nog niet zo goed bent, lees dan "Leer coderen: 13 tips die je jaren van moeite kunnen besparen" en ga aan de slag! Als je je niet erg gemotiveerd voelt, blader je omhoog en lees je het gedeelte over het ontwikkelen van passie voor je vak opnieuw.

Arrogant: deze is veel moeilijker te repareren, maar eenvoudigweg besluiten om een ​​inspanning te leveren kan een groot verschil maken in hoe andere mensen je waarnemen. Een arrogant persoon voelt de behoefte om zichzelf op te blazen of andere mensen neer te zetten om zich goed over zichzelf te voelen - maar het werkt nooit. In plaats van je beter te voelen over jezelf, kun je een gevoel van bedriegersyndroom voelen, en angst dat andere mensen misschien ontdekken dat je niet zo slim bent als dat je bent.

Arrogante mensen vaak:

  • Stel dat ze de slimste persoon in de kamer zijn.
  • Weiger iets uit te leggen omdat de andere persoon "het niet zou begrijpen".
  • Praat met anderen / neerbuigend.
  • Doe alsof je slimmer bent dan ze in werkelijkheid zijn. Vaak Google-dingen om slim te klinken in plaats van toe te geven dat er iets in de wereld is dat ze niet kennen. (Opmerking: er is niets mis met Googlen om te leren. Googlen om gewoon slim te klinken is iets anders).

Niet meewerkend: arrogante mensen veronderstellen vaak dat ze het het beste weten, en wanneer andere mensen aan een gedeelde visie werken, zullen arrogante mensen vaak weigeren aan boord te komen. Als je het ergens niet mee eens bent, spreek dan en word gehoord, maar neem niet aan dat je een volledig begrip hebt van alle afwegingen die de rest van het team overweegt, en zelfs als je de situatie volledig begrijpt, gebruik dat niet om insubordinatie en schokkerig gedrag te rechtvaardigen. Doe altijd je best om vriendelijk en behulpzaam te zijn.

Ongemotiveerd: het is moeilijk om iets nuttigs voor elkaar te krijgen als je niet gemotiveerd bent om aan de slag te gaan. Raadpleeg het gedeelte over het ontwikkelen van passie hierboven.

Eigenwijs: De reden dat ik 'eigenwijs' en 'niet meewerkend' niet heb geconsolideerd, is dat koppigheid niet alleen over samenwerking gaat. Soms lopen ontwikkelaars vast bij het proberen iets te doen dat gewoon niet werkt. Ze zullen dagen in een oplossing stoppen die geen kans van slagen heeft, maar weigeren soms toe te geven dat ze stomp zijn. Vaak slaan ontwikkelaars met hun hoofd tegen een bug waar ze urenlang blind voor zijn, terwijl iemand anders de oplossing in enkele minuten heeft opgemerkt.

Val niet in die val. Sta open voor het feit dat elke ontwikkelaar van tijd tot tijd blind wordt voor problemen in zijn eigen code. Elke ontwikkelaar worstelt. Elke ontwikkelaar heeft zo nu en dan hulp nodig. Wees bereid erom te vragen en wees bereid het te geven wanneer er naar je wordt gevraagd.

Andere kwaliteiten van 10x ontwikkelaars

Naar mijn mening moet je je meer concentreren op je sterke punten dan op je zwakke punten. Kies 1 ding om deze week te verbeteren en blijf erop focussen. Maar misschien staat je grootste kracht niet in de top 5. Hier zijn enkele andere kwaliteiten die een groot verschil kunnen maken:

Eerlijke, communicatieve mensen moedigen een van de belangrijkste kenmerken van elke ontwikkelingsrelatie aan: Vertrouwen.

Vaak zullen ontwikkelaars in een val vallen waar ze dagenlang in een konijnenhol verdwijnen, en wanneer ze weer opduiken, hebben ze iets gebouwd dat niet kan worden geïntegreerd met de rest van de app, of ontdek je dat ze hun staart proberen een probleem op te lossen dat uren of minuten had moeten duren.

Communiceer, communiceer, communiceer. Loop niet te lang alleen weg. Check elke dag je code in. Krijg codebeoordelingen van minimaal 1 of 2 teamleden. Laat uw manager weten waaraan u dagelijks werkt.

Het zal wederzijds vertrouwen opbouwen. Uw team krijgt een kans om u te helpen obstakels te verwijderen en ze zullen leren dat ze op u kunnen vertrouwen om ze op de hoogte te houden en constante, gestage vooruitgang te boeken.

Efficiëntie: Wat me hier opvalt, is hoe ver het op de lijst staat. Het is duidelijk een van de belangrijkste aspecten van persoonlijke productiviteit, maar persoonlijke productiviteit heeft veel minder invloed op de teamproductiviteit dan je zou denken. Om echt efficiënt te zijn, moet je je richten op attributen die je vermenigvuldigingsfactor zullen verbeteren: hoeveel kun je de efficiëntie van het hele team verbeteren? Voor meer informatie over persoonlijke efficiëntie, zie "Aftellen van JavaScript-Nieuwjaarsresoluties". In het bijzonder item # 2: "Verbeter uw ontwikkelingsproces".

Volgende stappen

Zoals we hebben gezien, zijn er veel belangrijke factoren die bijdragen aan het succes van de beste ontwikkelaars. Dus waar moet je beginnen?

Probleemoplossend vermogen staat bovenaan de lijst. Hier zijn enkele dingen die u nu kunt doen om het te verbeteren:

  • Push jezelf met enkele codeeroefeningen. Beginners moeten het JavaScript-nummer op FreeCodeCamp of de oefeningen in Eloquent JavaScript bekijken. Meer geavanceerde ontwikkelaars moeten aan architectonische concepten werken terwijl ze oefen-apps bouwen. Duw jezelf altijd net voorbij de rand van je huidige mogelijkheden.

Hetzelfde zal werken om uw vaardigheden, uw leervaardigheden en zelfs uw plezier en passie voor code te ontwikkelen: oefenen!

Wie had kunnen raden dat alles wat je hoeft te doen om 4 van de 5 belangrijkste kenmerken van een 10x-ontwikkelaar op te pakken, oefening is?

Leer het andere ontbrekende stuk om het enige ontbrekende stuk in te vullen. Beantwoord vragen, mentor, koppel het programma met je collega's en zorg ervoor dat iedereen in je team zich inzet voor een cultuur van mentorschap.

Deel uw nieuwe passie voor uitmuntendheid met iedereen om u heen en het hele team zal met u verbeteren.

Weet u niet zeker waar u aan moet werken?

Leer JavaScript met Eric Elliott. Neem het team mee!

Eric Elliott is de auteur van 'Programming JavaScript Applications' (O'Reilly) en 'Learn JavaScript with Eric Elliott'. Hij heeft bijgedragen aan software-ervaringen voor Adobe Systems, Zumba Fitness, The Wall Street Journal, ESPN, BBC en topartiesten zoals Usher, Frank Ocean, Metallica en nog veel meer.

Het grootste deel van zijn tijd brengt hij door in de San Francisco Bay Area met de mooiste vrouw ter wereld.