Gmail nie pyta „czy na pewno wysłać?”. Wysyła i daje kilka sekund na cofnięcie. Zero monitów, zero zmęczenia — a skutek dla użytkownika lepszy niż przy pytaniu.
Powód jest w czasie. Pytanie przed wysyłką pada wtedy, gdy jeszcze nie widzisz błędu. Okienko „cofnij” pojawia się dokładnie w chwili, gdy błąd rzuca ci się w oczy.
Czym jest nieodwracalność operacji
Operacja jest nieodwracalna gdy jej skutku nie da się wycofać po tym, jak stał się widoczny poza systemem.
Kluczowe jest to przesunięcie punktu odniesienia. Nie liczy się czy da się przywrócić stan techniczny, tylko czy da się cofnąć konsekwencję. Wysłany mail można usunąć z serwera, ale nie z pamięci odbiorcy. Zapis do pliku authorized_keys jest technicznie odwracalny, a praktycznie nie — klucz atakującego zdążył posłużyć.
Dlaczego to jest kryterium podziału zgód
Nieodwracalność jest lepszym kryterium niż typ operacji czy poziom uprawnień, bo odpowiada wprost na pytanie o koszt pomyłki.
Operacje odwracalne nie potrzebują bramki. Zapis z kopią w katalogu tymczasowym, commit bez pusha, draft wiadomości — każde z nich wymaga logu i przycisku cofnięcia, nie pytania. A uwaga zaoszczędzona na operacjach odwracalnych jest dokładnie tą, której zabraknie przy nieodwracalnych.
Zasada Raskina
Aza Raskin sformułował to w 2007 roku: nigdy nie używaj ostrzeżenia, kiedy masz na myśli cofnięcie. Jeśli dokładasz ostrzeżenie bo boisz się, że użytkownik zrobi coś czego pożałuje, to zwykle nie potrzebujesz ostrzeżenia — potrzebujesz undo.
Ten sam tekst wskazywał habituację jako powód, dla którego ostrzeżenia przestają działać. Zjawisko opisane w magazynie o projektowaniu stron, zanim powstał iPhone.
Warunek
Cofnięcie musi być realne, nie deklarowane. Przycisk „cofnij” przy operacji której skutek już wyszedł na zewnątrz jest gorszy niż jego brak, bo daje złudzenie odwracalności tam gdzie jej nie ma.
Przy projektowaniu warto wyznaczyć moment przekroczenia granicy dla każdej klasy operacji agenta i zapisać go jawnie. To ten moment, a nie typ operacji, decyduje o tym gdzie postawić zgodę.