L’importanza di realizzare progettini senza senso

L’importanza di realizzare progettini senza senso

Marco Bellezza Di Marco Bellezza


progetto programmare professionalità

La programmazione è una cosa seria. Le macchine sono stupide e hanno bisogno di molti dettagli e di molto rigore, anche perché molto spesso le istruzioni che impartiamo loro sono fumose e contrastanti. 

Non riesco ad immaginare una premessa migliore per introdurre la seguente affermazione: 

Qualunque programmatore dovrebbe spendere parte del suo tempo lavorando a progetti stupidi e senza significato. 

Il solito sensazionalista... non basta dire che bisogna esercitarsi? 
Assolutamente no! Non è di esercizio e nemmeno di studio che stiamo parlando. 

Il punto qui è sul lavoro, siamo chiamati a rispettare una serie di vincoli e obiettivi: 

  • Dobbiamo essere seri e professionali; 
  • Dobbiamo rispettare le scadenze; 
  • Dobbiamo essere produttivi; 
  • Dobbiamo soddisfare il cliente; 
  • Dobbiamo produrre software di qualità. 

Il tutto mentre lavoriamo con le macchine, che a loro volta sono stupide ed esigenti di rigore formale e hanno bisogno che gli si spieghi tutto ma proprio tutto tutto, altrimenti quelle non ci arrivano. 

Ok, bene, quindi questo punto quale sarebbe? 
Il punto è che abbiamo bisogno di imparare a programmare in modo non professionale per farlo bene anche quando c'è da essere professionali. 

Vale a dire che ci sono qualità che si possono sviluppare solo in assenza dei suddetti vincoli, e anzi in presenza di alcuni stimoli che in qualche modo contraddicono tali vincoli. 

Le qualità che sviluppiamo giocando 

Iniziamo col notare che il gioco è la prima e più efficace forma di apprendimento. La usano i bambini prima ancora di avere un'idea di cosa significhi imparare. Funziona bene perché (tra le varie): 

  • È gratificante; 
  • È guidato dalla curiosità; 
  • Non si fa per imposizione esterna (tranne in qualche caso). 

Un elemento importante del gioco, che nello studio o nel lavoro spesso manca, è la sfida. Quando lavoriamo, raramente riusciamo a porci obiettivi fittizi con l'unico scopo di superare noi stessi; per lo più, gli obiettivi che abbiamo servono a soddisfare qualcun altro e la produttività tende a mangiarsi quella componente esplorativa che ci consente di imparare cose nuove rapidamente e in modo gratificante. 

In che senso "senza senso" 

Dunque la mia provocazione nemmeno troppo provocatoria ma invero molto seria è: perché non porsi obiettivi fittizi, meglio se insensati, in uno spazio non lavorativo, oppure lavorativo ma non orientato alla produttività? 
In questo modo si ha l'opportunità di imparare cose nuove, magari estrapolando delle sfide dal contesto di un progetto serio, riportandole in un contesto un po' più ludico. E veniamo all'importanza dell'insensatezza

In modo più o meno consapevole, tutti esercitiamo un senso critico su ciò che stiamo facendo: ci chiediamo se sia utile, se una volta tagliato il traguardo avremo fatto un buon lavoro, se il frutto del nostro lavoro soddisferà il nostro committente, etc...

Lo scopo dell'insensatezza è proprio quello di spegnere il senso critico quando stiamo imparando. È importante, perché a tutti gli effetti quello che stiamo facendo è deliberatamente stupido e inutile, ed è così che dobbiamo desiderare che sia. Quando giochiamo, non badiamo alla immane quantità di ore spese a fare nulla di utile per nessuno; quando facciamo i nostri progettini senza senso, dev'essere la stessa cosa; i benefici sono innumerevoli. 

I benefici della non professionalità 

Non voglio fare un discorso ideologico tipo "siamo tutti schiavi di un sistema che ci spreme per il beneficio di qualcun altro", ma, anche senza indinniarsi (con due n), dobbiamo un pochino essere consapevoli che le cose stanno esattamente così. Non siamo liberi, non nel senso che viviamo in una dittatura o cose del genere, non siamo liberi perché abbiamo tutti un affitto o un mutuo da pagare e una pancia da riempire, e questo fa sì che non possiamo passare la nostra vita a fare solo quello che vogliamo. 

Prendere parte del nostro lavoro in modo deliberatamente non professionale non è dunque solo un atto di ribellione, ma un modo nobilissimo per unire l'utile al dilettevole e innamorarsi della professione che mette il pane sulla nostra tavola. 

Voglio fare un paio di esempi dalla mia esperienza personale: 

Il carta-forbice-sasso più brutto della storia 

Con due amici ho realizzato un giochino carta-forbice-sasso in real-time a stanze (da due). Solo per riferimento, sta qui. L'unico scopo di questo progetto era dare un senso al nome del canale Twitch su cui abbiamo trasmesso tutte le sessioni di coding: carta codice sasso
Sembra strano ma non lo è: nel corso di questo "progetto", ho imparato un sacco di cose. Primo, non essendo un progetto lavorativo l'ho realizzato con due persone che non sono miei colleghi (a dire il vero uno dei due è un ex collega); secondo ci siamo posti una sorta di vincolo fittizio molto importante, dal quale sono scaturite molte occasioni per imparare. 

Il vincolo era: faremo questo progetto comportandoci all'opposto di come faremmo in ufficio. Avete capito bene: 

  • Niente puntualità; 
  • Sì a tutta la distrazione possibile; 
  • Design più che brutale, direi deliberatamente brutto (anche se poi alla fine è venuto carino). 

Divagare è uno strumento potentissimo, farlo in compagnia è anche super divertente. 

La calcolatrice in React e Angular 

Prima di questo progetto ero solito dire, quando si parlava di stime, frasi di questo tipo: quanto valuteresti la complessità di questa cosa da 1 a 10, dove 1 è la calcolatrice di Windows e 10 è Windows? Probabilmente con due estremi così distanti il 90% dei progetti a cui ho lavorato si aggira intorno al 4. 
Fatta questa premessa, procediamo col racconto. 

Ho un amico che sta imparando a programmare e sta imparando React; siccome è da un po' che volevo utilizzare questo framework e volevo fare un'esperienza più completa, ho provato a realizzare con lui una calcolatrice semplice, prendendo come "specifica" il comportamento della calcolatrice base di Windows. Ovviamente questo progetto è inutile, e infatti non la userò mai. Ma che importa? Di fatto mi sono divertito e ho guadagnato punti esperienza. 

Non mi sono limitato a questo. Una volta finita la calcolatrice, ho chiesto a degli amici che conoscono e usano React, di rivedere il mio progetto. Ho avuto modo di capire come sono abituati a ragionare lavorando con questo framework, e a mia volta ho rivisto le loro revisioni, iniziando in qualche modo a costruirmi una confidenza con lo strumento. 
Per dimostrare a me stesso questa cosa, ho rifatto la calcolatrice in un progetto Angular, che oltre ad essere la principale alternativa a React, è anche un framework che sono molto abituato ad utilizzare. Inevitabilmente, anche riadattare il codice già scritto ad un framework diverso ha rappresentato a sua volta una piccola sfida. 

I due repository sono disponibili qui e qui

Da questo progettino ho tratto un altro beneficio inaspettato. Mi sono reso conto che una calcolatrice non è un software così banale; non userò più la calcolatrice come riferimento per l'1, nella scala della complessità. È un fatto abbastanza interessante, anche perché se mi avessero pagato per realizzarla avrei senz'altro bucato le scadenze e ci avrei "smenato" in termini di costo orario. 

Beneficio bonus 

Prima si è parlato di confidenza. Ovviamente, quella può essere costruita anche solo sul lavoro, starai pensando. E invece no. La confidenza non si costruisce sul lavoro. La confidenza si costruisce giocando

L'espressione "un gioco da ragazzi" non è casuale. La vera padronanza di una materia la si acquisisce solo con il gioco. Quando si gioca ci si misura solo con sé stessi, questo passaggio è fondamentale: è il superare sé stessi a costruire l'autostima, non il soddisfare un cliente, non i complimenti del capo, non un aumento in busta paga. Quelle sono tutte gratificazioni bellissime e importanti, che però possono esserci negate o sottratte dall'esterno. La storia dei nostri progressi, registrata attraverso tutti i progetti insensati che abbiamo realizzato, dice che siamo così capaci da poterci permettere di prendere la programmazione poco seriamente. 

E quella storia è lì, in vetrina, disponibile per tutti. Non serve nemmeno che ce ne vantiamo. È una prova vivente che ci siamo divertiti, che abbiamo costruito la nostra esperienza con passione e creatività. La professionalità in questo scenario rappresenta un set di competenze a parte, altrettanto importanti ma completamente diverse. Non saranno la puntualità o una mail bella diplomatica a renderci bravi programmatori. 

Lo yin e lo yang 

Nella filosofia cinese, la dicotomia yin/yang rappresenta un po' tutto ciò che è polarizzato; in particolare, il polo yin rappresenta ciò che è passivo (notte, buio, freddo, luna) e lo yang ciò che è attivo (giorno, luce, caldo, sole). Evidentemente questa polarità nasce dall'evidenza del ciclo giorno/notte e dell'alternarsi delle stagioni, ma possiamo applicarlo anche al discorso che stiamo trattando. 

In effetti, questo schema è applicabile anche sul lavoro e può aiutare a distinguere tra: 

  • Attività o momenti yang: tutto ciò che ha come obiettivo il profitto (produttività, attività commerciale, velocità d'esecuzione e qualità);
  • Attività o momenti yin: tutto ciò che ha come obiettivo tutto il resto (gioco, esplorazione, confronto, ricerca e sviluppo).

La cosa bella è che, così come nella filosofia cinese, ogni polo contiene il seme del polo opposto proprio nel punto di sua massima espressione, anche nella vita lavorativa vediamo che: 

  • nei momenti di massima produttività, andiamo accumulando dubbi, questioni, idee e spunti; 
  • nei momenti di minima produttività accumuliamo la già citata confidenza, ma anche conoscenza, nuovi strumenti e soluzioni, etc...  

Un tempo non sarebbe stato molto facile rivolgersi al proprio capo e proporre una simile classificazione delle attività lavorative. Ultimamente e soprattutto nell'ambito tecnologico, molti bigottismi di questo tipo sono stati abbattuti e possiamo assistere alla presenza di vere e proprie sale giochi all'interno degli spazi di lavoro: è proprio in aziende in cui si dà importanza a queste cose che nascono i professionisti più appassionati. 

Altrove, per quanto competenti e professionali, si trovano solo semplici impiegati. 

Impara a programmare in 3 mesi con il Corso di Coding Hackademy su Laravel PHP

Diventa Sviluppatore web in 3 mesi

Scopri il coding bootcamp Hackademy

Programma Completo