cliente

Requisiti e maieutica

Il filosofo greco Socrate affermava di essere come un'ostetrica, dato che cercava di portare alla luce le conoscenze che i suoi interlocutori portavano già dentro di sé, ma non avevano ancora chiare, non avevano ancora tirato fuori.

Lo faceva attraverso il dialogo, discutendo, come testimoniato dalle opere pubblicate dal suo allievo Platone. Facendo delle domande. Prima generali, poi via via più approfondite. Come deve fare chi vuole chiarire i requisiti per un sistema da sviluppare o fare evolvere.

Chiarire i requisiti è necessario, per chi li deve soddisfare. Li vogliamo precisi. Ma i requisiti non nascono già chiari, precisi, completi nella testa di qualcuno. Sono sempre il risultato di un dialogo, di un processo di interazione. Non potrebbe essere altrimenti.

Chi chiede il sistema, o la nuova versione del sistema (chiamiamolo “cliente”) ha un'esigenza e la manifesta. Ma non è, se non in casi particolari, un esperto di progettazione dei sistemi, non conosce tutti gli aspetti di cui è necessario tener conto per valutare fattibilità e impatto, non sa quanto possano costare le diverse soluzioni possibili per soddisfare la sua esigenza, non ha risorse infinite.

Il suo interlocutore (chiamiamolo “analista”) ha il compito di aiutarlo a chiarirsi le idee. Di aiutare il cliente a capire i costi e i benefici di ciò che sta chiedendo, i contro e i pro, i rischi e le opportunità. Dialogando.

Condurre il dialogo tra “analista” e “cliente” per chiarire i requisiti è un'arte, non una scienza. Un'arte che si apprende, con lo studio e con l'esperienza. Si tratta di fare le domande opportune, di usare un linguaggio comprensibile anche sugli aspetti meno intuitivi per chi non ha competenze tecniche, di stimolare la riflessione, di accompagnare i ragionamenti.

Per fortuna, alcuni decenni di esperienze nello sviluppo dei sistemi hanno messo a disposizione degli analisti delle tecniche valide, come i workshop sui requisiti, l'analisi degli scenari di operatività utente (casi d'uso), la quantificazione dei livelli di servizio sugli aspetti non funzionali (prestazioni, carichi, sicurezza, …), la valutazione di prototipi delle interfacce utente.

Queste tecniche possono aiutare l'analista a svolgere la propria attività maieutica, a guidare il chiarimento dei requisiti in modo non solo efficace, ma anche rapido ed efficiente, perché il tempo e le risorse che abbiamo a disposizione per chiarire i requisiti sono sempre più limitati.

E sono tutte tecniche basate sul dialogo, sulla formulazione di domande, sull'analisi delle risposte (feedback), sul fare emergere velocemente punti di attenzione e sull'aumento progressivo del livello di precisione e di chiarezza.

Il servizio fa vendere

Molte aziende sono abituate a vedere il servizio di supporto post-vendita principalmente come un costo. E' un errore, secondo Gerry McGovern, esperto di content management.

"Il servizio è il nuovo modo di vendere. Il servizio è il nuovo marketing. Con il progredire dell'automazione, i prodotti diventano sempre più uguali. È il servizio che vi distinguerà sul mercato. È per il servizio che farete la prossima vendita."

Categorie: 

Il ruolo di committente

Nei progetti di sviluppo software il ruolo di committente è essenziale.
È il ruolo che di solito esprime la richiesta da cui avrà origine il progetto, legata a precisi obiettivi di business. Decide i principali requisiti che guideranno lo sviluppo, e che dovranno essere coerenti con quegli obiettivi. Alla conclusione del progetto, è il committente che accetta il prodotto finale.

Anche durante il progetto è il committente che deve prendere le decisioni più rilevanti. Spetta infatti a lui (o lei) decidere quali funzionalità e quali caratteristiche rientrano nei confini del progetto, e quali no. E quali sono i limiti di costo sostenibili ed i vincoli temporali da rispettare.

Quando poi una delle tre variabili principali di progetto (cose da fare, tempi e costi) cambia in corso d'opera, per effetto di eventi non previsti all'inizio, diventa necessario valutare gli impatti del cambiamento. La decisione su cosa sia opportuno variare come conseguenza diventa cruciale, ed è nuovamente di competenza del committente.

Se ad esempio emerge durante il progetto la necessità di realizzare una funzionalità inizialmente non prevista, bisogna valutare se sia possibile aumentare i fondi necessari per svilupparla, se dilazionare i tempi di rilascio, se aggiungere la nuova funzione eliminando o rimandando altre funzioni previste inizialmente, ma meno urgenti.

Decisione che spetta di diritto al committente, perché riguarda considerazioni legate agli obiettivi di business che solo lui può valutare in modo completo, e che rientrano nelle sue responsabilità.

Analogamente spettano al committente le decisioni da prendere quando si verificano casi di ritardo nei tempi di sviluppo: conviene spostare in avanti la data di rilascio del prodotto o mantenere la data prevista inizialmente, riducendo le funzionalità del prodotto precedentemente concordate?

Dal momento che il committente è il ruolo che prende le decisioni più critiche per il progetto (compresa, se e quando è il caso, quella di interromperlo), si tratta di un ruolo indispensabile, e deve essere chiaro a tutti chi lo riveste per tutta la durata del progetto stesso.

Uno dei fattori di rischio più pericolosi in un progetto di sviluppo software è la situazione in cui non è chiaro chi abbia il ruolo di committente, o in cui la persona ufficialmente designata a svolgere tale ruolo non abbia la capacità, la volontà o l'autorità sufficienti a prendere le decisioni quando diventa necessario farlo.

Il problema, in casi simili, è che il committente è un ruolo difficilmente sostituibile. In situazioni progettuali in cui altri ruoli sono svolti in modo poco efficace, si può far fronte con degli interventi correttivi in corso d'opera, come affiancamenti o sostituzioni; è invece improbabile che si possa invece intervenire con correzioni quando ad essere debole è il committente.

Tecno austerità

"Meno è meglio".

"I tecnologi si stanno risvegliando ai vantaggi del minimalismo, per due motivi: il fastidio per l'eccessivo numero di funzionalità dei prodotti da parte dei clienti che vogliono solo che le cose funzionino, e una forte richiesta da parte di clienti meno ricchi provenienti dai paesi in via di sviluppo."

The Economist, 12 giugno 2010.
Categorie: 

Al prezzo più basso

Nelle gare d'appalto, spesso vince il fornitore che offre il prezzo più basso. E cominciano i guai, dato che "offerte e stime troppo basse sono spesso indicative di una scarsa competenza".

"How to avoid selecting bids based on overoptimistic cost estimates", è un articolo di Magne Jorgensen, pubblicato su IEEE Software May/June 2009.
L'articolo riporta i risultati di una serie di studi e sondaggi, e offre una serie di raccomandazioni utili per il processo di selezione.
Categorie: 

Product Owner

Il Product Owner è uno dei ruoli principali di Scrum, uno dei processi agili più diffusi.
In italiano, lo si può tradurre come "proprietario del prodotto", o "responsabile del prodotto".

Dal punto di vista di chi sviluppa software, corrisponde in linea di massima al ruolo di "committente", cioè di chi ha la responsabilità di decidere i requisiti da soddisfare, le priorità di realizzazione, l'accettabilità dei risultati forniti dagli sviluppatori.

Certamente è il ruolo più importante per il successo di un prodotto, di un sistema. Ma è arduo da svolgere, perché non esiste un percorso formativo per diventare Product Owner, e può capitare che il ruolo non sia riconosciuto in termini di autorità e responsabilità all'interno delle organizzazioni.

Sul ruolo di Product Owner, uno scritto interessante di Jeff Patton.
Categorie: 

Lo saprò quando lo vedrò

Barry Boehm - Making a Difference in the Software Century

Un eccellente articolo su IEEE Computer, marzo 2008 (in realtà, si tratta di un estratto della introduzione scritta da Boehm per l'antologia dei propri scritti, pubblicata nel 2007 da IEEE CS Press-John Wiley & Sons ).


Riporto un paio di passi.

Il primo, sulla difficoltà per gli utenti di chiarire i requisiti in anticipo :

"Spesso, quando si chiede agli utenti di specificare come vorrebbero interagire con una nuova applicazione, essi rispondono “Lo saprò quando la vedrò” (IKIWISI - I’ll Know It When I See It). In questi casi, usare un modello a cascata sequenziale, specificare-prima-i-requisiti, diventa di solito la ricetta per un sistema inefficace e per un mucchio di costosi rifacimenti".


Il secondo, sul conflitto tra punti di vista ed interessi tra gli stakeholder di progetto:

"Il fatto che ci siano molti conflitti potenziali tra i principali stakeholder significa che il progetto può entrare in situazioni in cui uno vince e un altro perde. E una situazione del genere di solito diventa una situazione in cui perdono tutti.

In situazioni simili è importante gestire le aspettative degli stakeholder, lavorare di più per assicurare che la soluzione proposta sia fattibile e adeguata agli interessi di tutti, e negoziare un insieme globalmente soddisfacente e vantaggioso di specifiche, piani e risorse, prima di procedere con lo sviluppo. Quando si negoziano i requisiti, nei momenti iniziali è meglio sostituire termini che possono essere interpretati come non negoziabili, ad esempio il termine 'requisiti' (cose richieste con autorità e diritto) con parole come 'obiettivi' e 'scopi'."

Il cliente - Mahatma Gandhi

Nell'inserto speciale dell'Economist sull'e-government, una citazione del Mahatma Gandhi:

"Who is the customer? The customer is the most important visitor on our premises. He is not dependent on us. We are dependent on him. He is not an interruption of our work. He is the purpose of it. He is not an outsider in our business, he is part of it. We are not doing him a favour by serving him. He is doing us a favour by giving us an opportunity to do so."

La citazione è tratta da un discorso tenuto da Gandhi in Sudafrica, dove svolse attività come avvocato negli anni tra il 1893 ed il 1895.
Categorie: 

La partecipazione degli utenti ai progetti

Erica L. Wagner and Gabriele Piccoli:"Moving Beyond User Participation to Achieve Successful IS Design" in Communications of the ACM, december 2007

L'articolo mette in luce con estrema chiarezza uno dei nodi principali dello sviluppo software.

"We suggest that rather than fighting human nature by trying to force the participation of user groups throughout a project, we should broaden our thinking about development and implementation methodologies to reflect what happens in practice. We find that in practice user participation can be most powerful after ‘go live’ when users are truly engaged.

[...] we acknowledge it will be difficult to fully engage users before the software begins to affect their daily lives, which are generally at ‘go live.’ Yet, we are not suggesting there is no value in user involvement via prototyping or phased roll-out techniques. When properly implemented, these techniques can help increase communication, provide some valuable feedback in the design process, and generally improve goodwill on the user side. But it is critical to recognize that trying to force engagement of user groups throughout a project goes against human nature. We should therefore expand our thinking about the stages of the systems development life cycle, and incorporate this broadened perspective into whichever methodology is used.
We need to recognize that implementation extends beyond “flipping the switch.” Legitimizing the post-implementation activities that are often kept as a shameful secret — a sign of project failure — will help to manage expectations and avoid much of the conflict that erodes trust between the user community, project champions, and the development team by more naturally mimicking human behavior.

[...] It is time to speak honestly about the gap between our intentions to build working systems and our ability to do so in practice. This gap is typically not caused by a lack of effort on behalf of developers or users, but rather is the result of misdirected efforts. The systems development and implementation process will continue to be overly challenging if we work against the tide by trying to make users fit our theories of how and when they should participate in development initiatives."

Lean and contracting situations - Mary Poppendieck

post il 3-1-2007 RE: [leandevelopment] Budgeting a Lean Project

Tal,

It seems that you are in a contracting situation, as opposed to developing software for use within your own organization. If I can make that assumption, then I would suggest that lean principles are not particularly viable unless lean contracting is also part of the equation. When you reach organizational barriers and lean organizations run up against non-lean organizations, it is often impossible for the supplier to act in a lean manner.

As an example, many automotive suppliers have adopted lean practices in order to supply Toyota. The lean areas of their plants are much more efficient and cost-effective, but they are usually not able to supply other automobile companies with the lean area of the plant – they have to maintain a non-lean (and less efficient) area of the plant to serve those other customers. Why? Because the Detroit automotive companies still want parts delivered in large batches – they thin the economies of scale are the dominating factor in their business, despite decades of evidence to the contrary.

Similarly, if you have customers that believe that accumulating huge batches of detailed requirements is the most efficient way to contract with suppliers, then you may have to operate in a non-lean way with those customers. When you find customers that want a lean supplier, you can partner with them in a lean way, and as the automotive suppliers found out, deliver better, more cost effective software. However, in general, the choice lies with the customer, not the supplier.

Mary Poppendieck
Subscribe to RSS - cliente