Nästan alla mjukvaruutvecklare eller programmerare har stött på kod som skrivits av någon annan och som bevisar klyschan ”vem som helst kan koda”. Men har du någonsin stött på den mytomspunna ”10x-utvecklaren”? Att vara en 10x utvecklare har mindre att göra med att man är bra på att skriva kod och mer att göra med att man vet exakt vilken kod man ska skriva.
Många av oss började programmera för ett specifikt syfte. Jag började till exempel skriva kod för att automatiskt spela upp textbaserade MUD-spel åt mig när jag sov och var i skolan. Jag var en scriptkiddie vid 13 års ålder och visste inte ens om det. Jag kunde komma på en idé, skriva koden och testa den – helt själv.
Mjukvaruutveckling är svårt när vi gör det för någon annan eftersom vi ofta saknar samma typ av motivation och entusiasm som driver oss när vi följer vår egen vision. Vi kommer inte med idéerna, vi tillbringar timmar på möten för att försöka förstå dem, och sedan ägnar vi större delen av tiden åt att ändra någon annans kod – eller åtminstone bidra till den. Det kan leda till en nivå av distansering som minskar produktiviteten.
För att bli en 10x-utvecklare måste man lära sig att utmärka sig i den här miljön eller till och med starta ett eget företag för att leda utvecklingen.
Alla kan vara en 10x-utvecklare, åtminstone en del av dagen, varje dag. Jag tror att det finns tre saker som alla utvecklare bör fokusera på för att bli mer produktiva och en bättre lagmedlem.
De 3 sakerna
För att bli en 10x-utvecklare behöver du flera års erfarenhet av att arbeta med det programmeringsspråk och den verktygslåda du använder. Du måste vara bra på att lösa problem och skriva kod, det är en självklarhet.
Det är viktigt att förstå att hur du skriver kod inte är det som gör dig till en 10x-utvecklare, 10x-ingenjör, 10x-programmerare eller vad du nu vill kalla det.
Du känner till de 5 W:na: ”Vem, vad, var, varför, när”. Även om dessa alla gäller för mjukvaruutveckling vill jag fokusera på de tre egenskaper som definierar 10x-utvecklare.Dessa tre saker skiljer den genomsnittliga utvecklaren från 10x-utvecklaren:
- Vad
- Vad
- Varför
- När
Vetar vad
I företagsvärlden tenderar utvecklare att arbeta med projekt som de inte har någon större passion för och inte förstår. För de flesta utvecklare är detta inget stort problem, så länge de får mycket bra instruktioner och förväntningarna är tydligt definierade.
Problemet är att utvecklare oftast inte får tillräckliga instruktioner. Istället använder vi den här saken som kallas ”agil utveckling”. Vi får en post-it-lapp med några ord på och förväntas veta exakt vad som ska göras.
Mjukvaruutveckling handlar om kommunikation. Utvecklarna måste veta vad vi arbetar med, vilka problem vi försöker lösa och exakt hur resultatet måste se ut. Ju mer vi vet på förhand, desto snabbare kan vi gå framåt. Viktigast av allt är att känna till avsikten med arbetet och vad som kommer att göra arbetet till en framgång, vilket är avgörande för att lyckas.
Svaga utvecklare kommer att tillbringa timmar med att gå åt fel håll i ett projekt utan att ställa några frågor. De är vad jag kallar -10x-utvecklare eftersom de inte får något uträttat och slösar bort alla sina medarbetares tid. Nästan alla har stött på någon av dessa utvecklare och det kan vara frustrerande att arbeta tillsammans med dem. Och du måste vara försiktig så att du inte tar till dig deras vanor!
Vissa utvecklare fungerar bra även utan en massa detaljer. De använder en stor mängd kreativitet och ställer de rätta frågorna. Dessa enhörningar är sannolikt 10x utvecklare. De vet hur de ska lista ut saker och ting och lyfter ofta nivån på hela teamet som arbetar runt omkring dem.
Summan av kardemumman är att 10x-utvecklare är riktigt bra på att snabbt avgöra vad som behöver åstadkommas och vilka frågor som ska ställas.
Förstå varför
Det kanske största hindret för mjukvaruutveckling är att förstå varför. Om du inte förstår problemet du försöker lösa är det väldigt svårt att lösa det.
Varför hackade jag ihop terminalskript för att spela mitt MUD-spel medan jag sov och var i skolan? Jag ville förstås nå den högsta nivån i spelet. Jag visste exakt varför, och jag gjorde allt jag kunde för att få det att hända.
Samma tillvägagångssätt gäller för alla programvaruutvecklingsprojekt. Utvecklare som förstår den vertikala bransch de befinner sig i och de problem de försöker lösa kommer att vara mycket mer produktiva. Att veta varför och förstå vertikalen hjälper också till att förhindra onödigt arbete, vilket frigör tid för att fokusera på de saker som kommer att göra en produkt eller funktion mer värdefull för användarna.
Problemet är att det inte räcker med att veta varför. Man måste ha en passion för problemet och förstå det utan och innan för att verkligen vara en 10x-utvecklare. Jag tror att de flesta 10x-utvecklare också är produktmänniskor i grunden, begåvade med en god produktvision.
Veta när man ska göra vad
Timing är viktigt för programvaruutvecklingsprojekt. Att välja i vilken ordning man ska arbeta med objekt i sin backlogg är en till synes enkel uppgift som verkligen är kritisk. Arbetar du med något som kan hjälpa ditt företag att få ett nytt konto eller städa upp gamla tekniska skulder?
Som utvecklingsteam måste vi ständigt jonglera med vad vi arbetar med och när vi arbetar med det.
Alla arbetsuppgifter inom mjukvaruutveckling faller in i dessa tre kategorier:
- Saker vi måste göra
- Saker vi behöver göra
- Saker vi vill göra
Vi måste få den här nya funktionen klar för en kund. Vi måste åtgärda fel i vår programvara. Vi vill arbeta med teknisk skuld eller någon cool ny produktfunktion. Det är alltid en balansgång.
Vi bör göra arbetsuppgifter från alla dessa tre hinkar samtidigt. Vi kan inte lägga all vår tid på teknisk skuld, men kanske bör vi lägga en liten del av vår tid på det.
Utvecklare måste också veta när de ska bygga komplexa arkitekturer i sin kod. Jag föredrar att hålla koden så enkel som möjligt tills jag tvingas lägga till arkitektur som jag annars inte kan leva utan.
Utvecklare måste också veta när de ska undvika att jaga glänsande objekt. De tenderar att vilja leka med nya verktyg och tekniker, men dessa lösningar kan bara sakta ner ett projekt snarare än att hjälpa till att få det gjort snabbare.
10x-utvecklare är duktiga på att jonglera med prioriteringar och förstår när de ska investera tid i arkitekturer jämfört med att slänga spaghettikod för att få något att fungera. Kom ihåg att dina användare inte bryr sig om hur din programvara fungerar eller hur fin arkitekturen är. De vill bara att den ska fungera. 10x-utvecklare förstår detta.
Mästra vad, varför & när du ska bli en 10x-utvecklare
Nu ska vi prata om hur du kan behärska de viktiga färdigheterna Vad, Varför och När för att bli en 10x-utvecklare.
Start med Varför
Det första steget för att bli en 10x-utvecklare är att bli passionerad av programvaran och de problem som du försöker lösa. Du måste förstå problemet inifrån och ut. Det börjar med att vara entusiastisk över företaget du arbetar för och deras uppdrag som företag.
Förbered inte bara en knapp att göra något för att det är vad någon har sagt att den ska göra. Sträva efter att förstå varför på en högre nivå. Du kommer att vara mycket mer värdefull för ditt team och ditt företag om du fortsätter att fokusera på varför.
Var en bra utvecklare & Utmärkt problemlösare, inte den bästa programmeraren
Jag skulle beskriva mig själv som mer av en hacker-utvecklare. Jag är typen som kan slänga ihop lite ful kod för att lösa nästan vilket problem som helst väldigt snabbt. Min kod är sällan vacker, men den fungerar. Och det är det som räknas.
Du behöver inte skriva perfekt arkitektonisk kod med enhetstester för att vara en 10x-utvecklare. Du måste veta när och när du inte ska göra dessa saker för att vara en 10x-utvecklare.
En 10x-utvecklare är bra på att lösa specifika problem och tillfredsställa verksamhetens behov med kod. Det smartaste du kan göra är att veta hur långt du ska ta ett projekt innan du överlämnar det till någon annan som kanske är bättre på att slutföra en del av arkitekturen och andra små detaljer.
The When Is in Your Gut, or It Isn’t
Att veta när du ska bygga upp en komplex arkitektur jämfört med att hacka ihop något kommer med erfarenhet och utveckling av dina spindelsinnen. Antingen har du den magkänslan eller inte.
Några av de smartaste utvecklare jag någonsin arbetat med har varit de sämsta på att prioritera mönster och arkitekturer framför funktionalitet och tidsplaner. De ville överkonstruera och skriva om saker och ting om och om igen och strävade efter ”perfekt kod” snarare än ”kod som kan levereras.”
10x-utvecklare måste använda sin erfarenhet och magkänsla för att veta när de ska fokusera på arkitektur och perfektion kontra när de ska få skiten gjord.
Veta vad man ska göra och vad man ska fråga
En så stor del av mjukvaruutvecklingen handlar om kommunikationsförmåga. Tyvärr är många av de anteckningar och krav vi får för arbetsuppgifter inte särskilt detaljerade. En 10x-utvecklare vet hur man läser dessa, tillämpar det ”varför” som de vet om verksamheten och ställer relevanta frågor.
De bästa utvecklarna vet hur mycket tid de ska lägga på något innan de ber om hjälp. De vet också vilka frågor de ska ställa för att klargöra vad som behöver göras för att föra projektet framåt.
Slutsats
Jag har skrivit kod i mer än 15 år. Jag skulle säga att jag är en 10x utvecklare, eller åtminstone kan jag vara det. Jag vet vad jag är bra på. När jag gör det jag är bra på kan jag få en seriös mängd arbete gjort snabbt.
Om du vill ta fram en prototyp av en ny produkt är jag din kille. Om du behöver hjälp med Angular, React eller någon annan front-end-utveckling är jag definitivt inte din kille. Jag skulle vara en -10x utvecklare på dessa uppgifter.
10x utvecklare är inte en myt. De existerar verkligen. De är troligen dev managers, arkitekter, ledande utvecklare eller företagsgrundare. Om de inte är det borde de förmodligen vara det. Det slutade med att jag blev en företagsgrundare, två gånger nu.
Alltså, ingen kommer att vara en 10x-utvecklare varje dag, hela dagen. Vi har inte energi eller fokus för att arbeta i den takten varje dag. Vi är inga robotar.
Om du förstår ”vad, varför och när” som gäller programvaruutveckling kan du bli mer produktiv och en bättre teammedlem – kanske till och med en 10x-utvecklare några timmar om dagen. Och det kan göra stor skillnad.
Medans du är här och tittar på hur du kan förbättra dig kan du kolla in vårt verktyg för dynamisk kodanalys, Stackify Prefix. Det är gratis och kommer att hjälpa dig att skriva bättre kod.