Crescita personaleDevelopingIn primo piano

La cosa più importante che ho imparato

Sin da piccolo sono stato uno smanettone. Ho sempre amato tutto ciò che riusciva a rendermi più creativo per risolvere problemi. Nel 2014, a 13 anni circa ho scritto la mia prima riga di codice. Python2. Mi ricordo perfettamente quel pomeriggio. “MAMMMAAAAAAA CORRRIIII!!” Queste sono state le parole che ho urlato da camera mia la prima volta. Quelle poche righe di codice ti facevano inserire il tuo nome, un tuo attributo e poi te li stampavano in una frase.

Lo so, non è proprio la cosa più eccitante del mondo, però per me all’epoca era una vera conquista! Due settimane dopo avevo già imparato le basi del linguaggio e stavo iniziando a risolvere problemi sempre più complessi. Poi è venuta l’ora di passare di livello, passare al C e iniziare a bestemmiare.

Perchè ti ho fatto tutto questo preambolo? Sono circa 7 anni che scrivo codice e vorrei provare a trasmetterti la lezione più importante che ho imparato. Può DAVVERO cambiarti la vita.

Ognuno di noi è pagato nel proprio lavoro per risolvere problemi (dai più banali ai più complessi). Anche in casa quando facciamo le faccende domestiche risolviamo problemi. Nella vita noi risoviamo costantemente problemi, nostri o altrui, per raggiungere un risultato.

Molti di noi sono bravissimi in quello che fanno e all’interno del proprio dominio applicativo sono davvero fantastici. Se proviamo a dare però un compito diverso a queste persone in moltissimi casi si troveranno spaesati.

Stressed young businessman overworking

Ecco il SUPERPOTERE dei programmatori. Noi impariamo un METODO per risolvere i problemi! E il bello di questo metodo è che possiamo applicarlo in ogni campo della nostra vita.

Molto spesso mi capita di avere a che fare con molte situazioni al di fuori del contesto dello sviluppo software ed è entusiasmante quando ti viene fornito un problema in molti campi e con l’osservazione e un metodo riesci a risolverli, quasi per magia! (un po’ come ci racconta Anthony Robbins nei suoi libri)

Come si chiama questa formula magica per risolvere tutto? SCOMPOSIZIONE!

Ecco cosa siamo abituati a fare! Più o meno la giornata di un programmatore è così: “Senti, abbiamo questo problema, hai questi requisiti da seguire, risolvilo”. Se mi dessero come compito “Realizza un ecommerce” probabilmente esploderei. Vediamo però come risolvere velocemente il problema con il potere della scomposizione.

Prima di ciò però dobbiamo fare una cosa, dobbiamo apprendere quante più info possibili su ciò che dobbiamo fare! Non siamo tuttologi, ma abbiamo i mezzi più sofisticati al mondo per cercare, un buon 99% della conoscenza è disponibile al pubblico!

Torniamo al nostro esempio: andiamo su tutti gli ecommerce che conosciamo ed analizziamoli, capiamo come sono formati, qual è il flusso che segue, quali sono i punti in comune e quali sono le differenze tra di loro. Studiamo le interfacce, capiamo gli automatismi e impariamo il più possibile.

Fatto? Perfetto, ora iniziamo a prendere foglio e penna e iniziamo a realizzare una mappa. Partiamo dall’argomento principale (realizza un ecommerce) e iniziamo a scomporre le funzionalità che deve avere. Terminato ciò probabilmente avremo un punto centrale con tante frecce uscenti che si dirigono sulle varie funzioni. Ma attenzione, è quì che arriva il bello!

Molto probabilmente queste nuove funzioni potranno essere scomposte in funzioni ancora più piccole e semplici e così via. Quando possiamo smettere di analizzare le singole funzioni? Quando siamo arrivati ad un livello di dettaglio tale che possiamo dire “Mmm ok, questa cosa la faccio in una mezz’ora, quest’altra la so fare. Su questa cosa ci devo lavorare un po’ perchè è un po’ lunga, ma posso farla semplicemente”.

Questo approccio al problema si dice TOP DOWN.

Dopo aver terminato di scompattare il problema in problemi sempre più piccoli lo risolviamo in maniera BOTTOM UP. Prendiamo quindi tutte le funzionalità che dobbiamo sviluppare e iniziamo a capire quali “dipendenze” hanno dalle altre funzioni. Le prime cose che dobbiamo fare sono quelle che possono essere portate a termine che non hanno dipendenze al loro interno.

Questo approccio, utilizzabile per la risoluzione di qualsiasi problema (informatico e non) ci consente di affrontare problemi più piccoli e più semplici da risolvere. Una volta risolti quelli più piccoli avremo già a disposizione parti della soluzione dei problemi più grandi e così via fino ad arrivare a risolvere magicamente anche il problema principale.

Questo tipo di approccio dovrebbe essere insegnato ovunque e mostrato con esempi pratici.

Vuoi fare un esercizio mentale per allenarti? Prendi un fogio e scrivi come fai il caffè. Scrivi quindi ogni passo per fare il caffè. Noterai che se ti impegni, ogni passo può essere scomposto in altri passi sempre più semplici e completi. Se sbagli qualcosa potresti:

  1. Prendere fuoco
  2. Allagare la casa
  3. Far scoppiare la macchinetta

Ti ho messo un po’ di paura? Ecco, noi tutti i giorni eseguiamo ALGORITMI senza accorgercene. Anche in questo momento che stai leggendo, se ci pensi stai facendo una serie di azioni, che possono essere scomposte in azioni sempre più piccole e semplici. Queste, alla fine consentono al tuo cervello (che ricordiamolo, non è null’altro che una serie di cellule che si sparano impulsi elettrochimici a vicenda) di farti comprendere ciò che stai leggendo.

Meraviglioso, no? Spero di averti trasmesso un po’ del mio amore per questa materia, se hai qualche esempio che ti piacerebbe esprimere scrivilo pure quì nei commenti, o contattami in privato per una chiacchierata 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *