Næsten enhver softwareudvikler eller programmør er stødt på kode skrevet af en anden person, der beviser klichéen “alle kan kode”. Men er du nogensinde stødt på den angiveligt mytiske “10x Developer”? At være en 10x udvikler har mindre at gøre med at excellere i at skrive kode og mere at gøre med at vide præcis, hvilken kode man skal skrive.
Mange af os begyndte at programmere med et bestemt formål for øje. Jeg begyndte f.eks. at skrive kode for at autoplay tekstbaserede MUD-spil til mig, mens jeg sov og var i skole. Jeg var en scriptkiddie som 13-årig og vidste det ikke engang. Jeg kunne komme med en idé, skrive koden og teste den – helt alene.
Softwareudvikling er svært, når vi gør det for en anden, fordi vi ofte mangler den samme form for motivation og begejstring, som driver os, når vi forfølger vores egen vision. Vi kommer ikke med ideerne, vi bruger timer i møder på at forsøge at forstå dem, og så bruger vi det meste af tiden på at ændre en andens kode – eller i det mindste bidrage til den. Det kan føre til en grad af løsrivelse, der mindsker produktiviteten.
For at blive en 10x-udvikler skal du lære at udmærke dig i dette miljø eller endda starte dit eget firma for at gå forrest.
Alle kan være en 10x-udvikler, i det mindste en del af dagen, hver eneste dag. Jeg mener, at der er tre ting, som alle udviklere bør fokusere på for at blive mere produktive og et bedre teammedlem.
- De 3 ting
- Knowing the What
- Forståelse af hvorfor
- Ved at vide hvornår man skal gøre hvad
- Mestring the What, Why & When to Become a 10x Developer
- Start with Why
- Være en god udvikler & Fremragende problemløser, ikke den bedste programmør
- Det hvornår er i din mave, eller det er det ikke
- Ved hvad du skal gøre og hvad du skal spørge
- Konklusion
De 3 ting
For at blive en 10x-udvikler skal du have flere års erfaring med at arbejde med det programmeringssprog og værktøjssæt, du bruger, uanset hvilket programmeringssprog og værktøjssæt du bruger. Du skal være god til at løse problemer og skrive kode; det er en selvfølge.
Det er vigtigt at forstå, at det, hvordan du skriver kode, ikke er det, der gør dig til en 10x udvikler, 10x ingeniør, 10x programmør, eller hvad du nu vil kalde det.
Du kender de 5 W’er: “Hvem, hvad, hvor, hvorfor, hvorfor, hvornår”. Selv om de alle gælder for softwareudvikling, vil jeg fokusere på de tre egenskaber, der definerer 10x-udviklere.Disse tre ting adskiller den gennemsnitlige udvikler fra 10x-udvikleren:
- What
- What
- Why
- When
Knowing the What
I virksomhedsverdenen har udviklere en tendens til at arbejde på projekter, som de ikke har meget passion for og ikke forstår. For de fleste udviklere er dette ikke et stort problem, så længe de får meget gode anvisninger, og forventningerne er klart defineret.
Problemet er, at udviklere normalt ikke får tilstrækkelige anvisninger. I stedet bruger vi denne ting, der hedder “agil udvikling”. Vi får en Post-it-seddel med et par ord på og forventes at vide præcis, hvad der skal gøres.
Softwareudvikling handler om kommunikation. Udviklerne skal vide, hvad vi arbejder med, hvilke problemer vi forsøger at løse, og præcis hvordan resultatet skal se ud. Jo mere vi ved på forhånd, jo hurtigere kan vi komme videre. Vigtigst af alt er det at kende hensigten med arbejdet og vide, hvad der vil gøre arbejdet til en succes, hvilket er afgørende for succes.
Dårlige udviklere vil bruge timer på at gå i den forkerte retning på et projekt uden at stille nogen spørgsmål. De er det, jeg kalder -10x-udviklere, fordi de ikke får noget udrettet og spilder alle deres kollegers tid. Næsten alle har stødt på nogle af disse udviklere, og det kan være frustrerende at arbejde sammen med dem. Og du skal passe på, at du ikke får deres vaner!
Nogle udviklere arbejder godt, selv uden en masse detaljer. De bruger en stor mængde kreativitet og stiller de rigtige spørgsmål. Disse enhjørninger er sandsynligvis 10x udviklere. De forstår at regne tingene ud og løfter ofte niveauet for hele holdet, der arbejder omkring dem.
Den vigtigste pointe er, at 10x-udviklere er rigtig gode til hurtigt at finde ud af, hvad der skal udføres, og hvilke spørgsmål de skal stille.
Forståelse af hvorfor
Den måske største hindring i softwareudvikling er at forstå hvorfor. Hvis du ikke forstår det problem, du forsøger at løse, er det virkelig svært at løse det.
Hvorfor hackede jeg terminalscripts sammen for at spille mit MUD-spil, mens jeg sov og var i skole? Jeg ville selvfølgelig opnå det højeste niveau i spillet. Jeg vidste præcis hvorfor, og jeg gjorde alt, hvad jeg kunne for at få det til at ske.
Den samme fremgangsmåde gælder for ethvert softwareudviklingsprojekt. Udviklere, der forstår den vertikale branche, de befinder sig i, og de problemer, de forsøger at løse, vil være langt mere produktive. At vide hvorfor og forstå det vertikale område er også med til at forhindre unødvendigt arbejde og frigøre tid til at fokusere på de ting, der vil gøre et produkt eller en funktion mere værdifuld for brugerne.
Problemet er, at det ikke er godt nok at vide hvorfor. Man skal have en passion for problemet og forstå det ud og ind for virkelig at være en 10x-udvikler. Jeg tror, at de fleste 10x-udviklere også er produktfolk i hjertet, udstyret med et godt produktsyn.
Ved at vide hvornår man skal gøre hvad
Timing er vigtigt for softwareudviklingsprojekter. At vælge hvilken rækkefølge man skal arbejde på emner i sin backlog er en tilsyneladende let opgave, som i virkeligheden er kritisk. Arbejder du på noget, der kan hjælpe din virksomhed med at få en ny konto eller rydde op i gammel teknisk gæld?
Som udviklingsteam skal vi konstant jonglere med, hvad vi arbejder på, og hvornår vi arbejder på det.
Alle arbejdsopgaver inden for softwareudvikling falder ind under disse tre kategorier:
- Det, vi skal gøre
- Det, vi skal gøre
- Det, vi gerne vil gøre
Vi skal have denne nye funktion færdig for en kunde. Vi er nødt til at rette fejl i vores software. Vi ønsker at arbejde på teknisk gæld eller en fed ny produktfunktion. Det er altid en balancegang.
Vi bør udføre arbejdsopgaver fra alle tre spande samtidig. Vi kan ikke bruge al vores tid på teknisk gæld, men måske bør vi bruge en lille procentdel af vores tid på det.
Endvidere skal udviklerne også vide, hvornår de skal bygge komplekse arkitekturer i deres kode. Jeg foretrækker at holde koden så enkel som muligt, indtil jeg er tvunget til at tilføje arkitektur, som jeg ellers ikke kan leve uden.
Endvidere skal udviklere også vide, hvornår de skal undgå at jagte skinnende objekter. De har en tendens til at ville lege med nye værktøjer og teknologier, men disse løsninger kan kun forsinke et projekt i stedet for at hjælpe det til at blive hurtigere færdigt.
10x-udviklere er gode til at jonglere med prioriteter og forstår, hvornår de skal investere tid i arkitekturer i forhold til at smide spaghetti-kode for at få noget til at fungere. Husk, at dine brugere er ligeglade med, hvordan din software fungerer, eller hvor fancy arkitekturen er. De vil bare have det til at fungere. 10x-udviklere forstår dette.
Mestring the What, Why & When to Become a 10x Developer
Nu skal vi tale om, hvordan du kan mestre de vigtige færdigheder What, Why og When for at blive en 10x-udvikler.
Start with Why
Det første skridt til at blive en 10x-udvikler er at blive passioneret omkring den software og de problemer, som du forsøger at løse. Du er nødt til at forstå problemet indefra og ud. Det starter med at være begejstret for den virksomhed, du arbejder for, og deres mission som virksomhed.
Lad ikke bare en knap gøre noget, fordi det er det, nogen har sagt, den skal gøre. Stræb efter at forstå hvorfor på et højere niveau. Du vil være meget mere værdifuld for dit team og din virksomhed, hvis du forbliver fokuseret på hvorfor.
Være en god udvikler & Fremragende problemløser, ikke den bedste programmør
Jeg vil beskrive mig selv som mere af en hacker-udvikler. Jeg er typen, der kan smide noget grim kode sammen for at løse næsten ethvert problem meget hurtigt. Min kode er sjældent smuk, men den virker. Og det er det, der betyder noget.
Du behøver ikke at skrive perfekt arkitektonisk kode med enhedstests for at være en 10x-udvikler. Du skal vide, hvornår og hvornår du ikke skal gøre disse ting for at være en 10x-udvikler.
En 10x-udvikler er god til at løse specifikke problemer og tilfredsstille forretningens behov med kode. Det klogeste, du kan gøre, er at vide, hvor langt du skal gå med et projekt, før du overlader det til en anden, som måske er bedre til at færdiggøre nogle af arkitekturen og andre små detaljer.
Det hvornår er i din mave, eller det er det ikke
At vide, hvornår du skal bygge en kompleks arkitektur op i forhold til at hacke noget sammen, kommer med erfaring og udvikling af dine spindelvævssanser. Enten har du den mavefornemmelse, eller også har du den ikke.
Nogle af de klogeste udviklere, jeg nogensinde har arbejdet sammen med, har været de værste til at prioritere mønstre og arkitekturer frem for funktionalitet og tidsplaner. De ville over-engineere og omskrive ting igen og igen og stræbte efter “perfekt kode” i stedet for “kode, der kan sendes.”
10x-udviklere skal bruge deres erfaring og mavefornemmelse til at vide, hvornår de skal fokusere på arkitektur og perfektion frem for at få lortet gjort.
Ved hvad du skal gøre og hvad du skal spørge
Så meget af softwareudvikling handler om kommunikationsevner. Desværre er mange af de noter og krav, vi får til arbejdsopgaver, ikke særlig detaljerede. En 10x-udvikler ved, hvordan han/hun skal læse disse, anvende det “hvorfor”, som han/hun ved om forretningen, og stille relevante spørgsmål.
De bedste udviklere ved, hvor meget tid de skal bruge på noget, før de beder om hjælp. De ved også, hvilke spørgsmål de skal stille for at få afklaret, hvad der skal gøres for at få projektet fremad.
Konklusion
Jeg har skrevet kode i mere end 15 år. Jeg vil sige, at jeg er en 10x udvikler, eller det kan jeg i hvert fald være. Jeg ved hvad jeg er god til det. Når jeg laver de ting jeg er god til, kan jeg få en seriøs mængde arbejde gjort hurtigt.
Hvis du ønsker at lave prototyper af et nyt produkt, er jeg din mand. Hvis du har brug for hjælp med Angular, React eller anden front-end udvikling, er jeg helt sikkert ikke din mand. Jeg ville være en -10x udvikler til de opgaver.
10x udviklere er ikke en myte. De findes faktisk. De er højst sandsynligt dev managers, arkitekter, lead udviklere eller virksomhedsstiftere. Hvis de ikke er det, så burde de nok være det. Jeg endte med at være virksomhedsstifter, to gange nu.
Der er heller ingen, der vil være 10x-udvikler hver dag, hele dagen lang. Vi har ikke energi eller fokus til at arbejde i det tempo hver dag. Vi er ikke robotter.
Hvis du forstår “hvad, hvorfor og hvornår” softwareudvikling foregår, kan du være mere produktiv og et bedre teammedlem – måske endda en 10x-udvikler i nogle få timer om dagen. Og det kan gøre en stor forskel.
Mens du er her og ser på, hvordan du kan forbedre dig, kan du tjekke vores værktøj til dynamisk kodeanalyse, Stackify Prefix. Det er gratis og vil hjælpe dig med at skrive bedre kode.