OK, come piombo, è il tuo lavoro far uscire i progetti. Quindi devi essere quello che impone gli standard, le revisioni del codice, chiede rapporti sui progressi e tutte quelle cose quando gli sviluppatori preferiscono che tu li lasci soli. Queste cose sono solo requisiti di gestione e, fatta eccezione per le revisioni del codice, non aumentano davvero le competenze dei dipendenti.
Tuttavia, vuoi aiutarli a crescere, il che è un grande attributo in un leader.
Le revisioni del codice sono certamente un primo passo, ti aiuteranno a vedere chi ha abilità meno che stellari e ha bisogno di miglioramenti per avere anche prestazioni satsifattive. Aiuteranno gli sviluppatori a vedere altri modi per fare le cose e comprendere parti diverse della base di codice rispetto a quelle su cui hanno lavorato personalmente. A mio avviso, le revisioni del codice vengono eseguite di persona in una sala conferenze con lo sviluppatore e il revisore (che dovrebbe essere un altro sviluppatore quando possibile non sempre il lead, rivedere il codice di altri è anche un'abilità che deve essere sviluppata) e tu come un moderatore. Dovresti tenere nota di ciò che deve essere cambiato per identificare le tendenze. Quello che stai veramente cercando non sono errori o modifiche (il codice di tutti può essere migliorato), ma un consistente fallimento nell'imparare dagli errori. Non dire al vertice aziendale che stai conservando queste note o ti ritroverai costretto a usarle come misurazioni nel processo di revisione delle prestazioni che francamente vanifica lo scopo. Se diversi sviluppatori commettono gli stessi errori, una sessione di allenamento o una voce wiki su come fare X potrebbero essere in ordine.
Passiamo ora al vizio in crescita per arrivare al livello minimo. In primo luogo, devi sapere quali set di abilità hanno gli sviluppatori e quali set di abilità sarebbe utile avere e quali potrebbero essere interessati a conoscere meglio. Devi parlare con loro, rivedere i loro curriculum e capire cosa mentono e non mi piace fare.
Non dare tutti gli incarichi interessanti solo ai più abili. Ciò non aiuta gli altri ad aggiornarsi su nuovi problemi e tecnologie. Non puoi passare dall'essere il ragazzo più giovane a ottenere solo i compiti più piccoli e meno importanti per il ragazzo senior a meno che qualcuno non ne abbia l'occasione e ti assegni un lavoro più difficile. Detto questo, i meno esperti potrebbero aver bisogno di essere assegnati per primi per accoppiare un programma con un senior per ottenere abilità più avanzate. Includere i giovani nelle revisioni del codice li esporrà anche a tecniche più avanzate.
Prima di tutto, dai loro la possibilità di capire da soli il problema. Ma a volte le persone sono bloccate e non sanno da dove cominciare (un'abilità che devi sviluppare anche in nuovi programmatori) o cosa fare per risolvere un problema.
Se dai loro un paio di giorni per cercare qualcosa e non hanno ancora una direzione su come faranno qualcosa, allora potresti dover intervenire con alcuni suggerimenti. Se sei un tecnico, puoi dare loro alcune idee su come risolvere il problema. In caso contrario, un incontro con diverse persone in cui fai brainstorming di idee può aiutare se la persona è bloccata. O chiedere a una persona più esperta di dare alcuni suggerimenti. Quello che non vuoi fare è togliere loro il problema e risolverlo da solo. Ma devi bilanciare il completamento del progetto con l'ego del programmatore e, a volte, devi inviarlo in una direzione specifica. Se ha una cattiva soluzione e deve essere risolto, la cosa peggiore che puoi fare è darla a qualcun altro a meno che tu non abbia intenzione di licenziare il programmatore.
Ho visto cattivi programmatori intrappolati, dove qualcun altro deve risolvere quasi tutto ciò che fanno. Gli altri programmatori si risentono e vogliono solo che la persona esca dalla propria vita. La coccole di un cattivo programmatore porta alla partenza dei bravi programmatori. Devi trovare la linea tra abilità di coddling e devloping. Se dai a qualcuno diverse possibilità e lui o lei non migliora mai, allora liberalo.
Per gli anziani che sono già competenti nelle loro attuali competenze, le cose sono più facili. Di solito devi solo dare loro l'opportunità di fare qualcosa di nuovo e loro saltano dentro e lo imparano. Assicurati solo che le interessanti opportunità si diffondano e non tutti vanno a Joe the Wonder Programmer che può aggiustare qualsiasi cosa. Vuoi finire con dieci Joes non solo uno.
Un altro modo per sviluppare le competenze consiste nell'avere una sessione di allenamento settimanale di 1 ora. Rendi ogni sviluppatore responsabile di un determinato argomento. Ciò li aiuterà a migliorare la comunicazione, a fare ricerche approfondite e offrirà a tutti i benefici della loro ricerca. Alcuni argomenti dovrebbero essere assegnati a persone che non hanno familiarità con l'argomento per costringerli a sviluppare alcune conoscenze in tal senso e alcuni dovrebbero essere assegnati a persone che conosci siano gli esperti locali su quell'argomento. Gli argomenti dovrebbero essere una combinazione di cose di cui le persone hanno bisogno per essere bravi nel prossimo futuro o in questo momento e una certa copertura delle nuove tecnologie imminenti che non si usano in questo momento, ma le persone sono interessate a sapere se potrebbero essere utili. Ma a tutti, incluso il più giovane, deve essere assegnato un argomento.
A seconda di come vengono fatturati i tempi dei tuoi sviluppatori (questo è più difficile in una situazione di fatturazione dei clienti), di solito vale la pena per gli sviluppatori di avere 4-8 ore alla settimana per lavorare su progetti personali. Saranno entusiasti di farlo. Le persone migliori vorranno lavorare lì e impareranno molto che diventeranno utili per il futuro. È difficile per i contatori di bean capire la necessità di questo, ma questa volta verrà ripagato molte volte in termini di soddisfazione dei dipendenti, nuove funzionalità o software che nessuno ha richiesto (o che aiuteranno ad automatizzare parte della fatica) e uno sviluppo più rapido a causa di nuove tecniche apprese. Alcuni sviluppatori useranno questa volta rigorosamente per progetti personali non correlati a ciò che fai (e va bene, continueranno ad acquisire competenze e felici per l'opportunità), ma molti altri lo useranno per risolvere problemi persistenti che, a causa della natura della gestione dei progetti, nessuno ha avuto il tempo di risolvere in anticipo. Quindi potresti ottenere refactoring a beneficio di tutti; alcune persone potrebbero scrivere test per migliorare la copertura dei test per facilitare il refactoring; altri potrebbero esplorare alcune nuove funzionalità che potrebbero rendere il tuo software più utile ai suoi clienti. In generale, se riesci a persuadere i segnalini fagiolo, non c'è modo di perdere concedendo loro questa libertà.
Devi imparare a bilanciare lasciando che le persone abbiano un po 'di sforzo per le loro capacità e mantenendo il progetto sulla buona strada. Meno esperto è lo sviluppatore, più qualcuno deve controllare i progressi, specialmente nelle fasi iniziali, quando è più facile cambiare direzione. Gli inesperti possono avere difficoltà e avere paura di parlare. Queste persone tendono ad andarsene poco prima del lancio e scopri che la loro parte del progetto non è da nessuna parte vicina alla conclusione. Prestare particolare attenzione a controllare i progressi di chiunque abbia cambiato lavoro frequentemente (a meno che non si tratti di un appaltatore poiché è la natura del contratto).
I più esperti possono in genere fidarsi di dirti quando hanno problemi a trovare la soluzione e hanno bisogno dell'assistenza di qualcuno con maggiori conoscenze nell'area o cercheranno quella persona e otterranno il trasferimento delle conoscenze. Quindi non hanno bisogno di essere monitorati da vicino nelle fasi iniziali dell'apprendimento di una nuova serie di competenze per un progetto. Troveranno un modo per consegnare il progetto. Coloro che hanno una comprovata esperienza nella consegna possono di solito essere lasciati soli, tranne per i rapporti di avanzamento minimi (di solito devi riferire anche alla tua direzione e quindi hanno bisogno di alcune informazioni).