Le Dieci Regole di un Programmatore Zen

In una mattina di pioggia mi sono ritrovato seduto alla mia scrivania a pensare sull'efficienza del lavoro. Prima di iniziare a lavorare come freelance, ho avuto dei giorni in cui giorni in cui lavoravo molto, ma non ero mai soddisfatto del risultato. Ho iniziato a praticare lo Zen nel 2006. Quello che mi è venuto in mente dopo un bel po' di tempo era che i vecchi maestri zen sapevano già centinaia di anni fa, come dovrebbero lavorare i programmatori di oggi. Anche se anche se non mi piacciono questi post su come "diventare un programmatore migliore", voglio alcuni dei miei pensieri di allora. Servirà come promemoria per me, ma se avete altre idee, sentitevi liberi di commentare.
Traduzione Italiana di Carloalberto Fornea

1. Concentrati

Se hai deciso di lavorare su un’attività, fallo al meglio delle tue possibilità. Non iniziare a fare più cose contemporaneamente. Nel farlo non diventerai più veloce o migliore, semplicemente disperderai le tue energie. Fai solo una cosa alla volta. Lavorando troppo ti esaurirai, commetterai più errori e perderai tempo saltando da un’attività all’altra. Tutto ciò non riguarda solo la programmazione; questo consiglio ha una validità generale.

Kôdô Sawaki diceva: se hai bisogno di dormire, dormi. Non pianificare il tuo software mentre provi a dormire. Semplicemente dormi. Se programmi, programma. Non programmare fantasticando. Se sei così stanco da non poter programmare, dormi. Anche multitasker noti come Stephan Uhrenbacher hanno deciso di lavorare ad una cosa per volta. Ho avuto un’esperienza simile a Stephan, quando ho scritto “Time & Bill”, uno strumento di time tracking. Il mio obiettivo era tracciare il tempo così facilmente da poterlo fare anche per piccole attività, come una telefonata. Ora posso creare qualche cronometro all’inizio del giorno e tracciare il tempo con un solo click. All’inizio è stato un disastro: a volte lavoravo solo qualche minuto su un’attività prima di passare a quella successiva. Ora sono migliorato. Come con la tecnica Pomodoro, pianifico alcuni slot di tempo e mi concentro su quelli. Niente chiacchiere, niente pisolini, nessuna occhiata veloce al nuovo fantastico gioco dell’Appstore.

2. Libera la mente

Prima di lavorare ad un software, hai bisogno di liberare la mente. In quel momento svuota la mente di ogni cosa. Se hai qualche difficoltà non lasciare che ti influenzi. Nella maggior parte dei casi quel problema scomparirà. Se invece è così grande da non riuscire a lasciarlo andare, non lavorare. Tenta di rimettere a posto le cose. Ma quando inizi a lavorare lascia che il mondo esterno svanisca.

C’è qualcosa di entusiasmante nella mailing list? Lasciala li. Puoi dedicarti alle cose eccitanti più tardi. Spegni ciò che riempie la tua mente di spazzatura: chiud Twitter, Facebook, le email. Dovresti addirittura silenziare il tuo telefono e lasciarlo in tasca. Puoi pensare che tutto ciò sia simile al punto 1. “Concentrati”. Ma c’è un’ulteriore restrizione: non usare questi strumenti prima del lavoro o durante la pausa pranzo. Ti collegano al mondo esterno e ti portano a nuovi problemi o a cose che richiedono la tua attenzione.

Pensala così: la tua mente è abbastanza libera, nella maggior parte dei casi, quando ti svegli al mattino. Se non è così praticare sport aiuta (personalmente pratico corsa su lunga distanza). Se ti senti fresco e in ordine va al lavoro e lavora meglio che puoi. Quando stacchi dal lavoro allora puoi riempire la tua mente di altro. Vedrai che non è poi così divertente se hai avuto una giornata piena alle spalle. Twitter e compagnia consumano molta della tua energia. Non pensare che basti un minuto. Non basta.

Tu sai che è così.

3. Mente di Principiante

Ricorda quando eri un principiante o, se ancora lo sei, aggrappati a quella sensazione. Non si finisce mai di imparare. Se sei già un esperto pensa a te stesso come se fossi un principiante, ogni giorno. Cerca sempre di osservare le tecnologie con la mente di un principiante. Potrai accettare di buon grado correzioni al tuo software e sarà più facile cambiare strada se necessario. Anche chi non ha la tua esperienza può avere buone idee. Si è mai visto un software scritto due volte nello stesso modo? Anche quando lo copi, un software è in qualche modo diverso.

4. Niente Ego

Alcuni sviluppatori hanno un enorme problema: il loro ego. Ma non c’è tempo per sviluppare un ego. Non c’è tempo di essere una rockstar.

Chi decide la tua qualità di programmatore? Tu? No. Gli altri? Forse. Ma puoi davvero comparare mele e banane tra loro? No. Sei un individuo. Non puoi confrontare te stesso con un altro essere umano. Puoi solo comparare qualche sfaccettatura.

Una competenza non è nulla di cui andare orgogliosi. Sei bravo in Java? Ottimo. Qualcun altro potrebbe non essere bravo come te ma sarà meglio di te a giocare a bowling. Java è più importante del bowling? Dipende dalla situazione. Probabilmente guadagni più soldi con Java, ma l’altro tizio potrebbe godersi la vita più di te grazie ai suoi amici del bowling.

Puoi davvero essere orgoglioso di essere un geek? I programmatori con un ego non imparano. Impara da tutti, da chi a esperienza e anche dai novellini.

Kôdô Sawaki una volta ha detto: “Tu non sei importante.”

Pensaci.

5. La carriera non esiste

Se vuoi ottenere qualcosa senze avere cura della tua vita “ora”, hai gia perso la partita. Semplicemente agisci al meglio delle tue possibilità, senza guardare all’obiettivo che potresti raggiungere nel lungo periodo.

Lavorare vent’anni per diventare socio di una compagnia? Perchè non lavori sodo il più possibile solo per il piacere di farlo? Il duro lavoro può essere un piacere. Come dice un proverbio Zen “un giorno senza lavoro è un giorno senza cibo”.

Non c’è bisogno di cominciare ad essere felici dopo vent’anni. Puoi essere felice proprio adesso, anche se non sei socio della tua azienda o non guidi una Porsche. Le cose cambiano troppo facilmente. Potresti ammalarti. Potresti essere licenziato. Potresti andare in burnout (anche se scommetto che seguendo tutte queste regole la probabilità sia bassa).

A meno che queste brutte cose accadano, lavora al meglio delle tue possibilità e godi nel farlo. Non c’è motivo di guardare ai guadagni dei tuoi colleghi. Nessuna ragione di pensare a quella fantastica promozione che non hai ottenuto.

In fin dei conti avrai raggiunto qualcosa comunque: avrai ottimi ricordi, probabilmente una buona posizione e vent’anni eccezionali. Ogni giorno è un buon giorno.

Se mai dovessi arrivare al punto di pensare che lavorare nella tua azienda non ha niente di piacevole dovresti andartene immediatamente. MAI restare in un’azienda che porta via felicità alla tua vita. Certo, è possibile solo in paesi ricchi, dove le persone possono scegliere di andarsene. Ma se vivi in uno di questi posti, fallo. Vattene senza rimpianti. Non hai tempo da perdere, domani potresti essere morto.

Quando non hai obiettivi di carriera, andarsene è facile.

6. Taci

Se non hai niente da dire, non sprecare il tempo dei tuoi colleghi. Questo non ti rende un rammollito. Ogni giorno in cui lavori devi provare a non irritare qualcuno. Immagina se tutti provassero a seguire questa regola. Che posto di lavoro eccezionale sarebbe? A volte non è possibile ma provaci con impegno, lo apprezzerai.

Se non sviluppi un ego è abbastanza facile tacere e curarsi solo delle cose di cui puoi parlare. Non confondere il tuo ego con la tua “esperienza” e ricordati sempre: sei un principiante. Se qualcuno ha una buona idea, sostieni l’idea.

7. Mindfulness. Cura. Consapevolezza.

Sì, stai lavorando. Ma allo stesso tempo vivi e respiri. Anche quando al lavoro vivi dei momenti difficili, devi ascoltare i segnali che ti invia il tuo corpo. Devi imparare quali sono le cose che ti fanno bene. E questo riguarda qualsiasi cosa, comprese le più basilari come il cibo. Devi prenderti cura di te stesso e di tutto ciò che ti circonda perchè, dopotutto, l’acqua che bevi è l’acqua che scorre nel fiume. Vivi unicamente per te stesso. Vivi con te stesso e morirai solo. E il mondo continuerà a girare anche senza di te.

Evita di lavorare in situazioni che non ti piacciono. Evita di lavorare gratis se ciò significa che non potrai goderti il lavoro e ti terrà lontano dal letto. Lascia andare ciò che non ti rende felice. Pensi che le persone lavorino gratis solo in teoria? Considera chi fa Open Source nel tempo libero. Se ti sei iscritto alla mailing list di qualche progetto, probabilmente sai quali conflitti nascano (a volte). Se non ti diverti, smetti di farlo. Conosco diverse persone che lavorano in un mondo Open Source che non amano. Sempre con “Time & Bill” ho tracciato il tempo speso in progetti Open Source e sono rimasto sorpreso di quanto tempo ci abbia perso, specie in progetti che non mi piacevano più di tanto.

Tenendo presente quanto sopra, alcune persone pensano di essere felici solo quando hanno del tempo libero e possono passare la serata con una Xbox e qualche birra. Sebbene di tanto in tanto questa resti una buona idea non è detto che ogni momento della tua vita debba essere “divertente”. Se puoi evitare situazioni che non ti piacciono, evitale. Ma a volte serve fare cose che ci fanno schifo. Ad esempio, fare copia/incolla a mano dal foglio Excel del tuo capo a phpmyadmin. Potrebbero volertici intere giornate e sarebbe noiosissimo. Non è divertente ma a volte devi farlo. Non puoi sempre licenziarti quando ricevi un compito noioso. Anche i monaci Zen non si tirano indietro dal loro lavoro. Si alzano alle tre del mattino (a volte prima, a volte dopo, dipende dal convento) e iniziano a meditare e a lavorare (e a volte considerano il lavoro una pratica di meditazione). Devono fare cose tipo pulire i bagni. O lavorare in giardino. O come un Tenzo, cucinano. E lo fanno con tutta le attenzioni che possono raccogliere. Qualsiasi cosa facciano, lo fanno senza sofferenza e sono (o dovrebbero essere) felici, perchè ogni secondo, anche di quei momenti in cui puliscono i bagni, è un secondo della loro vita.

Detto questo: smettila di lamentarti se devi fare copia/incolla da un foglio Excel. Fallo e basta. Non sprecare energie in queste cose; passeranno. Piuttosto diventa il migliore nei dintorni a fare copia/incolla da Excel.

Se avessi un attacco di cuore, la gente probabilmente direbbe: “Oh sì, era davvero un gran lavoratore - ha anche lavorato gratis per me di notte”. Nessuno può guidarti all’altro mondo. Quest’ultimo passo spetta a ciascuno di noi, in solitudine. Non puoi cambiare nulla di questo mondo. Quindi sta a te prenderti cura della tua vita, ogni secondo. Se muori, muori. Ma se vivi, vivi. Non c’è tempo da perdere.

“Cura” è una importantissima parola nel Buddismo Zen (e credo in ogni forma di Buddismo). Non posso esprimere qui tutto ciò che c’è da dire al riguardo. È difficile comprendere i differenti significati di “cura”. Ma potresti avere più familiarità con il termine “consapevolezza”. Devi essere cosciente di ciò che fai, in ogni secondo della tua vita. Devi essere attento alla tua vita. Altrimenti la sprechi. Ma ovviamente dipende tutto da te, se vuoi farlo.

8. Non esiste il capo

Sì, c’è qualcuno che ti paga. C’è qualcuno che ti dice cosa si deve fare. E può licenziarti. Ma non c’è ragione per cui rinunciare alla tua vita e per arrivare a non poterne più del lavoro. In fondo il tuo capo non ha davvero il controllo su di te. Si potrebbe addirittura dubitare che tu abbia il controllo su te stesso, ma non questo è un altro discorso.

Tornando al capo: può rendere peggiore la tua via solo se tu gli consenti di farlo. Ma c’è una via d’uscita. Dì “No” se devi fare qualcosa che ti fa stare male o è contrario alla tua etica. Cosa può succedere? Nel peggiore dei casi ti licenzierà. E allora? Se vivi in un paese occidentale e sei uno sviluppatore (e se stai leggendo questa pagina è molto probabile che tu lo sia) troverai un altro lavoro.

Non intendo che devi dire “No” ad attività come copiare dati da file CSV ad HTML. Parlo di settimane lavorative di ottanta ore e sentire il proprio corpo crollare a pezzi. O arrivare a sentire che anche i tuoi bambini hanno bisogno di attenzioni [che non gli stai dando per il lavoro]. O essere obbligati a licenziare persone solo perchè non piaccono al capo. O se sei un consulente e ti viene affidato lo sviluppo di software per un impianto nucleare (alcuni potrebbero dire che sia bellissimo lavorare per aziende che hanno a che fare con il nucleare ma è contrario alla mia etica personale ed è solo un esempio) o software per carri armati. Puoi dire “No”.

9. Fai qualcos’altro

Un programmatore è più di un semplice programmatore. Nel tuo tempo libero dovresti fare qualcosa che non ha nulla a che fare con i computer. Vai in barca a vela, vai a pesca, fai immersioni. Medita, pratica arti marziali. Suona il flauto Shakuhachi. Qualsiasi cosa tu faccia, fallo con tutta l’energia che hai. Prendilo sul serio proprio come il tuo lavoro. Un hobby non è solo un hobby: è un’espressione di chi tu sei. Non farti ingannare quando ti dicono che gli hobby non sono importanti. Al giorno d’oggi possiamo permetterci di avere degli hobby. Ad esempio ho registrato (e pubblicato) diversi CD e scritto libri fantasy (sono inediti, ho bisogno di più pratica). Queste cose mi hanno reso la persona che sono oggi e alla fine mi hanno portato allo Zen e alla stesura di questo libro.

10. Nulla È Speciale

Un fiore è bellezza. Ma è solo un bel fiore, niente di più. Non è niente di speciale. Tu sei una persona che sa programmare. Magari sei bravo. Ma anche questo non è niente di speciale. Tu ed io siamo fatti della stessa materia di cui sono fatte tutte le persone di questo pianeta.

Devi andare in bagno e devi mangiare. E di sicuro devi dormire. E dopo (si spera) molto tempo morirai e tutto ciò che hai creato alla fine andrà perduto. Anche le piramidi scompariranno, dopo molto tempo. Conosci i nomi delle persone che le hanno costruite? E se anche lo sapessi, sarebbe importante saperlo? No. Le piramidi ci sono, oppure no. Niente di speciale.

Lo stesso vale per il tuo software. La banca ci guadagna un sacco di soldi. Ma quando lascerai questo mondo, nessuno si ricorderà di te. Non c’è nulla di male. È lo scorrere del tempo. Nulla di cui dovresti preoccuparti.

Se la tua azienda chiude per problemi finanziari, nessun problema. La vita continua. Non c’è bisogno di una Xbox, di una automobile, o qualsiasi altra cosa. La maggior parte delle persone su questo pianeta vive nella povertà più estrema. Non hanno bisogno di una Xbox perchè sarebbero felici di avere del cibo o anche solo dell’acqua.

E quindi… cosa ti rende speciale? Avere la fortuna di essere nato in un paese occidentale? Saper programmare? No, non c’è nulla di speciale. Puoi lasciar andare il tuo ego e vivere liberamente. Godi dei colori e dei profumi dei fiori. Non essere troppo triste quando arriva l’inverno e non essere troppo felice quando torna la primavera. E solo il flusso delle cose. Ricordalo quando rifiuteranno la tua candidatura per quel posto di lavoro. Perchè nessuna azienda è così speciale da farti soffrire.

Se segui queste regole durante un progetto, scoprirai che è stato un progetto buono e divertente. Dopodichè è semplicemente il momento di andare avanti e concentrarsi su altro.