Cerchiamo astrazioni, possibilità per semplificare, sintetizzare e ridurre a princípi primi ad ogni angolo. La ricerca dell’astrazione è talmente presente che in Java, ad esempio, abstract è una parola chiave del linguaggio e indica classi o metodi privi, in parte o completamente, di implementazione: indicano che cosa ci si aspetta che faccia il codice senza dire nulla sul come; in astratto, appunto. Secondo alcuni un termine più adatto è generalizzazione ma sto divagando: il punto che voglio evidenziare è l’atteggiamento di fondo nella programmazione.
Parte di questa ricerca è legata ai termini. L’utilità dei pattern, ad esempio, sta anche nel trovare il nome adatto: “qui ho usato un visitor”, “i singleton sono da evitare” e così via. E in molti libri sul design del software si enfatizza (troppo, secondo me) l’importanza della nomeclatura per i metodi e le classi.
Non dobbiamo però dimenticare che gli utenti spesso la vedono nel senso esattamente opposto, usano il termine più specifico e più concreto. Soprattutto a livello di interfaccia, usano le parole che meglio descrivono azioni e oggetti che hanno sott’occhio in quel momento. Certo, parte della difficoltà del design del software consiste proprio nell’allineare le proprie astrazioni con quelle dell’utente, ma non dobbiamo dimenticare che sono solo queste ultime (le astrazioni dell’utente) quelle che alla fin fine contano.
Prendiamo ad esempio Get Satisfaction. Si nota lo sforzo di usare una terminologia il più possibile adatta all’utente: il form principale fa di tutto per non sembrare tale e usa un approccio graduale per non scoraggiare gli utenti.




All’inizio, quando ho cominciato a dare un’occhiata al sito qua e là, ho trovato i termini e le frasi un po’ ridondanti, ansiosi di essere friendly, ma la direzione è quella giusta.
Viceversa, mi ricordo di un prototipo di un’applicazione di qualche tempo fa, in cui l’azione per creare dei record, qualsiasi record, era chiamata, indistintamente, “Nuovo oggetto”. È un’astrazione? Certo, ed è quella del tipo giusto: l’azione è sempre la stessa ed è semplicemente applicata ad oggetti diversi; tuttavia, non è un’astrazione che dev’essere esposta all’utente.
Se si lavora in squadra e ci occupiamo solo di una parte di un’applicazione tutta questa tirata non ha molta importanza, ma se abbiamo a che fare con diverse parti, soprattutto se sono vicine all’interfaccia, la questione cambia e richiede un certo sforzo per adottare due atteggiamenti mentali che vanno conciliati.