Chi mi segue da questa piccola finestra (la puntata precedente è comunque qui) sa che da circa un mese non mi è più “permesso” di scrivere codice in PP: il mio attuale e unico collega infatti è allergico alle coppie. Non solo, purtroppo io ed il mio collega abbiamo anche principi prospettive di visione del codice molto differenti, direi addirittura opposte. Ma non è del mio collega (per altro simpatico e di vecchia data) che vi voglio parlare, quanto invece delle mie reazioni e dei miei peccati in questo mese.
Nell’ultimo mese e fino a qualche giorno fa ho prodotto software di bassa qualità, voglio cercare di capire il perché con voi. Sicuramente e per onestà nei miei confronti il motivo principale è la scarsissima conoscenza dei tool utilizzati. Ma questo lo sapete già. Più interessante è invece come il rapporto tra me ed il mio collega, i miei timori e il disallineamento di valori hanno influenzato la mia capacità di creare qualità.
Sostanzialmente ero entrato in un circolo vizioso, che mi ha fatto calpestare i valori in cui credo. Infatti il cercare una strada per lavorare in coppia, unita ad un approccio copy-and-paste e code-and-fix del mio collega, mi hanno portato a sacrificare i miei valori per arrivare ad un compromesso che permettesse un’interazione più profonda con il mio (mancato) pairer. In aggiunta il fatto di non stimare le storie in giorni/coppia, ha creato in me una certa competizione di produttività con il suo approccio, al fine di dimostrargli la validità del mio. Un eccessivo compromesso da parte mia mi ha però portato a sacrificare la qualità. Questo sacrificio da guardare da un punto di vista umano, di sensazioni, e “spirituale” ha portato inevitabilmente ad una crescente frustrazione. Giorno dopo giorno andavo a casa sempre più frustrato e con sempre minori motivazioni e stimoli. Chiudendo il cerchio, la frustrazione ha dato origine a minore produttività e così via. Inoltre era sempre dietro l’angolo, anche per le nobili motivazioni già espresse (=per cercare una convivenza non conflittuale) il seguente pensiero: “ma sì, per questa volta sacrifico la qualità, in fondo è solo un progettino di 80 giorni”.
In che modo sono riuscito a spezzare questo circolo vizioso? Con la qualità ovviamente! Finalmente dopo aver acquisito dimestichezza con i tool, sono riuscito a creare il primo unit test automatico, e da quel momento sono letteralmente rinato, riprendendo a seguire i valori di feedback, semplicità e di sperimenta-adatta perlomeno in solitaria.
Mi sono chiesto se la frustrazione provata si sarebbe manifestata nel mio collega se l’avessi “costretto” io o un’entità superiore, a seguire i miei valori. La risposta che mi do è sì, anche lui si sarebbe sentito frustrato se non avesse seguito i suoi valori. Ad ogni modo mi sento di affermare che perlomeno in quel caso avrei prodotto qualità e quindi avrei apportato un beneficio ad una persona in più: il cliente. Questa piccola esperienza mi ha insegnato aspetti che ritengo importanti.
- Un team nel quale non vengono condivisi i valori ha vita molto breve, è una bomba ad orologeria pronta a scoppiare: in due parole non è un’ambiente sostenibile.
- Personalmente ho imparato a fare molta attenzione a sacrificare valori quali la qualità per me (e per il mio lavoro) fondamentali: ho toccato con mano come sacrificare la qualità non paghi non solo a livello “tecnico”, ma anche umano(vedi soddisfazione personale)!
- Attenzione ad allineare i valori “al ribasso” per raggiungere una convivenza non conflittuale.
- Non arrendersi all’ambiente! Proattività!
- Riuscire a trovare uno zoccolo duro di valori condivisi può essere molto difficile, a volte impossibile.
- La barriera più grande al punto precedente risiede a mio modo di vedere nella mancata volontà di migliorarsi ed in un ridotto spirito di team che ha come contr’altare l’orgoglio e la bassa interazione con il resto del team.
Quest’ultimo punto è la precondizione ad uno sviluppo del software produttivo e di qualità. Se manca tale precondizione è davvero molto difficile costruire un vero team.
Spero con il tempo di affinare la mia capacità di creare non solo valore, ma anche valori condivisi ed allo stesso tempo diretti verso l’eccellenza.
[Qualche minuto fa, dopo avere fatto integrazione tra il mio codice e quello del mio collega, proprio lui ha cominciato a creare uno unit test a partire dalla struttura da me messa in piedi: che non sia tutto così nero in fondo? Questo mi porta di nuovo a pensare che non sempre il compromesso su alcuni valori sia da ricercare, e che invece sia da cercare sempre una strada per far "digerire" alcuni valori imprescindibili!]
Vorrei sottolineare per finire che non credo in un’entità superiore (un manager o chi per esso), che risolva questo tipo di conflitti obbligando una persona piuttosto che un’altra ad agire in un certo modo. Ritengo invece avrebbe potuto migliorare la mia situazione un modello organizzativo nel quale i cerchi di livello superiore pongono obiettivi di più alto livello a tutto il cerchio inferiore, cioè a tutto il team in quanto holon, e non in quanto somma di individui. In questo modo ci sarebbe un’obiettivo comune sul quale auto-organizzare il team. Infatti se questi obiettivi non vengono esplicitati o se sono differenti per ogni componente del team, allora il rischio di non riuscire ad ottenere un ecosistema omogeneo, aumenta pesantemente.



Ciao, come al solito il post è molto interessante.
Mi chiedevo, i problemi riscontrati non potrebbero essere dovuti solamente ad una questione motivazionale ? Se attraversi un periodo di lavoro negativo dal punto di vista dell’umore, potresti di conseguenza avere una scarsa attenzione alla qualità e minor voglia di ‘fare bene’. Questo indipendentemente da tanti altri fattori.
Infatti mi chiedo: è veramente tutta questione di valori condivisi ? Se applico bene i valori ma per altri motivi sono demotivato (che ne so, l’aria condizionata non funziona oppure non ho modo di intervenire attivamente su un progetto) la mia qualità viene comunque compromessa ?
ciao
Commento di Stefano — 29 Giugno, 2006 @ 11:26 am
Ciao Stefano,
non escludo affatto che si possano verificare delle situazioni nelle quali pur condividendo i valori, altri fattori “ambientali” diano origine ad un rendimento come dici te inferiore.
L’esperienza che invece ho riportato non è riconducibile a questi fattori più “estemporanei” di cui parli te.
Commento di Enri — 29 Giugno, 2006 @ 2:25 pm
Come dice Stefano esistono altri fattori che incidono sulla motivazione.
Come “essere umani” siamo influenzati dalle nostre emozioni, dalle nostre esperienze e dai nostri punti di vista il più delle volte divergenti.
Poi ognuno di noi ha i proprio difetti e i propri pregi.
Ammetto di avere delle “fisse” anch’io, ma proprio questo è la sfida del “pair”: il confronto sincero e onesto delle proprie idee.
Essere in “solitaria”, alla fine non paga.
Commento di Gianluca — 29 Giugno, 2006 @ 4:00 pm
Sono d’accordo con te Gianluca che essere in solitaria non paga.
La questione nasce dal fatto però che non tutti la pensano come me e te.
Commento di Enri — 29 Giugno, 2006 @ 4:03 pm
Big Enri!
Come dissi tempo addietro, ogni tanto qualche sana frustata è sempre utile, anche se per differenza di mole ti vedo un po’ in difficoltà
Io mi trovo a combattere questa situazione ogni giorno da più di due anni. Ogni tanto vedo un barlume di luce, ma proprio piccolo. Far comprendere il valore che certe pratiche portano è difficile, ed è facile abbandonarsi al modo comune di fare le cose.
Probabilmente se fossimo in un team come pensiamo io e te, alcune persone ne sarebbero escluse o si autoescluderebbero: le “stelle” devono cadere.
Commento di FRANK — 29 Giugno, 2006 @ 4:46 pm
Ritengo la diversità una grande risorsa all’interno di un team. Diversità di skill, ma anche diversità di principi. Il punto sta da un lato nel fare in modo che questa diversità non diventi mancanza di spirito di team, e dall’altro nel fare in modo che esista sempre uno zoccolo duro di valori e di principi sui quali tutto il team è concorde.
Mi viene ora in mente proprio l’approccio sociocratico: in questo modo di procedere ognuno può muovere proposte anche se in contraddizione con gli attuali principi, l’importante è che non escano dai “limiti di tolleranza del sistema”. Inoltre caratteristica fondamentale di questi sistemi è sia l’avere obiettivi posti dai cerchi superiori, e sia l’approccio del sperimenta-ed-adatta supportato da dati oggettivi misurati e misurabili (es. metriche di processo).
Commento di Enri — 30 Giugno, 2006 @ 12:02 pm
Da1 persona lontana dal mondo della programmazione: è meglio avere “qualità” in un progetto in tempi medi (a discapito di velocità)… e quindi maggiori apprezzamenti (credo) da parte del cliente? o avere maggiore velocità …tralasciando molte volte la qualità e quindi nuove tecniche a discapito della qualità..? e rimanere “ancorati” quindi nelle classicissime metodologie di programmazione? sempre da persona “ignorante” in materia credo che l’informatica e i linguaggi di programmazione debbano seguire obiettivi in passo comune di “qualità” e “velocità” ove ovviamente possibile….e con un team “motivato e compatto” a mò di squadra d’attacco!!! bhè è solo un mio pensiero…! la frustazione a volte fa parte del gioco anche solo per migliorarsi e crescere nei propri valori!!!
Buon lavoro!
Commento di Fausta — 1 Luglio, 2006 @ 3:43 pm
Questo post più che un commento stimola la scrittura di altri post sui concetti di qualità, velocità, collaborazione che sono solo apparentemente semplici, ma sotto nascondono concetti ben più profondi.
Il titolo del post però merita un commento, mi ha colpito infatti l’accostamento di “frustazione” e “qualità”, perchè mi ha riportato alla mente esperienze lavorative che ho vissuto anni fa, più o meno quando avevo la tua età anagrafica e lavorativa.
Pur avendo un’indole diversa dalla tua, più pragmatico e meno teorico, ho patito anche io questa distanza tra mondo ideale e mondo reale. Non so se questo dipenda da un riflesso condizionato dall’università o dal fatto di essere giovani, motivati e pieni di speranze.
Fattostà che all’epoca lavoravo in una piccola azienda che mi sembrava tutto fuorchè un’azienda di “qualità” eppure decise di intraprendere il percorso della certificazione ISO 9001 e la ottenne. Non che la società avesse cambiato animo, lo richiedeva il mercato e quindi era un investimento per avere altri lavori. Quello che mi lasciava sbalordito era che la “qualità” era solo un biglietto da visita, ma poi nella pratica se ne facevano di cotte e di crude, tipo scrivere codice a nome d’altri ed altri scrivere specifiche a nome tuo …
Una volta ho avuto la possibilità di fare un piccolo progetto di integrazione tra un server IMAP ed un ERP. Ho condotto questo progetto tutto da solo curando specifiche , scrivendo software di “qualità”, documentando il tutto dettagliatamente con Javadoc personalizzati, nel pieno rispetto dei tempi previsti e con la naturale soddisfazione finale del cliente.
Ebbene quel progetto fu per me l’inizio della fine, lo ritenevo un progetto perfetto, ma così non era, era perfetto funzionalmente, era perfetto tecnicamente, era un progetto di “qualità” fatto negli stessi tempi della “non qualità”, ma era un fallimento per la mia società. Non avevo lasciato traccia nel nuovo cliente, avevo fatto una puntura indolore, come ero arrivato me ne ero andato, in punta dei piedi, come è mia consuetudine caratteriale.
Morale, la frustazione per non riuscire mai a fare un progetto in vera “qualità” come io la intendevo si era traformata in frustazione nel constatare che quella “qualità” tanto agognata soddisfaceva solo me ed il cliente, ma creava un problema tra me e la società per non aver creato “valore aggiunto” e per aver dimostrato che la “qualità” volendo si poteva ottenere e quindi per aver messo in difficoltà chi non voleva o poteva allinearsi a questo concetto di “qualità” in azienda.
Questa ed altre esperienze furono la molla che mi spinsero a cambiare azienda, molti aspetti migliorarono, altri rimasero uguali, alcuni, pochi, peggiorarono, ad esempio la storia dei test. La vecchia società per cui lavoravo aveva tra i dipendenti molti specialisiti di test che venivano impiegati su grossi progetti, nella nuova società invece, nonostante si sviluppassero anche grossi progetti chiavi in mano, la figura del software tester era del tutto ignorata, si preferiva delegare tutto a sviluppatore e utente finale per abbattere i costi ed incrementare i guadagni.
Fu in questa nuova situazione che scoprii con piacere l’esistenza di JUnit, fortuna volle che in quel periodo un certo Frank con esperienza di JUnit si unì al nostro gruppo introducendoci al TDD ed alle tecniche agile che con altri colleghi avevamo solo visto in teoria.
E qui si arriva all’altro “disagio” che tu descrivi, la mancanza di “organizzazione”, di chiarezza nei ruoli, nel delegare qualsiasi tipo di responsabilità che è la prassi, per la mia piccola esperenzia delle società di consulenza.
Alla fine le tecniche agili parlano di principi, di valori e di pratiche di buon senso.
Una cosa di buon senso che manca in tutte queste strutture organizzative è “dare il buon esempio”.
Il guidatore indisciplinato che si trova all’estero dove tutti mettono la freccia e sono disciplinati, diventa improvvissamente disciplinato. Viceversa il guidatore disciplinato, che si trova nel traffico caotico e senza regole, dopo un po’ si adegua per poter riuscire a circolare in quella situazione.
Con questo non voglio dire che in certe strutture si voglia dare il “cattivo esempio”, dico che manca il “buon esempio” semplicemente perchè manca la struttura, perchè la struttura è fatta di due soli livelli, quello basso, che ha delle motivazioni funzionali e tecniche e quello alto, che ha solo delle motivazioni economiche.
I due mondi sono molto distanti, con una struttura più stratificata, come inizialmente avevo trovato nella nuova società, queste differenze sono più sfumate ed il passaggio tra livelli è un obiettivo raggiungibile e motivante.
Ti ho raccontato la mia esperienza solo per dirti che non sei solo, che tutti in un modo o nell’altro ci passano e che la frustrazione deve essere vissuta positivamente come stimolo al miglioramento.
A questo punto ognuno di noi reagisce in modo diverso, a secondo del proprio carattere, delle proprie convinzioni, delle proprie aspirazioni.
C’è chi accetta la situazione e magari riesce anche ad adeguarsi, c’è chi lotta per cambiarla, c’è chi sceglie altre strade.
Per dirla alla Nuti di “Madonna che silenzio c’è stasera”
“O tu vinci al totocalcio o tu sposti la chiesa o tu vai in Perù”
Commento di Tom — 3 Luglio, 2006 @ 11:54 am
Con questo non voglio dire che in certe strutture si voglia dare il “cattivo esempio”, dico che manca il “buon esempio” semplicemente perchè manca la struttura, perchè la struttura è fatta di due soli livelli, quello basso, che ha delle motivazioni funzionali e tecniche e quello alto, che ha solo delle motivazioni economiche.
I due mondi sono molto distanti, con una struttura più stratificata, come inizialmente avevo trovato nella nuova società, queste differenze sono più sfumate ed il passaggio tra livelli è un obiettivo raggiungibile e motivante.
Personalmente non ritengo una struttura più piatta una struttura che fornisce meno opportunità o più “problemi” di una più gerarchica. Anzi in linea di massima penso ci siano maggiori opportunità in una struttura a meno livelli. Credo comunque che molto dipenda anche dal carattere e dalle caratteristiche di chi ci si trova a lavorare.
Con questo non voglio dire che in certe strutture si voglia dare il “cattivo esempio”, dico che manca il “buon esempio” semplicemente perchè manca la struttura, perchè la struttura è fatta di due soli livelli, quello basso, che ha delle motivazioni funzionali e tecniche e quello alto, che ha solo delle motivazioni economiche.
Non sono convinto che risieda solo qui il problema. Credo che spesso nelle aziende di consulenza manchi un’attenzione precisa al processo di sviluppo, vuoi perché nella maggior parte dei casi ci si trova a dover fare i conti con fattori “esterni” all’azienda o comunque con contesti molto eterogenei, vuoi perché si punta di più sull’autoorganizzazione dei team (che è un aspetto positivo). Per la mia esperienza penso che sia ad ogni modo fondamentale esplicitare delle regole di base (valori e principi) e lasciare poi che le pratiche vengano ricercate ed adattate team per team. Ciò che manca è un’attenzione ed un’educazione al processo, nonchè un approccio come piace dire a me “scientifico”, e come dicevo nel post degli obiettivi comuni al team impartiti dal livello superiore (qualsiasi sia il numero dei livelli).
Mi rendo conto comunque che non sono aspetti facili o banali: anche in aziende non di consulenza vedo questi problemi “di processo” (sai comunque che intendo il processo come una serie di suggerimenti volti a far emergere il meglio dalle persone e dal team e non una serie di regole che opprimono).
Ti ho raccontato la mia esperienza solo per dirti che non sei solo, che tutti in un modo o nell’altro ci passano e che la frustrazione deve essere vissuta positivamente come stimolo al miglioramento.
Per questo mi conosci…sfondi un cancello aperto…
Commento di Enri — 3 Luglio, 2006 @ 3:24 pm
Hola faretaste
mekodinosad
Commento di AnferTuto — 29 Luglio, 2007 @ 12:29 pm