10x programmerare är ett hett ämne att diskutera i mjukvarubranschen nuförtiden, så jag tänkte att det skulle vara en bra idé att dela med mig av min synvinkel i detta avseende.
Ärligt talat känner jag inte till den exakta definitionen av en 10x programmerare, men jag antar att det hänvisar till hyperproduktiva programmerare (vilket kanske inte motsvarar exakt 10 gånger produktiviteten, men på en betydande nivå nära eller mer än 10 gånger).
Baserat på några få framgångar som jag hade när jag levererade ultrastora programvaror för nystartade företag och företag, och arbetslivserfarenhet med några topputvecklare, kan jag dela med mig av några insikter om det här ämnet.
Den 10x programmeraren då
Mjukvara som utvecklades för 20-30 år sedan var mycket enklare jämfört med modern mjukvara, med avseende på funktionalitet, säkerhet, prestanda och skalbarhet. Å andra sidan fanns det vid den tiden bara en handfull bibliotek eller ramverk tillgängliga för att implementera alla funktioner.
Därmed innebar programvara som skrevs för 20-30 år sedan en betydande ansträngning i programmeringen.
Det är jämförelsevis enkelt att definiera en 10x-programmerare i det sammanhanget. Skillnaden mellan den mängd grundläggande programmeringsinsatser som 10x- och vanliga programmerare gör för att implementera samma uppsättning funktioner.
Den 10x-ingenjören nu
För att gå in på ytterligare detaljer ska vi klargöra en sak: programvaruutveckling är en komplex process, och programmering är bara ett av de områden där man kan bidra till moderna programvaror.
På grund av den ökade användningen av programvara, särskilt via Internet, av både konsumenter och organisationer, är programvara mycket komplex, och det kan vara ett vansinnigt beslut att bygga något från grunden. Ärligt talat, om det inte är en helt ny plattform eller ett nytt operativsystem, är den kärnprogrammering som krävs för att utveckla modern programvara mindre intensiv jämfört med äldre insatser.
Men även om programmeringskunskap och ansträngning fortfarande är mycket viktigt, är den mängd ansträngning som krävs för att bygga bra programvara (felfri, säker och säljbar) inom ingenjörsyrket.
Så i dagens sammanhang kanske en 10x programmerare inte ger mycket värde i branschen, men en 10x ingenjör skapar ett mycket stort genomslag i utvecklingsprocessen.
Jag skulle vilja lägga till mina 3 cent här.
1. De använder verktyg på bästa sätt
Mjukvaruutveckling är en komplicerad process som inbegriper många olika typer av insatser. Förutom kodning innebär det insatser från att dokumentera processen, till att formatera data, från att läsa loggdata, till att skicka rapporter, från automatisk testning, till manuell testning, från komplex felsökning, till manuell utredning av problem, och så vidare och så vidare.
En enorm ansträngning kan göras extremt effektiv genom att använda rätt uppsättning verktyg och plattformar (som är lämpliga för en kunds budget och andra begränsningar).
Redaktörer
Skrivande av programvara inbegriper en eller flera redaktörer, varav vissa också kallas IDE (Integrated Development Environment). Moderna IDE, som Visual Studio eller Eclipse, erbjuder en stor mängd funktioner för att göra utvecklare produktiva, men en stor del av dessa funktioner är inte kända av de flesta utvecklare.
Populära IDE har också kommersiella och kostnadsfria plugins (t.ex. Resharper), som möjliggör ännu mer produktivitet för utvecklare.
Förutom IDE:s är även andra redigeringsprogram som NotePad++, MarkdownPad osv. mycket användbara i ett relevant sammanhang.
Verktyg och onlinetjänster
Verktyg och onlinetjänster som t.ex. läsning eller sökning i stora loggfiler, http-debuggerprogram som Fiddler, bygg- och distributionsverktyg osv.
Egna verktyg
10x-ingenjörer gör också egna uppsättningar av verktyg för att utföra repetitiva åtgärder för vilka lämplig programvara kanske inte finns tillgänglig externt.
I många fall tycks affärsinnehavare i ett programvaruutvecklingshus inte vara intresserade av att investera särskilt mycket i verktyg för utvecklare, men genom att använda rätt uppsättning verktyg kan man åstadkomma överraskande mycket produktivitet.
För programvaruutvecklare, som är några av de dyraste personerna att anställa, är det värt att spendera pengar på rätt verktyg för dem.
Som teamledare för .net-utvecklare utvecklade jag en ASP.NET Core & Visual Studio-startmall som följde de senaste .net-kodningsmetoderna, och det hjälpte mitt team att öka den totala produktiviteten tre gånger.
2. De uppfinner inte hjulet på nytt
Programvarubranschen har blivit mycket mogen under de senaste tre decennierna. Nästan alla problem som utvecklare försöker lösa genom kodning har lösts och finns tillgängliga som API:er (antingen som binära eller webbtjänster), varav vissa är kommersiella medan andra är gratis.
Frameworks med öppen källkod ger dessutom stor flexibilitet för att förstå det underliggande API-beteendet eller anpassas efter användarnas behov.
För att hoppa in i programmeringen ser 10x ingenjörer faktiskt till att detta problem inte har lösts helt (eller delvis) tidigare eller, om så är fallet, att de inte finns tillgängliga för att användas.
3. De skriver (kontinuerligt) vackert konstruerad kod
För att skriva bra mjukvara krävs det att man definierar en bra arkitektur som inte bara följer bra konstruktionsmönster och principer, utan som också drar nytta av modern infrastruktur. Att producera välkonstruerad kod gör det inte bara möjligt att skriva nya funktioner snabbare, utan minskar också antalet buggar avsevärt.
Men vacker konstruktion kräver kontinuerlig förbättring.
Jag har sett förvånansvärt mycket kod av låg kvalitet i olika mjukvaruprojekt under min yrkeskarriär, vilket kontinuerligt ökar den tekniska skulden. Ett enkelt projekt som startade för fem år sedan är fullt av icke-teknisk ful kod och kräver 20+ personer för att hantera utvecklingscykeln (där de tillbringar 80 % av sin tid med att faktiskt åtgärda buggar).
En av de viktigaste orsakerna bakom denna hemska situation är ”rädsla”.
Organisationer, särskilt företag, är oftast rädda för förändring.
Mjukvaruutveckling är en disciplin som förändras otroligt snabbt när det gäller verktyg, ramverk och teknik, och kräver kontinuerlig förändring för att komma till rätt plats.
Förändring är skrämmande, men den är inte så farlig som den låter, särskilt inte inom mjukvarubranschen (med rätt uppsättningar av verktyg och människor). Men om det inte görs som förväntat tar det inte lång tid innan projektet överges helt och hållet en dag.