Alkampfer's Place

Il blog di Gian Maria Ricci
posts - 659, comments - 871, trackbacks - 80

My Links

News

Gian Maria Ricci Mvp Logo CCSVI in Multiple Sclerosis

English Blog

Tag Cloud

Article Categories

Archives

Post Categories

Image Galleries

I miei siti

Siti utili

Capacità di astrazione

Spesso la difficoltà di trovare un buon Analista dipende dalla difficoltà di astrarsi e di concentrarsi sul problema al fine di identificarlo al meglio possibile, per poi procedere a ragionare sulla soluzione solo in un secondo momento. Questo comporta spesso di iniziare a lavorare con specifiche faraginose o fortemente incomplete o addirittura sbagliate.

Quando il software arriva in fase di test, spesso i bug segnalati non sono veramente bug, ovvero non sono causati dall’implementazione o da una soluzione sbagliata, ma sono causati da specifiche sbagliate. In questo caso il tempo buttato via è spesso molto elevato, perché intere parti di software vanno rifatte.

Purtroppo spesso questo è il modo standard di procedere, si attende di avere il software in fase di test, quindi con tutte le specifiche implementate, per poi capire durante l’uso di test che le specifiche stesse sono sbagliate :(. In questo scenario sempre più sono convinto che usare Mockup della UI aiuta chi “sta ricoprendo il ruolo di analista” a ragionare con “qualche cosa sotto” per capire meglio il problema. Da una parte i mockup operano già nel dominio della soluzione, ma spesso far ragionare le persone sulle UI aiuta a “elicitare” i requisititi veri. Un buon analista dovrebbe quindi avere una eccezionale capacità di astrazione, in modo da poter effettuare ragionamenti sul dominio del problema, senza avere nulla di concreto in mano.

La cosa strana è che spesso, quando si chiede di spendere maggiore tempo sull’individuazione dei requisiti, la risposta è “abbiamo poco tempo, bisogna iniziare subito a scrivere del codice”, paradigma che è totalmente sbagliato perchè porta ad un allungamento dei tempi del progetto, spesso notevoli.

Purtroppo esiste ancora l’illusione che il codice scritto in “fretta e furia” sia la soluzione all’annoso problema di avere tempi di realizzazione stretti, senza capire che meno tempo si ha, meglio lo si deve usare.

L’ALM, questa tecnica sconosciuta.

Gian Maria.

Print | posted on martedì 30 agosto 2011 15:46 |

Feedback

Gravatar

# re: Capacità di astrazione

Come non quotarti in pieno.
Il mio attuale titolare è uno di quelli che arriva la mattina in ufficio con "una idea".
Solitamente produce per quell'idea uno schema in powerpoint con 4 o5 quadrati con all'interno nomi inglesi e frecce bidirezionali che li collegano tutti tra di loro.
Quella è la sua "analisi".
Inutile dirgli che a occhio e croce servirà almeno un anno di sviluppo. La risposta è sempre la stessa: "tra 4 mesi deve essere pronto in versione beta che lo devo vendere".
Nelle prime riunioni per spremergli le specifiche lui preferisce puntualmente parlare di "icone", "ajax", "webservices" etc... insomma, tutto tranne che le specifiche.
Dopo 2 riunioni, con specifiche totalemnte incomplete, solitamente chiede di "iniziare a scrivere codice".
Dopo 1 mese che si scrive codice non si sa bene per cosa arriva in ufficio con due scatoloni con un software tipo windev dicendo "Con questo fate prima perchè sul loro sito c'è scritto che si fanno i programmi senza nemmeno scrivere una riga di codice!!"
Ad ogni interazione ovviamente ne approfitta per aggiungere features totalmente inutili o per stravolgere la logica del programma.
E cosi via...
30/08/2011 17:59 | bugx
Gravatar

# re: Capacità di astrazione

Ottimo post!
30/08/2011 18:40 | Davide Mauri
Gravatar

# re: Capacità di astrazione

@bugx: ho avuto anche la tua esperienza, molto tempo fa. Io dopo un pò non ce l'ho più fatta ed ho mandato tutti a quel paese :)
30/08/2011 18:43 | Davide Mauri
Gravatar

# re: Capacità di astrazione

@gianluca: io uso balsamiq o sketchflow

Purtoppo il power point con quattro quadrati sembra essere una costante. Concordo infatti in pieno con luca quando dice "i membri del team hanno una idea sufficientemente chiara di cosa devono implementare e se é realistico pensare di farlo nel tempo disponibile per il prossimo Sprint".
30/08/2011 19:51 | alkampfer@nablasoft.com
Gravatar

# re: Capacità di astrazione

Complimenti, bel post.

L'esperienze che ho avuto in tal senso sono in effetti molto simili alle tue. Intervistare il cliente, e quindi spendere le giornate "che servono" per capire quantomeno i flussi aziendali, è visto da parte sua come un non-lavoro, o un ritardo nella partenza del lavoro vero e proprio, quasi un "volerci guadagnare su". Questo, purtroppo, a volte -più raramente- non solo da parte del cliente, ma anche da parte dell'interfaccia tecnica del cliente, cosa che un po' di tristezza te la lascia :)

Credo quindi che in queste situazioni "difficili" la qualità di un buon analista sia anche quella di saper portare l'intervistato sul piano corretto, e quindi riuscire a fargli dire esattamente cosa deve essere fatto, non come (o peggio, non come lo faceva "il software che c'era prima).

Comunque daccordo su tutto quanto scritto.

@bugx: pensa se il tuo titolare imparasse ad usare Visio o Project... :D
31/08/2011 00:25 | Francesco Milano
Gravatar

# re: Capacità di astrazione

@Nicola: secondo me è da distinguere bene il dominio del problema da quello della soluzione, nel senso che fino a che non si sono compresi i requisiti è abbastanza inutile scrivere codice. Il problema è che se nessuno si dedica a capire "cosa" deve fare il software, è inutile pensare a "come" farlo.

Puoi usare qualsiasi tecnica tu voglia, ma se non soddisfi le esigenze del cliente/utente/stakeholder hai fallito miseramente :).

Evans quando parla di DDD punta sul fatto che l'importante è capire il problema, calarsi nel dominio, ed avere sempre un supporto di un Domain Expert :), in molti casi invece quattro slide di powerpoint sono tutta la conoscenza che si ha del dominio quando si inizia a scrivere codice :(. La frase illuminante è appunto "Good programmers write code that humans can understand", questo perchè se dai in mano ad un Domain Expert un DSL calato sulla sua realtà, lui sarà molto più in grado di darti specifiche.

Purtroppo per esperienza personale, il 60%-70% dei problemi che si incontrano nei progetti derivano da una cattiva analisi.

31/08/2011 12:08 | alkampfer@nablasoft.com
Gravatar

# re: Capacità di astrazione

Concordo su tutto, prima di tutto le User Stories, poi i Casi D'uso che aiutano a sviscerare meglio cosa bisogna fare per soddisfare le User Stories, e siamo quindi arrivati al punto :), purtroppo troppo spesso la gestione dell'ALM si riduce a

4 slide di PP in croce -> sviluppo (con contatto con clietne nullo) -> delirio per deploy -> delirio X 10 per la manutenzione

o ancora peggio

200 pagine in word + 100 slide in powerpoint -> sviluppo (Big Design Up Front, si fallisce sempre) -> delirio per lo sviluppo -> etc etc.

invece di adottare un

colloquio con il cliente -> user stories -> mettere in contatto analista/ cliente / dev e fare le user stories -> iniziare lo sviluppo (mantenendo il contatto con il cliente) -> Continuous integration -> feedback continui dal cliente -> torna al punto 1 e aggiorna il tutto al livello di comprensione attuale



01/09/2011 16:37 | Gian Maria
Gravatar

# re: Capacità di astrazione

> Refactoring: Improving the Design of Existing Code

Ovvero penso che ci sia da districare una certa confusione fra analisi e disegno...

In bocca al lupo, ;)

-LV
06/09/2011 05:42 | LudovicoVan
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET