martedì 24 settembre 2013

Il mio primo fallimento professionale

Ebbene sì... è successo: non sono riuscito a completare e consegnare un progetto, la prima volta nella mia quasi decennale carriera da programmatore.

Potrei cercare e trovare tante scuse, ma ho sempre pensato che i fallimenti (professionali o della propria vita non fa differenza) devono sempre servire per migliorarci e questo è possibile solo se si cerca di analizzare le cause che li hanno causati.

Scrivo questo post come promemoria e per condividerlo con chi fa il mio stesso lavoro, sperando ne possa trarre utili consigli.

Il sito da ristrutturare era stato sviluppato da più programmatori, in più fasi, utilizzando Joomla 2.5 e vari componenti (commerciali e non), tra cui un paio creati dagli sviluppatori stessi.
Dall'utilizzo che ne era stato fatto, almeno i primi dovevano essere abituati a lavorare con Joomla 1.5, mentre i secondi hanno fatto un buon lavoro di programmazione dei componenti.

Inizialmente ho pensato che poteva essere una buona idea cercare di aggiornare a Joomla 3, visto che avremmo comunque lavorato con Bootstrap e i notevoli miglioramenti apportati al framework.

I tempi per la consegna non era ampi, ma onestamente neanche strettissimi, e qui ho fatto il mio primo errore: giornate perse a cercare di aggiornare i componenti principali non compatibili con Joomla 3!

Non avendo ancora parlato con lo sviluppatore precedente, ignoravo che fosse stato modificato del codice core dei componenti, per cui tutti i miei tentativi andavano a vuoto. Dopo qualche giorno riesco a parlare con lui e mi conferma che non è una buona idea... ok 1 settimana è andata.

Un'altra settimana è andata per familiarizzare con il codice, utilizzo dei moduli, del template e prepare un server dedicato per lo sviluppo ed il test.

A questo punto avevo già perso 10 gg in cose che non avevano niente a che fare con le richieste del cliente!! E me ne rimanevano 15!

Il detto fai le cose quando puoi farle in questo caso è perfetto, perchè nel frattempo sono partite delle emergenze con altri clienti su lavori già avviati, per cui ho dovuto sospendere tutto il resto.

Quando riprendo il progetto ho poco tempo, ma mi considero un programmatore "agile" e veloce, inoltre avevo fatto anche lavori più complessi in poco tempo, solo che questa volta è diverso: il codice non è mio (e non l'ho fatto mio) e dal mio lavoro dipende il lavoro di altre persone del team.

Risultato: panico!

Per giorni navigo il vasto mondo delle estensioni Joomla (mi sono ritrovato anche con due finestre di Chrome con una ventina di tab aperto ciascuna!!), installo, disinstallo, modifico senza trovare soluzione di continuità.
Ogni mattina mi facevo la mia todo list e puntualmente dopo una decina di minuti mi prendeva l'ansia e ripartivo per strade senza sfondo, perchè non riuscivo a fissare un percorso.

Il problema è che ogni giorno pensavo di riprendere il mio normale ritmo di lavoro, ma arrivavo a sera senza nessun risultato concreto, per cui non riuscivo ad ammettere che ero in un vicolo cieco e ormai non avrei più recuperato.

Facendola breve, io a pochi giorni dalla consegna ero ancora convinto di riuscire a consegnare qualcosa di "commestibile", ma a questo punto il leader del progetto si rende conto della situazione e decide di sostituirmi.

CONCLUSIONE

Fino a ieri ero convinto di aver sbagliato i tempi ed aver dedicato troppo tempo a cose inutili e non richieste, mentre oggi parlando con la nuova programmatrice per passargli il lavoro mi sono reso conto di quanto il progetto fosse semplice se l'analisi fosse partita dalle funzionalità del sito e non da come queste erano state implementate!!
Quando si prende in mano un progetto già fatto, molto spesso le soluzioni scelte e implementate da chi lo ha sviluppato, non sono le migliori possibili, perchè solo in fase di sviluppo le richieste del cliente prendono forma e si concretizzano, fino a diventare anche molto diverse da quelle iniziali.
Per cui chi subentra dopo ha la "fortuna" di vedere un prodotto finito e di poterne cambiare completamente l'implementazione utilizzando gli strumenti più adatti.
Quindi col senno di poi avrei potuto utilizzare Joomla 3 con installazione pulita e ricreare le stesse funzionalità con componenti miei e più adatti alle richieste fatte, mantenendo i dati presenti.

NB: questo era un progetto senza database e operazioni sui dati complessi, in quei casi il discorso è molto diverso.

Questa lezione l'ho imparata molto bene perchè, oltre la perdita economica, la cosa che più mi è dispiaciuta è aver deluso profondamente due persone che avevano creduto in me, che stimo sia come professionisti sia umanamente e con cui pensavo di avviare una bella collaborazione anche per progetti più consistenti. Scusate.

1 commento: