Una delle skill più apprezzate dagli esperti HR in tutto il mondo è la capacità di problem solving. Questa espressione inglese può essere tradotta semplicemente come “risoluzione di un problema” ma la definizione reale è “attività del pensiero che un organismo mette in atto per raggiungere una condizione desiderata a partire da una condizione data”.
Nel settore della consulenza IT, possedere l’arte del problem solving è fondamentale. Per un programmatore non c’è nulla di più importante di accorgersi della presenza di un problema, individuarlo e poi trovare la soluzione. La prontezza mentale viene prima della capacità tecnica.
Ma la dote del problem solving, soprattutto in un programmatore, è innata oppure si può imparare? Sicuramente qualcuno è più portato a svilupparla, ma ogni persona può impegnarsi ad allenarla.
Ecco i 3 fondamenti che ogni problem solver (o aspirante tale) dovrebbe conoscere:
- Procedere per step
Un problema complesso difficilmente può essere risolto nella sua interezza nell’immediato: un professionista dotato di problem solving individua prima l’origine del problema e poi gli step necessari per arrivare alla sua risoluzione. Molto utile è stilare una lista o un diagramma di task o sub-goal ordinata, con la descrizione di ciò che serve per raggiungere il singolo obiettivo e le eventuali dipendenze temporali tra i task. - Ottimizzare i tempi
Una volta individuato il problema e i passaggi per risolverlo, è utile valutare se ci sono dei task, di semplice risoluzione e indipendenti tra loro, che possono essere completati contemporaneamente. In questo modo il tempo risparmiato può essere utilizzato per risolvere operazioni più impegnative. Successivamente si riordina la lista dei task. - Trovare soluzioni riutilizzabili
Un errore che spesso si commette quando ci si trova davanti ad un problema è quello di trovare una soluzione specifica per esso. La strategia migliore sarebbe invece quella di provare a categorizzare l’obiettivo e individuare la “famiglia” di problemi alla quale appartiene, così da trovare una soluzione generica adattabile a tutti i problemi dello stesso tipo.