Leadership

La gratificazione ritardata

Forse avete giocato a FIFA. Oppure a PES, o ad un altro gioco di calcio. Se questo è il vostro caso, conoscete quella sensazione. Sapete cosa si prova quando fate gol, soprattutto se farlo è stato difficile, ha richiesto tanto impegno, se la squadra avversaria era forte e vi siete dovuti mettere alla prova con tutte le vostre forze.

Le/I developer provano una sensazione simile ogni volta che risolvono un problema, ogni volta che il loro codice funziona come vogliono. Per quanto i sistemi informatici siano complessi, per quanto anche un singolo programma possa esserlo, se qualcosa non funziona, chi sviluppa sa che il computer ha ragione. Magari non riesce subito a capire perché, ma sa che sta facendo qualcosa di sbagliato. Ha un feedback immediato, e può rimettersi al lavoro per comprendere cosa non sta girando e perché, e sistemarlo.

Ecco, questa dal punto di vista di chi scrive è la più grande differenza tra un mestiere come quello del/della developer e quello di un/una manager.

Quando decidiamo di passare ad un ruolo manageriale, entriamo in contatto con dei sistemi ancora più complessi da prevedere: le Persone e le Organizzazioni di Persone. Improvvisamente, il feedback smette di essere immediato, e i risultati delle nostre azioni li vediamo ad una distanza di tempo enormemente più grande (certo, se insulto deliberatamente un collega probabilmente avrò subito un feedback negativo circa la mia azione, ma converrete che si tratta di un caso limite - ed anche in quel caso potremmo sorprenderci circa l’imprevedibilità delle reazioni umane).

Quella sensazione del “gol”, del momento liberatorio, quella voglia di urlare di soddisfazione, quel meccanismo di ricompensa, nel mestiere del manager semplicemente non esiste. È rimandata nel tempo, e questo è il primo aspetto su cui tendo a mettere in guardia una persona che da un ruolo tecnico vuole passare a quello manageriale.

Potreste esclamare: “Ma ci sono dei momenti tremendamente esaltanti nella carriera manageriale, soprattutto quando le cose vanno bene!”, ed è certamente vero, ma è comunque una sensazione diversa. Quando, durante la prima esperienza di fundraising io e il team con cui lavoravo siamo arrivati a chiudere l’accordo con i finanziatori, la nostra idea era di festeggiare in stile “Champions League appena vinta”. In realtà, eravamo talmente stanchi dopo le lunghe ore dal notaio, e talmente perplessi circa i documenti complessi che avevamo dovuto studiare ed apprendere in tempi brevi, che la sensazione fu sì di grande soddisfazione, ma comunque non “esplosiva”.

A livello neurologico, questo meccanismo è ben documentato: quando completiamo un task con successo, il nostro cervello rilascia dopamina, il neurotrasmettitore responsabile di quella sensazione di realizzazione e piacere. Non a caso, i game designer più bravi usano con caparbietà questa dinamica cerebrale nella creazione dei loro videogiochi, per tenerci agganciati e spingerci a continuare a giocare.

Primo avvertimento quindi: il feedback non è immediato, né quando è positivo né quando è negativo.

Prendete una decisione oggi, e non sapete di preciso quando e che risultati otterrete.

Diversi tipi di leader tech

Altro punto da chiarire: cos’è, ma soprattutto cosa fa un “leader” in ambito tecnologico? Se proviamo a ragionare con le etichette e i job title, è matematicamente certo che ne usciremo più confusi di prima. CTO, Engineering Manager, VP of Engineering, Head of, Tech Leader, Staff Engineer, Principal Engineer - aggiungete a piacere ed attribuite a ciascuno un significato piuttosto arbitrario.

Fatto questo, traslate lo stesso ruolo in un’altra azienda, e vi renderete conto di dover ricominciare da capo.

Due criteri che chi scrive ritiene più utile adottare per definire meglio la tipologia di “tech leadership” sono:

  1. Il livello di astrazione rispetto alla materia prima, cioè ai dettagli implementativi ed operativi necessari per rendere concrete le idee da realizzare

  2. La trasversalità ed ampiezza degli argomenti da toccare

Nota bene: no, il “numero di persone a riporto” non lo metto tra i parametri. Sia perché detesto il termine “riporti” (ricorda uno stile manageriale che sicuramente funzionava bene nei film di Fantozzi ma non nel nostro contesto), sia perché la quantità di persone di un team dovrebbe essere frutto di un ragionamento molto ampio che complicherebbe inutilmente la descrizione.

Partendo dai due concetti espressi si può arrivare ad un’altra distinzione chiave tra un ruolo tecnico ed uno manageriale:

  • Un Team di developer in un contesto sano dovrebbe essere messo in condizione di lavorare nel modo più congeniale a garantire la giusta concentrazione per scrivere codice, nel rispetto delle diversità individuali. Per alcuni potrebbe trattarsi di uno stato assimilabile al “flow”, per altri potrebbe esserci la necessità di fare frequenti pause. La cosa importante però è che il Team sia in grado di organizzarsi autonomamente, e che eventuali interruzioni non derivino dall’esterno e con modalità diverse da quelle concordate dal Team stesso. Un Leader dovrebbe avere tra i suoi obiettivi la creazione di questo ambiente, comprendendo i bisogni specifici delle sue Persone e garantendo che possano esprimersi al meglio. Inoltre, è molto probabile che un developer, per un certo periodo di tempo, si concentri su uno sviluppo perimetrato ad una precisa area verticale della codebase e quindi del Prodotto.

  • Una persona con un ruolo manageriale non può adottare lo stesso approccio, ma dovrebbe accettare: 1) un context switching frequente tra compiti anche molto diversi e 2) una visione più ampia a livello di domini ed ambiti di azione. Qui urge un disclaimer: “visione più ampia”, non equivale a “visione migliore”, e non equivale a “essere una persona di livello più importante”. Ritengo che per garantire un approccio costruttivo nel mondo tecnologico sia necessario uscire da questi stereotipi o bias inconsci. Ne parlerò meglio nella sottosezione relativa al Dual Ladder.

“Visione più ampia” significa avere un livello di zoom diverso, guardare le cose dall’alto. Questo non è necessariamente più semplice, e non è necessariamente più difficile. Anzi, a livello di profondità, avere una visione più ampia si paga generalmente con una minor comprensione verticale degli aspetti di dettaglio.

Immaginiamo di essere su un elicottero. Un/a buon leader dovrebbe sapersi muovere su più “aree geografiche” assicurandosi che ciascuna di esse si mostri armoniosa e in buone condizioni. In alcuni casi è necessario scendere di quota e osservare più da vicino - e raramente l’elicottero dovrebbe atterrare. Quando se ne presenta il bisogno, l’intento non deve essere solo quello di “risolvere un problema”, ma soprattutto gettare le basi affinché tale intervento non sia più necessario in futuro.

Vediamo come classificare dei possibili “ruoli” di leadership in relazione ai diversi livelli di astrazione e trasversalità - ma ricordiamoci che non sono regole o dogmi, anche se un pò di standardizzazione potrebbe aiutare in fase di recruiting e comprensione tra aziende diverse:

Tech Leader

  • È uno/a sviluppatore di elevata seniority e capacità tecnica. La sua astrazione dal codice e dall’operatività non è totale, il suo ambito e trasversalità riguardano l’intero dominio applicativo del team in cui lavora.

  • Il suo ruolo è quello di garantire la qualità del codice e delle scelte tecnologiche del suo team, in particolare nel processo di scrittura, durante il quale si scelgono gli algoritmi e le strutture dati pertinenti. Inoltre, deve assicurarsi che le altre persone del team facciano tutto questo nel migliore dei modi.

  • Non ha persone formalmente a riporto, ma deve indubbiamente guadagnarsi il rispetto e la fiducia di chi lavora nello stesso team grazie alla sua autorevolezza. Rispetto ad un/a Senior Developer, in ogni caso, il suo ruolo gli conferisce anche l’autorità per prendere delle decisioni (limitatamente all’ambito tecnico) nel momento in cui il team non dovesse riuscire a farlo in autonomia.

  • È una figura di riferimento: nel caso in cui gli altri membri del team dovessero avere bisogno di supporto, dovrebbe essere la prima figura nel gruppo a fornire degli spunti affinché si possa affrontare un problema nel modo migliore e nel breve tempo possibile.

Engineering Manager

  • È una figura manageriale. Anche se in alcuni contesti gli Engineering Manager scrivono ancora codice, chi scrive ritiene che non dovrebbe essere il caso in un team del tutto funzionale; il focus di questi ruoli dovrebbe essere sulle Soft Skill

  • La trasversalità è più ampia di quella di un Tech Lead o di un developer, in quanto la conoscenza deve estendersi sugli ambiti di dominio di tutti i team gestiti

  • Il suo ruolo è quello di People Manager di chi sviluppa in uno o più team - è inevitabile che debba conoscere le tematiche tecnologiche, soprattutto in ottica di comprensione delle complessità che i tecnici affrontano nel day-by-day, ma la sua missione principale è assicurarsi che le dinamiche nei suoi team siano positive. Imperativi in questo senso sono i 1:1 (momenti di incontro e confronto individuali tra il/la manager ed ogni singola persona del Team) nonché un forte allineamento con Tech Lead e - qualora ci siano - Product manager.

  • Da organigramma, le persone dei team che gestisce sono formalmente a suo riporto

VP (o Head) of Engineering

  • Il livello di astrazione aumenta; un tipo di figura di questo tipo non dovrebbe essere coinvolta nella scrittura o nella revisione diretta di codice

  • La trasversalità è ampia: tendenzialmente questa figura deve avere una vista sull’intero dominio ingegneristico aziendale

  • Questo tipo di figura ha senso quando l’organizzazione diventa complessa, e ci sono diversi Engineering Manager con tanti team di sviluppo, ciascuno dei quali ha un prodotto (o una fetta di prodotto) da gestire e portare avanti

  • Nelle aziende più grosse e volutamente più strutturate, l’Head of Engineering assume un ruolo intermedio fra gli engineering manager e il o i VP of Engineering. Non vi sono particolari differenze fra i due ruoli se non l’introduzione di un ulteriore livello di astrazione, che potrebbe avere senso se si vuole logicamente differenziare più business unit aziendali teoricamente indipendenti fra loro.

  • Nelle aziende più grosse e volutamente più strutturate, l’Head of Engineering assume un ruolo intermedio fra gli engineering manager e il o i VP of Engineering. Non vi sono particolari differenze fra i due ruoli se non l’introduzione di un ulteriore livello di astrazione, che potrebbe avere senso se si vuole logicamente differenziare più business unit aziendali teoricamente indipendenti fra loro.

Nota: ho volutamente tenuto fuori il CTO (o CIO o chiamatelo come preferite), perché dal mio punto di vista questa figura è ancora diversa e non legata esclusivamente alla parte di Engineering. Questo è un altro bias molto frequente. In questo caso il livello di astrazione è ancora più alto e la trasversalità si estende ai processi dell’intera azienda, sia per quanto riguarda la cosiddetta “digitalizzazione” dell’organizzazione che anche per tutte le qustioni finanziarie ed amministrative, nonché gli allineamenti con gli executive ed il board o, in caso di aziende che richiedono finanziamenti, coinvolgimento in fase di fundraising.

Dual Ladder

Nel paragrafo precedente ho esplicitato come il tema della “visione più ampia” che generalmente un/a manager ha o dovrebbe avere non debba essere visto/a come una sorta di “aumento di livello di competenza”.

Per reiterare l’importanza di questo concetto colgo l’occasione per tornare a parlare di un punto molto caro al sottoscritto: il principio del dual ladder. In ambito tecnologico fatico a vedere un approccio diverso che possa avere successo. Partiamo da tre concetti chiave da tenere a mente:

  • Il software engineering ricade nell’ambito di knowledge work, in cui le competenze specialistiche sono estremamente variegate e complesse.

  • Un/a manager non potrà mai essere un superset delle conoscenze di tutto il suo Team, e qualora ciò dovesse accadere allora la prima domanda da porsi sarebbe “quali sono le carenze del Team?”

  • Le skill manageriali sono notevolmente diverse da quelle richieste a un ruolo tecnico (di nuovo, non più o meno complesse - diverse) ed il tempo per formarsi è limitato per tutti, ergo bisogna scegliere.

Tradizionalmente, in molte aziende si sono visti schemi di crescita lineari o piramidali, in cui “prima si parte dal lavoro operativo, poi si diventa bravi a farlo e allora si può diventare manager di altri”.

Questo approccio può funzionare in alcuni casi, soprattutto quando il lavoro operativo è sufficientemente semplice e ripetibile da essere “insegnato” da un singolo esperto ad un team più junior, che a quel punto può essere coordinato.

Ma nell’ambito tecnologico, a causa dei tre principi visti prima, questo approccio non scala. Il “Command and Control” (dire alle persone che sviluppano come fare le cose) porta nella maggior parte dei casi a disfunzionalità, calo di motivazione, deresponsabilizzazione e anche a far perdere valore all’azienda, in quanto le competenze pregiate degli individui non vengono utilizzate nel processo decisionale.

Peggio ancora, si dovesse ricadere nel meccanismo del micromanagement. Un/a manager con l’ossessione del controllo a tutti i costi ha il potere di rovinare un team in poco tempo.

Quello che un/a buon/a manager dovrebbe fare è creare un ambiente in cui le competenze specialistiche possano brillare, generare valore ed evolvere insieme alle Persone che le coltivano.

Ci sono persone che lavorano come tecnici/che non vogliono diventare manager, e fanno bene a perseguire il loro sogno di carriera: diventare sempre più bravi/e nella loro area di competenza!

Da un punto di vista aziendale, se si crede in questi presupposti, è importante creare un sistema incentivante anche per chi non vuole crescere in un percorso manageriale. Le figure tecniche devono sentire riconosciuto e premiato il loro continuo perfezionamento, a prescindere dal fatto che rimangano individual contributor. Quando parlo di “sistema incentivante” intendo ovviamente un percorso di carriera, che possa portare alle stesse soddisfazioni (anche a livello retributivo) di un/a manager di pari livello; sono sempre le competenze e il valore portato all’azienda che dovrebbero fungere da discriminante, non il job title.

Il Dual Ladder è una buona soluzione a questo punto, in quanto prevede dei “livelli” di crescita sia per le figure tecniche che per quelle manageriali; molti partono da una base comune ed operativa e poi si biforcano, il che è comunque sensato perché anche un manager di persone Tech deve conoscere la lingua ed il modo di lavorare di quel tipo di Team - guai a mettere un manager generalista in un ruolo di Engineering Manager.