Suggerimenti per attrarre, gestire e trattenere gli sviluppatori di software

Pubblicato: 2022-03-11

La gestione è tutta una questione di persone. Che si tratti di manager o dipendenti, entrambi stanno pensando a come raggiungere i propri obiettivi personali e professionali. La combinazione di questi obiettivi e dei tratti personali delle persone coinvolte dà forma a relazioni che, nel tempo, possono essere positive, produttive e appaganti, o talvolta semplicemente stressanti, esigenti e soggette a conflitti.

Naturalmente, in quest'ultimo caso, la qualità del prodotto diminuisce, aumenta il turnover del personale e il raggiungimento degli obiettivi diventa sempre più difficile. Pertanto, trovare un modo per stabilire relazioni gratificanti e motivanti tra manager e dipendenti è fondamentale quando si tratta di efficienza, produttività e autorealizzazione per entrambi.

Le relazioni positive sono il modo migliore per trattenere il talento del software.

Ciò è particolarmente vero nella gestione degli sviluppatori di software, a causa della complessità tecnica e della natura creativa del loro lavoro, compresso in tempi spesso ristretti per la produzione di risultati. Come in ogni relazione capo-dipendente, ci sono molti fattori coinvolti, come ad esempio:

  • Personalità
  • Obiettivi
  • Aspettative
  • Politiche
  • Cultura organizzativa
  • Dettagli tecnici del progetto

In questo articolo ci concentreremo sui principali aspetti gestionali, piuttosto che su quelli tecnici, che riteniamo debbano essere presi in considerazione da chiunque voglia avere successo nel riuscire a fidelizzare gli sviluppatori software.

Ma qui, “successo” significa non solo ottenere risultati e rispettare le politiche, le tempistiche e i budget aziendali, ma anche avere un team di sviluppo software motivato e produttivo che dà il meglio di sé e rimane a lungo in azienda.

Questo ci porta al nostro tema fondamentale: cosa fa funzionare gli sviluppatori di software? Con questo in mente, presenteremo alcuni modi per trattenere i dipendenti che abbiamo identificato in team di sviluppo software di successo.

Attrarre le persone giuste

Nello sviluppo del software, il talento che assumi farà la differenza tra successo e fallimento e apportare modifiche continue in un team è sempre costoso in termini di tempo e denaro. Pertanto, un buon processo di selezione è fondamentale per il successo del tuo progetto.

Inserimento di lavoro

I reclutatori tecnologici sanno che quando si tratta di assumere sviluppatori di software, tutto inizia con un annuncio di lavoro attentamente bilanciato. Il post deve essere motivante affinché gli sviluppatori giusti possano rispondervi: troppi requisiti o troppo specializzati possono essere scoraggianti, ma se sei troppo vago, la tua azienda può aspettarsi una marea di curriculum inutili.

Anche dichiarare stipendi dettagliati e pacchetti di vantaggi è un'arma a doppio taglio perché la concorrenza può utilizzare tali informazioni per sfruttare i propri piani di compensazione e gli sviluppatori possono provare a utilizzarle come base per la contrattazione durante le assunzioni. Naturalmente, poiché durante il processo di assunzione deve sempre esserci spazio per la negoziazione, suggeriamo che l'annuncio di lavoro sia meno specifico in termini di retribuzione, utilizzando intervalli anziché valori fissi.

Al contrario, l'annuncio di lavoro dovrebbe essere il più chiaro possibile nelle mansioni lavorative e nei requisiti, sia obbligatori che piacevoli da avere. Iniziare con un adattamento solido è il contesto migliore per il resto delle nostre strategie di fidelizzazione dei dipendenti.

Intervistare

A questo punto del processo, è una buona idea ottenere alcuni consigli sulla valutazione dei candidati e vedere quali insidie ​​possono essere evitate durante il processo di colloquio. Aggiungiamo inoltre alla guida delle risorse di cui sopra che chiedere in anticipo ai candidati alcuni riferimenti dai loro lavori precedenti è spesso un buon complemento ad altri modi per convalidare le loro abilità.

L'offerta di lavoro

L'assunzione si conclude con un'offerta di lavoro al candidato, quando l'azienda presenta un documento formale che riassume le caratteristiche della posizione (nome, grado, area, ecc.), il pacchetto retributivo (stipendio e benefici come salute, pensione o istruzione, ecc.) , data di inizio, orario, luogo di lavoro e requisiti per stabilire un contratto di lavoro, se il candidato accetta l'offerta.

Sebbene in questa fase tutto sia più o meno compiuto, il candidato potrebbe voler negoziare alcune condizioni e spetta all'azienda accettarle o contrattare. Dipende dalle pratiche dell'azienda.

Tuttavia, sicuramente, l'azienda non vorrà perdere un buon candidato per una questione di principi, quindi compromessi ragionevoli non danneggeranno nessuno. In questo caso è opportuno chiedere al candidato qualcosa in cambio di ogni concessione fatta, come ad esempio una data di inizio anticipata, un tempo minimo di permanenza in azienda, o qualsiasi requisito particolare che l'azienda possa avere.

Gestione dei team di sviluppo software per il successo

Una volta che uno sviluppatore di software inizia a lavorare in azienda, il suo manager inizia a capire chi è, come lavora e, soprattutto, i risultati che genera. Il mantenimento degli ingegneri del software diventa quindi una chiara priorità.

È qui che entrano in gioco le informazioni sulle personalità degli ingegneri del software: essi, in particolare quelli ad alte prestazioni, mostrano spesso alcuni tratti comuni. Indicheremo questi schemi man mano che procediamo, ma tieni presente che potrebbero non applicarsi allo stesso modo a tutti gli individui. La gestione dei progetti di sviluppo software riguarda tanto i modelli quanto le eccezioni.

Formazione

Poiché lo sviluppo del software è un lavoro tecnico, richiede una conoscenza molto precisa della struttura dell'azienda, degli obiettivi, delle procedure, delle politiche (inclusi i credi e delle pratiche commerciali) e degli standard (tecnici e non). Pertanto, meglio uno sviluppatore comprende l'azienda, migliore sarà il prodotto che realizzerà e meno tempo impiegherà a realizzarlo.

Questa formazione di base può essere gestita da documenti, corsi intranet online o presentazioni. Ma è una necessità, poiché darà chiarezza al nuovo dipendente.

Se devono essere introdotte nuove tecnologie, assicurati di fornire la formazione necessaria. Agli sviluppatori di software piace essere sfidati, ma potrebbero risentirsi di essere gettati in una nuova tecnologia senza prima averla adeguatamente imparata.

Internet è ricca di preziosi materiali didattici ed è spesso la prima risorsa a cui si rivolgono gli sviluppatori di software quando hanno bisogno di apprendere o riapprendere dettagli tecnici. Se vuoi trattenere gli sviluppatori di software, è essenziale promuovere una cultura di autoapprendimento e, se necessario, dare tempo di lavoro per questo. In questo modo, il team sarà aggiornato con tecnologie e metodi all'avanguardia, qualcosa che gli sviluppatori di software spesso apprezzano molto.

Risorse

Alcuni pensano che gli sviluppatori di software cerchino la tecnologia più avanzata per svolgere il proprio lavoro, con le migliori specifiche possibili disponibili nel settore. Pensiamo invece che dipenda dal lavoro da svolgere. Ad esempio, se un'azienda sviluppa giochi in prima persona, sarà necessario fornire agli sviluppatori una potenza di calcolo all'avanguardia. Ma se il compito è sviluppare servizi Web back-end per un sistema transazionale, un computer meno potente potrebbe essere sufficiente.

Ciò che è veramente importante è fornire allo sviluppatore tutti gli strumenti necessari per svolgere il proprio lavoro ed essere aperto ai suoi suggerimenti su nuovi strumenti. Logicamente, ogni nuovo strumento suggerito dallo sviluppatore dovrà essere approvato (magari anche testato prima) e concesso in licenza dall'azienda. Tuttavia, vale il costo: disporre di risorse adeguate è un fattore chiave nella motivazione e nei risultati degli sviluppatori. (Non puoi aspettarti di trattenere gli ingegneri del software se li imposti per fallire!)

Organizzazione

Gli sviluppatori di software amano lavorare in luoghi che incoraggiano e rispettano i loro sforzi creativi perché il loro lavoro consiste nel creare qualcosa dal nulla nonostante siano guidati dalla progettazione, dagli standard e dalle politiche IT. Pertanto, gli sviluppatori devono essere ragionevolmente sicuri di appartenere a un'unità in cui tutta la burocrazia e le limitazioni sono minime, purché rispettino le politiche dell'azienda e siano in linea con i suoi credi.

Ciò non significa che gli sviluppatori di software debbano avere privilegi speciali rispetto al resto dell'azienda, ma piuttosto che il loro manager li aiuta a superare o risolvere la burocrazia quando necessario. Un aspetto molto importante nel trattenere gli sviluppatori di software è che il loro capo è aperto alle loro esigenze personali e li aiuta quando necessario.

Anche la disposizione interna dell'unità di sviluppo gioca un ruolo chiave in questo caso. Spesso esiste un gruppo di test ed è dovere del responsabile dell'ingegneria del software mantenere fluido il lavoro di squadra tra sviluppatori e tester. Ciò può essere ottenuto semplicemente disponendo di metodologie e processi chiari. Gli sviluppatori tendono a lavorare molto bene con i tester se ci sono regole che devono essere seguite da entrambe le parti, mantenendo il conflitto basso o inesistente.

Comunicazione (Riunioni periodiche)

Se vuoi mantenere gli sviluppatori di software, è essenziale tenerli aggiornati. Tutti i membri di un team dovrebbero essere aggiornati periodicamente sugli obiettivi, le situazioni aziendali che li riguardano, le strategie, i cambiamenti nell'organizzazione e, ultimo ma non meno importante, i risultati del team.

Anche la condivisione di alcuni punti salienti da parte di un certo numero di membri del team sarà utile per promuovere la coesione e il lavoro di squadra del team. Normalmente, queste riunioni del team, di due ore al massimo, dovrebbero essere programmate regolarmente (forse settimanalmente) così come in occasioni speciali come la fase finale di un progetto, una situazione critica, ecc.

Oltre alla comunicazione con il team, il manager deve stabilire un modo per rimanere aggiornato sulla situazione di ogni membro, sia essa lavorativa, tecnica o personale.

  • Per lavoro si intendono tutti i possibili aspetti del rapporto del dipendente con l'azienda.
  • Si verificano situazioni tecniche quando uno sviluppatore è bloccato con un problema e, per qualsiasi motivo, non cerca aiuto.
  • Se lo sviluppatore li condivide, le situazioni personali che stanno vivendo possono influenzare il loro lavoro e le loro relazioni con i colleghi.

Normalmente, un incontro settimanale di 30 minuti con ogni membro del team consentirà a un manager di identificare queste situazioni e fornire aiuto, prevenendo così potenziali crisi del personale e migliorando il morale del membro del team all'interno dell'azienda.

Tanto per essere chiari, non stiamo parlando di istituire un'unità di sviluppo orientata all'incontro, quindi è necessaria una rigida disciplina dell'incontro (puntualità, rispetto, partecipazione, durata). Inoltre, questa disciplina dimostra agli sviluppatori che lavorano per un'organizzazione molto professionale, cosa che normalmente apprezzano.

Assegnazione di obiettivi e follow-up

Non ha senso assegnare obiettivi generali annuali o linee guida di valutazione simili.

Questo è un fattore chiaro quando si ha a che fare con gli sviluppatori di software: qualunque sia il loro ruolo (raccolta requisiti, architettura, design, programmazione, test, ecc.), gli obiettivi devono essere forniti loro con la massima chiarezza possibile, quindi non ha senso nell'assegnazione di obiettivi generali annuali o linee guida di valutazione simili. Poiché si suppone che gli sviluppatori lavorino nei progetti, cioè con uno scopo e una tempistica definiti, il modo migliore per assegnare gli obiettivi è all'inizio del progetto e includere il modo in cui verranno valutati i progressi e, se applicabile, come verranno riconosciuti.

Fortunatamente, al giorno d'oggi, esistono metodologie il cui scopo è generare risultati il ​​più rapidamente possibile, come Agile e Scrum, che semplificano il follow-up e il controllo del progetto. A volte questo può anche svolgere un ruolo significativo nel trattenere il talento del software: molti sviluppatori amano queste metodologie perché possono fornire risultati rapidamente, dando loro un senso di realizzazione su base regolare.

Inoltre, gli sviluppatori spesso preferiscono metodologie più leggere. Sanno che quelli di fascia alta come Rational, in cui il prodotto finale viene consegnato dopo un lungo progetto di ingegneria dei requisiti, progettazione, sviluppo, test e implementazione, sono rischiosi e possono essere dolorosi da seguire.

Gestione dei conflitti

Questo vale tanto per i team di sviluppo software quanto per qualsiasi altro tipo: un manager di ingegneria del software deve affrontare i conflitti in modo rapido ed efficace, oppure può perdere il controllo e distruggere il morale, il lavoro di squadra e l'efficacia dell'intera unità.

Supponendo che gli sviluppatori in conflitto siano professionali e ben intenzionati, un incontro del manager con le persone coinvolte per avviare un dialogo chiaro con una pronta risoluzione in seguito dovrebbe essere sufficiente per consentire al team di andare avanti. Inoltre, a volte è necessario dare loro un chiaro avvertimento che il conflitto a livello personale, se mai dovesse arrivare, non sarà accettato.

In ogni caso, al termine di questa riconciliazione, è molto importante che entrambe le parti sentano che la soluzione è giusta, anche se a una di loro non piace. Il conflitto a volte fa parte della vita, ma mantenere il talento del software significa trattare tutti con dignità ogni volta che si verificano situazioni del genere.

Motivazione

Sebbene abbiamo toccato molti fattori che influenzano la motivazione di uno sviluppatore, c'è un altro aspetto chiave. Questo non è emotivo, né tecnico. Stiamo parlando del tasso di compensazione per il loro lavoro.

Nonostante tendano ad essere di natura idealista, agli sviluppatori di software spesso piacciono le cose buone del mondo materiale. È sempre meglio per l'azienda assicurarsi che gli stipendi e i piani di compensazione siano allineati con il mercato del lavoro (gli studi di settore sono facili da trovare) e forse anche un po' più alti per le loro posizioni.

Inoltre, la maggior parte degli sviluppatori di software non è indifferente a vantaggi e premi, inclusi corsi ed eventi tecnologici in cui possono apprendere tecniche utili per arricchire il proprio lavoro.

Quando si tratta di trattenere gli sviluppatori di software, è importante supportarne la crescita all'interno dell'azienda, indipendentemente dalla sua direzione specifica. Quando gli ingegneri del software non mostrano molto desiderio di passare a posizioni di leadership o di gestione, apprezzano invece i progressi nell'arena tecnica. Ciò include certificazioni più senior e programmi accademici formali come master o addirittura dottorati di ricerca. La conoscenza è un driver molto forte per loro.

Tuttavia, quando aspirano a raggiungere posizioni di leadership, è consigliabile fare un'analisi approfondita della personalità e della storia del candidato in azienda. Questo può avvenire con l'aiuto del dipartimento Risorse umane o di altre unità aziendali, poiché una buona gestione richiede un insieme di competenze completamente diverso oltre la competenza tecnica.

Come mantenere il talento del software: osservazioni finali

Potresti avere le migliori intenzioni e seguire tutti i suggerimenti di cui sopra, ma non riesci ancora a trattenere gli sviluppatori di software il 100 percento delle volte, a volte i fattori esterni hanno semplicemente più influenza. Ma pensiamo che il ricambio del personale possa essere salutare e ricco di opportunità, a patto che:

  1. Non è frequente. Se lo fosse, questo sarebbe un sintomo di qualcosa che non va a livello organizzativo.
  2. Si verifica solo con le risorse più preziose. In questo caso, potrebbe significare che stanno usando la tua azienda come trampolino, ovvero sono con te semplicemente per fare esperienza prima di trasferirsi in altre aziende.

Le strategie di fidelizzazione dei dipendenti dovrebbero essere sancite nella politica aziendale, non solo una reazione quando una persona di valore vuole dimettersi. La ritenzione reazionaria è molto costosa e viziata: la persona può accettare di restare, ma pensare tra sé e sé: "Ho lavorato qui per X anni solo per ricevere il doppio dello stipendio al momento della partenza - hanno appena ammesso che non mi stavano pagando abbastanza!"

Quale sarà il prossimo passo di questa persona? Potrebbero cercare un altro lavoro, ma ora con il doppio dello stipendio come minimo. A questo punto, è probabile che non valga la pena cercare di trattenere gli ingegneri del software a tutti i costi. A meno che la persona non sia assolutamente fondamentale (e insostituibile) per l'azienda, potrebbe essere meglio negoziare un periodo di preavviso e trovare subito un sostituto.

È un compito non deterministico

Attrarre e trattenere gli sviluppatori di software è un compito complesso e non deterministico, come per ogni ruolo nel settore tecnologico. Ci sono molte aziende in cerca di validi sviluppatori di software là fuori ma, per fortuna, l'obiettivo qui non è vincere contro queste aziende ma piuttosto attirare brave persone che possiamo riuscire a mantenere nella nostra azienda.

I processi di selezione possono richiedere molto tempo e fatica. Se ti avvicini a questo in fretta, è probabile che finirai con le persone sbagliate e chi vuole trattenere gli ingegneri del software che sono tossici per il loro team? Prenditi invece del tempo per farlo bene.