Durante lo svolgimento delle proprie mansioni, ogni persona utilizza le proprie competenze e capacità per far fronte ai propri incarichi. Le competenze possono essere distinte in due categorie:
- Competenze tecniche, hard skills, in inglese. Riguardano le nostre conoscenze ed abilità in un preciso ambito. Come saper programmare in Java o saper utilizzare un software. Questo tipo di competenze sono facilmente misurabili poiché hanno un riscontro fortemente pratico.
- Competenze trasversali, soft skills. Al contrario sono abilità non facilmente misurabili perché hanno a che fare con l’attitudine della persona. Definiscono infatti il modo in cui l’individuo si approccia ai problemi, ai colleghi, alla gestione degli incarichi e così via. Sono spendibili in contesti ed ambiti diversi.
Entrambi i tipi di abilità impattano sul lavoro svolto ed il rapporto che abbiamo con esso.
Sarebbe errato pensare che per essere un buon sviluppatore basti conoscere uno o più linguaggi di programmazione, design pattern, strutture dati e così via. Le abilità trasversali incidono significativamente nella riuscita dei progetti.
Prima di addentrarci su quali abilità trasversali dovrebbe avere uno sviluppatore per lavorare in modo efficace. Vediamo brevemente perché le soft skills sono importanti per il lavoro dello sviluppatore software.
Perché le soft skills sono importanti per gli sviluppatori?
In questo contesto non fa differenza il settore di appartenenza. Tutti gli sviluppatori, a prescindere dal proprio ambito (frontend, backend, mobile, web ecc…), hanno degli elementi in comune durante lo svolgimento del proprio lavoro:
- Lavorano in team
- A volte si interfacciano direttamente con i clienti
- Devono risolvere problemi di varia natura
- Hanno delle scadenze da rispettare
- A volte devono gestire lo stress generato da criticità o scadenze
- Il settore è in continua e rapida evoluzione
Le soft skills servono allo sviluppatore per fa fronte a problemi comuni, tipici del lavoro che svolge. Quali sono le abilità trasversali più richieste nel mondo del lavoro per uno sviluppatore?
Come vedrai, sono abilità molto spesso correlate fra loro.
Quali Sono Le Soft Skills Che Un Developer Dovrebbe Avere?
- Problem solving
- Comunicazione
- Focus
- Time Management
- Pazienza
- Curiosità
- Lifelong learning
- Work-Life Balance
Vediamole nel dettaglio con degli esempi pratici.
Problem Solving
Lo sviluppatore dovrebbe avere capacità di problem solving perché la programmazione è un processo che richiede la risoluzione di problemi complessi.
Lo sviluppatore deve avere la capacità di analizzare a fondo un problema, valutarne tutti gli aspetti e casistiche, anche quelle meno probabili e pessimistiche (il famigerato
).Quali soluzioni coprono tutti i casi? Quali sono più efficaci e meno dispendiose in termini di tempo? Rischiano di portare debito tecnico? Occorre quindi valutare le alternative.
A volte pensare in modo creativo e fuori dagli schemi può portare a soluzioni efficaci mai considerate prima.
Questa è una delle capacità chiave per il successo del progetto e del successo professionale dello sviluppatore.
Fidati di me, sono uno sviluppatore e risolvo problemi.
Comunicazione
Anche questa è una capacità fondamentale. Ma è spesso sottovalutata.
Probabilmente perché persiste uno stereotipo errato che dipinge lo sviluppatore come una persona che lavora sola, davanti allo schermo non rapportandosi con nessuno.
Nella sua vita privata, lo sviluppatore è libero di non avere vita sociale se è ciò che desidera. Ma a lavoro lo sviluppatore in genere lavora in team.
Difficilmente i progetti prevedono il lavoro di una singola persona, per cui saper interfacciarsi con gli altri componenti del team è fondamentale per la riuscita del progetto. Perché lo sviluppo software è un vero e proprio lavoro di squadra.
Deve essere in grado di comunicare informazioni importanti come requisiti o problematiche in modo efficace. Oltre che costruire un rapporto positivo all’interno del gruppo. Fatto di collaborazione, fiducia e supporto.
Focus
Cal Newport, nel suo libro “Deep Work – Concentrati al massimo” afferma che la concentrazione diventerà un’abilità fondamentale per la propria carriera nell’imminente futuro. Potremmo dire che in realtà lo è già attualmente, visto che ogni giorno abbiamo innumerevoli fonti di distrazione. La concentrazione è diventata una capacità preziosa ancor di più che in passato.
La concentrazione permette di portare a termine le attività in minor tempo e con precisione.
Per lo sviluppatore è fondamentale visto che le disattenzioni possono costare ore di debug e bug-fixing successivi.
Time Management
Anche questa è una capacità che si potrebbe erroneamente sottovalutare, perché nell’immaginario comune è demandata al project manager o ad altre figure professionali.
Invece lo sviluppatore è chi in prima persona deve gestire il proprio tempo efficacemente e conoscere le proprie tempistiche.
Se sei uno sviluppatore, ti sarà capitato di dover fare delle stime. Le stime sono delle previsioni su quanto tempo è necessario per sviluppare una determinata funzionalità o fixare un comportamento inatteso.
L’abilità di fare delle stime accurate si apprende soprattutto sbagliando. Infatti per ridurre l’errore nella stima serve molta pratica e consapevolezza.
Quanto tempo ho impiegato in passato per sviluppare una funzionalità simile? Cosa è andato storto che ha allungato i tempi di sviluppo? Cosa posso fare per ottimizzare la mia efficacia e ridurre le perdite di tempo?
Sono tutte domande che potrebbero aiutare la propria consapevolezza nella propria gestione del tempo.
Pazienza
La calma è la virtù dei forti. Ma anche degli sviluppatori che si pongono obiettivi a lungo termine.
Uno sviluppatore che vuole avere successo deve essere paziente per diversi motivi:
- Debugging: La risoluzione dei problemi nella programmazione può essere frustrante e richiedere molto tempo. Gli sviluppatori devono essere pazienti e perseveranti nella risoluzione dei problemi, anche se questo significa passare ore a risolvere un singolo bug.
- Progetti e problemi complessi: Molti progetti di sviluppo software sono complessi e richiedono una pianificazione e una realizzazione accurate. (Vedi soft skills: problem solving, più in alto)
- Lavoro di squadra: La programmazione spesso implica il lavoro in team con altri sviluppatori, designer, project manager e altri professionisti. Gli sviluppatori devono essere in grado di lavorare con altre persone con stili di lavoro e personalità diverse. (Vedi soft skills: comunicazione, più in alto)
- Adattabilità: La tecnologia e le richieste del mercato cambiano continuamente. Gli sviluppatori devono essere disposti a imparare e adattarsi a nuove tecnologie e sfide. (Vedi soft skills: lifelong learning , più in basso)
Curiosità
La curiosità potrebbe rappresentare un vantaggio per lo sviluppatore.
Chi è curioso, è spesso attratto dalle novità e si pone domande per comprendere meglio gli strumenti che utilizza. La curiosità spinge la ricerca di risposte e la voglia di sperimentazione.
Nello sviluppo software, non solo le tecnologie ed i linguaggi si evolvono rapidamente. Ma spesso si devono integrare a loro volta all’interno di un’ecosistema digitale che non è statico ma è anch’esso dinamico ed in rapida evoluzione. Ciò significa che essere aperti alle novità e non fermarsi superficialmente, aiuta a comprendere non solo la propria “cassetta degli attrezzi” ma tutto ciò che ruota intorno. Queste conoscenze potrebbero rappresentare un vantaggio.
Un esempio pratico potrebbe essere uno sviluppatore mobile che valuta l’utilizzo di nuovi framework che potrebbero facilitare il lavoro, oppure che si incuriosisce agli ambiti affini al suo settore (UI & UX design, AR ecc…).
Lifelong Learning
Come dicevamo, il mondo dello sviluppo software si muove velocemente perché si muove di pari passo all’evoluzione della tecnologia e della società.
Lo sviluppatore che vuole mantenersi competitivo (e competente) nel proprio lavoro, dovrà dedicare sempre una parte del suo tempo alla formazione. Si tratta di un vero e proprio investimento su sé stessi.
In pratica, dovrebbe avere un approccio di formazione continua per non rimanere indietro con le competenze richieste e necessarie. Chi si ferma è perduto!
Work-life Balance
Come abbiamo visto, essere degli sviluppatori implica discrete risorse ed energie mentali di varia natura.
Non bisogna solo avere delle forti competenze nel proprio ambito ma bisogna essere abili nella gestione del tempo, ritagliarsi dei momenti di formazione e far fronte alla risoluzione di problemi anche complessi. Capacità che non sono immediate da acquisire e questo potrebbe comportare a maggior ragione frustrazione e stress.
Sapersi ritagliare dei momenti di svago o relax, è fondamentale per evitare il burnout.
Ti consiglio i miei articoli sul benessere digitale ed in particolare questo con 3 consigli per gestire meglio il confine tra vita lavoro e vita privata.