mercoledì 1 febbraio 2017

DEVELOPMENT IN CHINA


Dopo aver passato una buona parte del 2016 nella Repubblica Popolare Cinese a cercare di portare a termine un progetto impossibile realizzato da un team fallimentare, condivido su Programmazione Applicata la mia personale esperienza lavorativa e personale.




Il Progetto

Il progetto a cui ho preso parte, nella figura equiparabile ad un Development Team Leader, consiste nella realizzazione di un Impianto completamente automatico per la produzione di un certo prodotto e la raffinazione dei suoi sottoprodotti relativi all'industria alimentare.
Non posso scendere nei dettagli a causa del segreto professionale

La differenza con gli altri progetti a cui ho preso parte è sostanzialmente nelle dimensioni (caratteristica che contraddistingue le industrie Cinesi), sono passato da gestire medio-piccole produzioni chimiche a dover gestire volumi superiori ad 1 milione di litri al giorno di prodotto finito, il tutto in uno scenario di tipica Industria 4.0 [wikipedia] dove ogni angolo dell'impianto è altamente interconnesso e sincronizzato.

La mia attività ha riguardato l'aspetto della Supervisione (SCADA [wikipedia]), un altro team gestiva le logiche di Processo (PLC [wikipedia]), un altro ancora curava la progettazione e realizzazione meccanica. L'intero design e sviluppo era Made in Italy/Europe, il cliente si limitava a fornire la manodopera in grado di creare Km quadrati di strutture in pochi giorni.

Rianimare un cadavere

Mi piacerebbe prendermi totalmente il merito (o demerito) riguardo il design del progetto, tuttavia di fatto sono stato inserito nel progetto in una fase critica: mentre il team di sviluppo del Processo stava andando a gonfie vele, il team di sviluppo della Supervisione dava evidenti segnali di cedimento, c'erano chiari segni di bad design e le (poche) parti completate erano soggette a bug e crash.

Dopo ben tre anni di design e sviluppo mandati in fumo, non avevano in mano un prodotto nè stabile nè tantomeno funzionante. L'azienda aveva due scelte: abbandonare lo sviluppo della Supervisione e cederla ad una azienda concorrente accollandosi le spese di tre anni oppure sostituire, parzialmente o totalmente, il team di sviluppo.

Quando il campanello di allarme è iniziato a suonare, mi è stato chiesto se me la sentivo di prendere sulle spalle il progetto, risolvere gli errori, completare lo sviluppo, correggere quanto possibile il design, il tutto naturalmente entro i tempi previsti dalla pianificazione. Mi sono sentito come un medico del pronto soccorso al quale viene presentato un cadavere e gli viene chiesto di rianimarlo, "non sono mica un mago!".

La Soluzione sta nella Organizzazione

Coraggiosamente (o ingenuamente) ho accettato questa sfida personale e ho iniziato ad approcciarmi a quel "cadavere". Per prima cosa sono partito con l'idea di ignorare volontariamente il bad design e cercare di effettuare un reverse engineering del software incompleto per poter completare i principali punti aperti. Una volta che avevo ben chiaro cosa non andava nel software è stato chiaro cosa non andava nel design e ho capito qual'era la causa principale di tutti gli errori: la scala. La scala? esatto. Il team di sviluppo originale aveva preso un software simile e lo aveva semplicemente mal proporzionato in scala, dove c'era una cosa ne metteva 140, dove c'erano dieci controlli ne metteva cento e così via.

Anche se avevo intuito il problema rimaneva la questione della organizzazione, ogni ora aggiungevamo punti ad una Punch List infinita, era necessario organizzarsi e organizzare le (poche) risorse a mia disposizione. Per risolvere questo problema ho applicato il metodo SCRUM [wikipedia], metodo che ho utilizzato in precedenza per rispettare scadenze apparentemente impossibili.

L'applicazione di SCRUM è risultata la chiave di svolta per il completamento del progetto nei tempi richiesti. Sono stati risolti gli errori in runtime, prevenuti i possibili disastri e riscritto gran parte del design sia software che del database, inoltre, avendo sostituito completamente il vecchio team di sviluppo, è stato possibile approcciarsi al progetto da un altro punto di vista e sono venute fuori ottime idee per modificare aspetti grafici della interfaccia che hanno dato un tocco di stile alla user experience. 

Il progetto di fatto è stato completato nei tempi richiesti e il risultato è stato migliore di quello previsto, il cliente è risultato molto soddisfatto al punto di ordinare nuove funzionalità in previsione alla fase 2 della produzione. "Finchè, un giorno di Inverno, non soffiò un irrequieto vento del Nord..." Esattamente, come la celebre frase del film Chocolat [imdb], una volta che un progetto viene rimesso sui giusti binari è obbligatorio abbandonarlo in altre mani (sicure), mi sento quasi come un padre il cui figlio decide di abbandonare casa per cercare la propria strada (con la differenza che il figlio era morto e il padre lo ha letteralmente resuscitato).

Le differenze culturali

Lasciando perdere le (troppe) parole spese sul progetto, voglio soffermarmi sulle differenze culturali che ho incontrato lavorando con un popolo totalmente diverso dal nostro (Italiano, Europeo, Occidentale). 

La differenza fondamentale, da Italiano, è stata il cibo e la manira di mangiarlo. Dagli accostamenti piatto-contorno alle bacchette utilizzate per qualsiasi tipo di pietanza, e devo ammettere che i primi giorni di permanenza in Cina sono stati complicati. Ma dopo un paio di giorni il mio stomaco (e il mio intestino) si è abituato alla cucina locale e in breve tempo ho trovato delle vere e proprie prelibatezze, nonchè ottimi ristoranti Italiani (per non impazzire).

Una delle cose a cui non mi sono ancora abituato sono le "cattive maniere" di quasi tutti i Cinesi che ho potuto incontrare: dal mangiare con la bocca piena, allo sputare in pubblico, alla igiene poco curata e al ridotto rispetto per il sesso femminile. Tuttavia ammetto che dopo i primi giorni il cervello inizia a nascondere ogni comportamento sgradevole, come una sorta di istinto di sopravvivenza.

Parlando delle persone invece non posso che lodare un popolo che ho trovato molto rispettoso, attento, interessato e paziente. Magari non capivano immediatamente come gestire l'impianto, ma dopo qualche settimana percepivo nettamente dei miglioramenti e una curva sempre in crescita del loro apprendimento. In breve: lavorate con i Cinesi ma non andateci a pranzo insieme.

Piccola parentesi: sapete che in Cina non sono raggiungibili i server di Google e dei principali Social Network? Esiste una soluzione: le VPN, ne parlo meglio in questo articolo [link].

Ma quindi, parli Cinese?

Méiyǒu [没有] (No), avrei voluto imparare qualche parola in più ma fondamentalmente il mio Cinese è limitato a chiedere del sale o dei tovaglioli a tavola, salutare o ringraziare. Per tutta la durata del progetto ci siamo interfacciati con un team di interpreti Cinesi, abbiamo parlato esclusivamente Inglese sia con il cliente che con gli altri team di sviluppo Europei impegnati nel cantiere.

Questa limitazione nel dialogo è poco vantaggiosa sul piano lavorativo. Un interprete Cinese, per quanto sia bravo, non può avere una grande familiarità con i termini tecnici della informatica, del processo o della chimica. Molto spesso ci trovavamo a dover instruire l'interprete su nozioni di chimica di base prima di poter parlare con il cliente di una particolare reazione durante la fase di processo.

Nessun commento:

Posta un commento