Tutti gli articoli di michele.ferracin

Messaggi di errore

Ho sempre avuto un particolare interesse per i messaggi di errore. Ritengo che un software a qualunque livello (app per smartphone, l’app della tua azienda, il gestionale per la fatturazione del negozio sotto casa) debba avere i messaggi di errore che siano utili per l’utente finale (anche per il servizio assistenza se necessario o coerente con l’ambito d’utilizzo) e non fargli venire voglia di spaccare lo schermo.

IC725769
Un messaggio di errore frustrante

Niente è più demotivante di un messaggio di errore che dice tutto/niente, lasciandoti a bocca asciutta e che non ti guida verso la risoluzione del problema. I messaggi di errore frustranti fanno venire voglia di disinstallare il programma e sconsigliarne l’uso a colleghi-amici-parenti. Siccome la differenza la fanno i dettagli, quando vedo dei messaggi di errore ben scritti faccio sempre mentalmente i complimenti a chi ha creato il software.

Per messaggio di errore si intende:

Un avviso all’utente riguardo un problema che è già accaduto.

I messaggi di errore sono quindi da distinguersi rispetto alle dialog box, ai messaggi di avviso e alle conferme.

Il primo problema con i messaggi di errore è che ci sono troppi modi per farli sbagliati: troppo tecnici, troppo generici, che accusano l’utente, troppo rossi, con le scritte maiuscole, con troppo informazioni buttate alla meno peggio e via dicendo.

Perciò quando è il mio turno di scrivere dei messaggi di errore faccio il meglio che posso per renderli dei gentili avvisi per l’utente provando a renderli:

  • Informativi in un linguaggio comprensibile ai non tecnici e inerenti al dominio del problema;
    • Esportazione del bilancio non riuscita per sovraccarico del sistema, riprovare tra qualche minuto è meglio di Esportazione dei dati non riuscita per un timeout della richiesta al server;
  • Essere concisi;
  • Fornire informazioni su come venirne fuori;
  • Il pulsanti/le scelte devono avere un testo che sia un verbo d’azione che fa riferimento esplicito a come l’utente sceglie di arginare il problema, tipo: Annulla, Riprova, Conferma, Ho capito, Continua (da evitare i classici OK / Sì / No);
  • Contenere informazioni di aiuto per il reparto tecnico di assistenza, visibili all’utente tramite progressive disclosure.

Degli ottimi messaggi di errore si trovano in Git:

 

Cattura
Esempio di errore per comando non esistente in Git.

 

Cattura
Messaggio di errore di Git del comando add

 

I miei buoni propositi per i messaggi di errore non riesco sempre a mantenerli, ma è un argomento che mi sta a cuore e per questo cerco di fare meglio al messaggio successivo (o revisionando quelli vecchi).

Riferimenti

MSDN – https://msdn.microsoft.com/en-us/library/windows/desktop/dn742471(v=vs.85).aspx

Apple – https://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/OSXHIGuidelines/WindowAlerts.html

 

Il club delle 6

“Perché non si iscrive al ‘Club delle sei’?”

“Il ‘Club delle sei’?” chiese un po’ sconcertato.

“Caro ragazzo”, spiegai, ” Beniamino Franklin afferma che pochissimi tra gli uomini giunti al successo indugiavano tra le coltri al mattino. In base a questo principio io anticipai di un’ora e mezzo la mia sveglia e ciò mi consentì di dedicare un’ora completa alla lettura e allo studio. […]”.

wall_clock_sixQuesto è un estratto preso dal libro Il venditore meraviglioso di Frank Bettger. Ne consiglio la lettura anche se non si è tra gli addetti ai lavori di vendita (nemmeno io lo sono): è ricco di concetti su come trattare (con) le persone che si posso applicare a tutti gli ambiti astraendo i concetti specifici.

Non credete che un’attenta pianificazione e il suo rispetto scrupoloso possano portare a risultati grandiosi? Io penso di sì e credo possa essere applicato a qualsiasi settore: dal personale, allo sportivo, al professionale. Vi dirò di più, credo sia proprio questa la chiave per “concludere le cose” e arrivare a fine giornata sentendosi soddisfatti.

P.S.: il post era doveroso perché questo trafiletto ha dato il via a tutta una serie di meccanismi e pensieri che si sono concretizzati anche con la nascita di questo blog.

Invece di…

Un collega ha comprato qualche settimana fa SQL Server 2014 Unleashed. È uno dei soliti libro-mattone che potresti usare come fermaporte nelle giornate più ventose. Lo sfogliamo casualmente durante le pause caffè o altre occasioni in cui si stacca dal monitor per prendere fiato. Così mi sono imbattuto nel capitolo dei trigger, in particolare nella sezione degli instead of trigger.

Scopro un mondo parecchio interessante, dei trigger che scattano prima delle effettive operazioni sui dati: a differenza dei trigger tradizionali che scattano ad operazioni eseguite (chiamati trigger AFTER). Nel dettaglio:

  1. Viene recepito un comando DML;
  2. Scatta trigger INSTEAD OF;
  3. Scattano controlli CHECK;
  4. Scatta trigger AFTER.

Esempio:

CREATE TRIGGER dbo.TI_PERSONE_CONTROLLI ON dbo.PERSONE INSTEAD OF INSERT

In un primo momento non ne trovo un’applicazione che potrebbe fare al caso nostro e archivio la questione.

Verso sera capita che abbiamo problemi di spazio su disco presso un cliente. Delle verifiche ci portano a scoprire che una tabella di log è esageratamente grande e popolata erroneamente da un bug di un programma di scambio dati. Il bug era di semplice risoluzione ma per vari motivi era impossibile sostituire il programma nel server. Amari estremi, estremi rimedi:

TRUNCATE TABLE LOG;
CREATE TRIGGER dbo.TI_LOG_ANNULLA_INSERT ON dbo.LOG INSTEAD OF INSERT
AS
BEGIN
	PRINT ''
END;

Il giorno successivo abbiamo sostituito il programma di scambio dati e distrutto il trigger instead of.yes

Riferimenti

MSDN https://msdn.microsoft.com/en-us/library/ms189799.aspx

 

Letture consigliate

 

Ultimo aggiornamento di questa lista: Agosto 2016.

Code Complete 2

20160813_093907251_iOS.jpg
La mia copia di Code Complete.

 

Code Complete di Steve McConnell è da me soprannominato la Bibbia della programmazione. Se lo leggi, e lo rileggi, significa che molto probabilmente tieni a fare bene il tuo lavoro e con professionalità e vuoi migliorare. In questo libro, l’autore dice che il programmatore medio legge meno di un libro tecnico all’anno. Bene, leggendolo ti porterai già sopra questa media. E in senso buono.

The Mythical Man-Month

 

mythical-man-month
La copertina di The Mythical Man-Month.

 

Forse uno dei pochi classici del genere informatico. Il libro racconta la storia dello sviluppo e del team che l’ha sviluppato di un ormai più che obsoleto sistema operativo dell’IBM.

Questo libro è un caso eclatante di come i computer cambino ma le persone no. Anche se sono passati più di venti anni da quanto scritto nelle pagine, sono sicuro che troverai riferimenti a quanto succede nella tua normale quotidianità.

Come trattare gli altri / e farseli amici

 

20160813_093923635_iOS.jpg
La mia copia di “Come trattare gli altri e farseli amici”.

Il mio interesse per il lato umano del lavoro del programmatore mi ha portato a conoscere questa pietra miliare della comunicazione e delle relazioni col prossimo. Dale Carnegie scrisse questo libro nel 1936. È un concentrato di tutta la sua esperienza decennale fatta di studi, ricerca e docenza nel campo della comunicazione. Se ognuno di noi fosse in grado di applicare a che solo un decimo di quanto riportato qui dentro, potrei scommettere che vivremo in un mondo molto migliore.

 

 

Inizio

Il primo post.

Lo sto scrivendo con mia figlia in braccio mentre va un video di canzoni per bambini. Potrebbe essere di buon auspicio! È il secondo progetto di un blog che inizio. Il primo anni fa non mi aveva convinto ed è morto dopo poche settimane. Adesso sono molto più entusiasta e mi sento carico.