Senior utvecklare eller tech lead: vem ansvarar egentligen för kodkvaliteten i teamet?
Senior utvecklare eller tech lead? Vem bestämmer över kodkvaliteten, vem följer upp, och en färdig mall för ett tech lead-mandat på en sida.
Vlado Pandžić · Grundare · Senior .NET-arkitekt
Publicerad · 8 min läsning
Innehåll
En situation som i någon form utspelar sig i många mjukvaruteam. Applikationen går sönder på ställen som ingen har rört. Chefen märker att vissa utvecklare skriver tester och andra inte, och vänder sig till den mest erfarna personen i rummet: ”Du är ju senior. Se till att alla skriver tester.”
Den seniora utvecklaren svarar att hen gärna hjälper till, men att det inte är hens sak att bestämma vad kollegorna måste göra. Chefen hör ”inte mitt jobb”. Den seniora hör ”nu ansvarar du för andras arbete, utan att ha någon befogenhet över det”. Båda går därifrån frustrerade, och ingenting förändras.
Problemet är sällan människorna. Det är en roll som ingen har definierat. Den här artikeln är till för den som kan definiera den: ägaren, vd:n, CTO:n eller utvecklingschefen.
Två olika jobb med liknande namn
En senior utvecklare definieras av tekniskt djup: att lösa svåra problem, fatta bra designbeslut, granska kod och hjälpa kollegor att växa. Inflytandet kommer från kunnandet. Hen kan föreslå, förklara och visa, men kollegorna är inte skyldiga att följa.
En tech lead definieras av ansvaret för hur teamet bygger mjukvara: vilka standarder som gäller, hur kod granskas, vilken teknisk skuld som betalas av och vad som händer när någon struntar i en överenskommen regel. Inflytandet kommer från ett mandat som ledningen har gett.
Samma person kan göra båda, och gör det ofta. Men det andra jobbet följer inte automatiskt med det första. Det måste ges, och teamet måste veta att det har getts.
Frågan som avslöjar luckan
Ställ en enda fråga om valfri standard i ditt team: vad händer när en utvecklare inte följer den?
- Om svaret är ”tech lead tar upp det, och vid behov går det vidare till ledningen” har standarden en ägare.
- Om svaret är ”den seniora borde prata med hen”, fråga vad den seniora faktiskt kan göra om kollegan säger nej. Oftast: ingenting, förutom att eskalera, vilket gör en kollega till en chef som ingen har utsett.
- Om svaret är en axelryckning är standarden en önskan.
Vem gör vad
Ett enkelt sätt att göra det tydligt: skriv för varje typ av beslut ner vem som föreslår, vem som beslutar, vem som genomför och vem som tar hand om det när det ignoreras.
| Beslut | Föreslår | Beslutar | Genomför | När det ignoreras |
|---|---|---|---|---|
| ”Ny kod ska ha automatiska tester” | Senior eller tech lead | Tech lead, med ledningens stöd | Hela teamet, med hjälp av den seniora | Tech lead, sedan ledningen |
| Hur kodgranskning går till | Tech lead | Tech lead | Alla | Tech lead |
| Arkitekturen för en ny funktion | Senior utvecklare | Tech lead | Utvecklarna på funktionen | Tech lead |
| Vilken teknisk skuld som betalas av detta kvartal | Tech lead | Ledningen, på inrådan av tech lead | Teamet | Ledningen |
| Prioriteringar mellan funktioner | Produktägare eller ledning | Ledningen | Teamet | Ledningen |
| Hjälpa en kollega som har kört fast | Vem som helst | Ingen behöver | Den seniora | Inte tillämpligt |
Om kolumnen ”beslutar” säger ”den seniora” för saker som påverkar andras arbete, och ingen i ledningen har sagt det högt, är det där friktionen kommer ifrån.
Vad är rimligt att förvänta sig av en senior utan mandat?
| Situation | Rimligt att förvänta sig | Inte rimligt att förvänta sig |
|---|---|---|
| Tester saknas | Påpeka det och föreslå en lösning | Få kollegorna att skriva dem |
| En kollega frågar hur man skriver ett test | Visa hur | Kontrollera allas arbete varje dag |
| Teamet behöver en standard | Ta fram ett utkast och förklara det | Besluta den åt alla |
| Någon struntar i standarden | Nämna det, en gång | Vidta disciplinära åtgärder |
| En riskabel design håller på att byggas | Lyfta oron med argument | Stoppa den på egen hand |
En bra senior höjer teamets kvalitet genom exempel, granskning och hjälp. Att be hen upprätthålla regler gentemot jämlikar, utan att någon har sagt att hen får, skadar just de relationer som gör att inflytandet fungerar.
Tecken på att rollen saknas
Du behöver ingen revision för att se det. Om tre eller fler av de här låter bekanta är det ingen som egentligen äger den tekniska kvaliteten i ditt team:
- Varje utvecklare har sin egen bild av vad ”klart” betyder.
- Kodgranskning sker när någon har tid, och godkännandet är mest en formalitet.
- Samma diskussion om tester eller struktur dyker upp med några månaders mellanrum och slutar utan beslut.
- Din mest erfarna utvecklare är frustrerad, och du vet inte riktigt varför.
- Buggar som når kunderna beskrivs som otur snarare än som en lucka i processen.
- När du frågar ”vem bestämde det här?” om ett tekniskt val blir svaret ”det blev bara så”.
Inget av detta är en katastrof i sig. Tillsammans betyder de att teamet betalar varje dag för ett beslut som ingen har fattat: vem som sätter reglerna.
Mandatet på en sida
Om du vill att någon ska äga den tekniska kvaliteten, skriv ner det. Det behöver inte vara långt. En sida som den här, överenskommen med personen och kommunicerad till teamet, tar bort det mesta av förvirringen:
Ansvarar för: kodstandarder, automatiska tester, regler för kodgranskning, tekniska beslut i [system eller team].
Får besluta själv: standarder och granskningsregler; det tekniska upplägget för funktioner.
Beslutar tillsammans med ledningen: regler som ändrar hur människor använder sin tid; teknisk skuld kontra nya funktioner.
När en regel ignoreras: tar upp det med utvecklaren; om det upprepas lyfts det till [chef], som hanterar det.
Tid: ungefär [20] % av veckan för ledarskap, resten för utveckling.
De två sista raderna är viktigast. Utan eskaleringsvägen har ledaren ansvar utan befogenheter. Utan tid blir rollen obetald övertid, och den bästa utvecklaren slutar långsamt att vara det.
Tre sätt att lägga upp det
- Utse en tech lead i teamet. Oftast rätt svar för ett etablerat team med en erfaren senior som vill ha rollen. Ge hen mandatet och tiden, och meddela det.
- Gör det till en gemensam teamöverenskommelse. I små team kan standarderna bestämmas tillsammans och skrivas ner, medan ledningen hanterar undantagen. Ingen vaktar någon; regeln tillhör alla.
- Ta in en extern senior under en avgränsad period. När ingen internt vill ha rollen, eller teamet är ungt, kan en erfaren person utifrån sätta upp standarderna, testerna och granskningsprocessen, med mandat från ledningen, och sedan lämna över till någon i teamet. Hur det fungerar i vardagen beskriver vi i artikeln om vad du kan göra medan du letar efter en senior .NET-utvecklare.
Samtalet, utan missförståndet
För chefer, en bättre start än ”se till att alla skriver tester”:
”Jag vill att automatiska tester blir standard för ny kod. Kan du ta fram reglerna och hjälpa teamet att börja använda dem? Jag meddelar att de gäller alla, och jag tar hand om det om någon inte följer dem.”
För seniora utvecklare, ett bättre svar än ”det är inte mitt jobb”:
”Jag tar gärna fram standarden och hjälper alla att komma igång med den. Kan vi komma överens om att det är en officiell regel för teamet, och om vem som hanterar det när den inte följs?”
Båda versionerna säger samma sak som det ursprungliga samtalet. Skillnaden är att ansvar och befogenhet hamnar på samma ställe.
Varför det spelar roll för verksamheten
Kodkvalitet är ingen utvecklarhobby. Saknade tester och spretiga standarder syns som buggar i produktion, som funktioner som tar längre tid för varje år och som system som bara en person vågar röra. Vår artikel om teknisk skuld och långsam utveckling visar hur det byggs upp.
Det mesta går att förebygga, men bara när någon tydligt ansvarar för att förebygga det, och har fått veta det.
Det är också ett av de vanligaste skälen till att bra människor slutar: ansvar utan befogenheter sliter ut dem. Mer om det i varför bra utvecklare slutar.
Frågor vi ofta får
Förväntas varje senior utvecklare bli tech lead?
Nej. Många utmärkta seniora utvecklare vill hellre gå på djupet tekniskt och har inget intresse av att leda. Båda vägarna är värdefulla. Att tvinga den andra på någon kostar dig oftast en bra utvecklare och ger dig en motvillig ledare.
Vårt team har fem utvecklare. Behöver vi ens en tech lead?
Du behöver någon som äger de tekniska standarderna, även om det bara handlar om några timmar i veckan. I små team räcker det ofta med en gemensam överenskommelse och en chef som står bakom den.
Ska en tech lead ha högre lön?
Om rollen tar verklig tid och innebär verkligt ansvar, ja, i lön eller i tydligt minskade övriga arbetsuppgifter. Ett mandat utan tid eller erkännande håller inte i längden.
Kan en extern utvecklare ha den här rollen?
Under en avgränsad period, ja, och det fungerar ofta bra: en person utifrån har ingen historia i teamets interna politik. Mandatet måste komma från ledningen, och målet bör vara att lämna över rollen till någon i teamet.
Så arbetar vi
ProCoding är en .NET-studio i Split, Kroatien. Utöver utveckling hjälper vi ofta team att sätta upp den tekniska sidan av samarbetet: kodstandarder, automatiska tester, kodgranskning och överlämning av kunskap, alltid med ett tydligt mandat från ledningen och med målet att det ska stanna kvar hos ditt team. Som ett månatligt block av dagar, eller med en frilansande .NET-utvecklare i ditt team. Första steget är ett kostnadsfritt samtal.
Boka ett kostnadsfritt samtal på 30 minuter.
Källor
- The standard of code review, Google Engineering Practices
Den här artikeln är endast allmän information och inte juridisk, skattemässig, ekonomisk eller annan professionell rådgivning. Scenarier, exempel och beräkningar är illustrativa. Användarvillkor och ansvarsfriskrivning.