Piccole soddisfazioni

Premetto che il mio pane quotidiano fin'ora sono state web-application ad uso "gestionale" per utenti non proprio SMART.

Questo ambiente mi ha insegnato parecchio su cosa vuol dire seguire un cliente con le idee poco chiare, creare interfacce per utenti che non leggono un solo carattere etc..

Diciamo che è uno dei peggiori (forse) ambienti in cui lavorare perchè i riconoscimenti e le soddisfazioni si contano su una mano. C'è anche da dire però che quando qualcosa colpisce nel segno, ripaga, di molto, tutto il resto.

 

Ultimamente invece sono tornato a fare web con un sito in Web Form, Nhibernate, CMS, SilverLight e jquery (ajax).

LA relazione con il cliente è stata ben più stretta: un cliente che pretende risultati per se stesso in primis e  li ha ben chiari è un cliente che non va considerato rompiscatole ma una miniera d'oro. Sapere che dietro ad un progetto c'è qualcuno che sa cosa è giusto e cosa è sbagliato è un'ottima cosa.

Ho pensato quindi di applicarmi in una metodologia di lavoro Agile: fare il minimo ma davvero minimo indispensabile e pubblicare versioni di continuo.

Sapendo che dall'altra parte ci sarebbe stata una persona iper-critica su qualsiasi dettaglio (leggasi cliente convinto che rompere le scatole porti ad ottenre qualcosa di più) ho pensato bene di realizzare il sito pian pianino.

In questo modo non mi sono dilettato in piroette da programmatore frustrato per ottenere questo o quell'altro effetto o tecnicismo 'cool'.

Pensate che per la parte di CMS interno (progetto ex novo per esigenze un pò particolari) non ho praticamente manco curato l'allineamento dei campi tra di loro (na cosa orribile: pareva che avessi preso una manciata di textbox e lanciate contro lo schermo e dove s'appiccicavano era il loro giusto posto).

Beh il cliente su quello non c'ha fatto caso! Non gli interessava minimamente se fosse brutta o meno l'interfaccia con cui inserire i dati: gli bastava che facesse quello che si aspettava.

Per dare un altro esempio: liste di dati (news, album etc..) SENZA il pulsante per cancellare. SOLO tabulato (senza manco paginazione, ordinamento etc..) e la form per inserire/modificare i dati.

Questo ha automaticamente incasellato nei tempi giusti le varie operazioni:

  1. programmazione minimale
  2. presentazione
  3. modifiche
  4. presentazione
  5. refactoring (stile/performance).

Perdersi anzi-tempo nei dettagli inutili (come l'allineamento dei campi) o delle performance del sistema può solamente farvi cadere in un abisso: voi sarete frustrati perchè vi siete fatti un mazzo così per fare questa o quella figonata usando tecniche di IoC estreme (stile domani non esiste più c# ma il progetto con 5 conf potrà rimodellarsi in C#2010# :P)...il cliente sarà in pensiero perchè non vede un risultato e vi affosserà con richieste aggiunte (più tempo passa più le richieste "secondarie" aumentano).

Quello che m'ha più stupido è stato ignorare COMPLETAMENTE la parte di performance. Una volta che il sistema funzionava ho preso le parti che superavano i 10 secondi di caricamento (vabbè c'erano parti da 5min..) e in pochissimo tempo son riuscito con refactoring leggero a renderle iper-veloci. Del resto la problematica era oramai chiara, il risultato era già stato approvato dal cliente...diventa tutto molto più facile!

Bello bello bello.

 

Altre soddisfazioni:

TDD: come potete leggere negli altri post sto andando avanti con BindManager (progetto in cui onestamente credo molto per velocizzare la produzione di maschere di inserimento dati). L'altra sera m'è venuto il guizzo di cambiare un sacco di cose: tipo esportare tutta una serie di metodi in un una classe statica esterna e renderli delle extension così da rendere possibile l'implementazione di altri metodi in maniera semplice e veloce.

Ho BRUTALMENTE estirpato questi metodi. Ho sistemato qui e li (nei metodi) il codice. Ho ricompilato. Lanciato test e TA-DA tutto ok. Copiato gli assembly nei progetti che facevano uso di BindManager: NESSUN PROBLEMA. Na pacchia proprio!

Soddisfazioni insodisfatte:

BalsamiQ invece è stato un pò una delusione. Comprato perchè m'è parso molto bello per discutere col cliente e magari farlo giocare ma non ha attecchito. L'idea è che A) lo stile è burtto B) non produce qualcosa di programmabile: si fa fatica a capire che è solo uno spazio dove far prendere forma le idee.

In più ho provato cmq a inserirlo nel preventivo per dire "ok avete chiesto questo e questo è l'aspetto grafico che + o - avrà la gestione" ma buona parte è stata scartata.

Il problema è che c'è bisogno dall'altra parte di una persona capace di astrarre le proprie idee e connetterle con il mock grafico: lo posso fare io, lo puoi fare te ma un cliente che ha ben altri pensieri e che magari manco sa cos'è il web. non lo potrà mai usare.

Cmq Balsamiq m'è servito molto a me stesso perchè perdere 5min a disegnare un'interfaccia mi ha dato quel tempo e pazienza necessari per renermi conto fin da subito di problematiche fastidiose.

 

 
 
  1. 05/05/2010 16.26.11| #1
     

    Balsamiq:
    ho l'impressione, ormai certezza, che il "cliente" (in generale) sappia dire se è il prodotto è riuscito (aka bello/brutto) solo quando lo prova

    traslando il concetto nell'abbigliamento,

    deve indossare il vestito bello e finito (o quasi), per vedere se cade a pennello ed esalta le forme,
    dal disegno su carta, o manichino il "cliente" capisce poco/nulla.

    la capacità di astrarre un concetto, a lui estraneo sin dall'origine (zero familiarità ...) equivale ad un triplo salto mortale.

    ho visto facce da "mucca che guarda il treno passare" ...

     
  2. 05/05/2010 22.57.26| #2
     

    come ti capisco!
    La cosa divertente è che a me succede che molto spesso manco lo prova, una volta pubblicato, per cui il feedback è inesistente...vai te a capire a distanza di mesi come spiegare che certe cose son state fatte per certe scelte e che mo non sei più dentro al budget ma bisogna aprire un'altra 'partita'!

    cmq la vedi è un mondo difficile :P