W rzeczywistości to pytanie dotyczy środków ostrożności, które należy podjąć w celu poprawy jakości obsługi użytkowników i ograniczenia możliwych do uniknięcia wezwań pomocy.
maintenance
bug
user-experience
Maniero
źródło
źródło
Odpowiedzi:
Brak prawidłowego sprawdzania poprawności danych wejściowych jest jedną z tych rzeczy, które prowadzą dość szybko do użytkowników, którzy robią „złe” rzeczy z twoją aplikacją, kiedy programista naprawdę powinien to zrobić.
Widziałem starsze aplikacje, w których użytkownicy zostali przeszkoleni w zakresie:
a-z0-9,
email
polu wpisano poprawnie sformatowany adres e-mail , w przeciwnym razie kolejne mailingi do tego użytkownika będą wykorzystywać wszystko, co jest w polu i nie powiedzie sięhttp://
” jest umieszczone przed adresami internetowymiitd itd
Wszystkie powyższe problemy powinny być rozwiązywane przez programistę aplikacji. Kiedy weryfikacja danych wejściowych jest zasadniczo „upewnij się, że użytkownik wie, w jakim formacie powinno być to pole, i zaufaj temu, co wpisał, że jest poprawny”, wtedy nieoczekiwane rzeczy z pewnością znajdą drogę do aplikacji. Oprócz oczywistych konsekwencji dla bezpieczeństwa użytkownicy popełniają błędy. Jako programiści często produkujemy nasze najlepsze produkty, pochylając się do tyłu, aby upewnić się, że użytkownik nie może się pomylić, niezależnie od tego, jak bardzo się starają!
źródło
http://
punktu weryfikacji. Na przykładASDF
robi to w naiwny sposób, w wyniku czego nie można hostować pakietów w domenach, które z nich korzystająhttps://
.Kiedyś dostałem telefon do działu obsługi klienta, ponieważ moja aplikacja właśnie zniknęła. Okazało się, że otworzyli na nim kolejną aplikację.
... postanowiłem nie dopilnować, aby to się nie powtórzyło, ponieważ przyczyną problemu był analfabetyzm użytkowników, a nie aplikacja. Wszystko, co mogłem zrobić, aby to naprawić, doprowadziłoby do pogorszenia komfortu użytkowania dla innych.
źródło
Prawie każdy program, który piszę, jest wywoływany ściśle z wiersza poleceń. Napisałem też kilka bardziej wymyślnych rzeczy, które zaczęły się jako interfejsy CLI i szybko przerodziły się w coś bardziej przypominającego powłokę niż cokolwiek innego.
Mogę mówić tylko o tym, co wiem. Oto kilka typowych problemów z programami wiersza poleceń:
O wiele za dużo opcji
O ile nie piszesz kompilatora lub edytora wierszy, staraj się, aby opcje były ograniczone do jednego ekranu pełnego w buforze klatek 80x25, gdy
--help
lub/?
zostanie przekazany. Jest całkiem dobrze mieć więcej opcji, ale podzielić je na podkategorie. Na przykładfoo --help
foo --help option_name
Bez długich opcji
O wiele łatwiej jest pamiętać
foo --attach_to [argument] --volatile --verbose
niż pamiętaćfoo -a [arg] -v +V
. Nie zawsze jest to możliwe, ale w większości przypadków tak jest.Brak sprawdzania poprawności danych wejściowych
Prawie każda platforma ma wiele bibliotek, które są wypróbowane, przetestowane i prawdziwe, jeśli chodzi o parsowanie i sprawdzanie poprawności argumentów. Prawie każda platforma ma wypróbowany, przetestowany i prawdziwy leksykon, który weryfikuje dane wejściowe z interfejsu CLI. Użyj jednego, drugiego lub obu. Jeśli Twój program segreguje się lub dzieli przez zero z powodu czegoś, co podał użytkownik, to tylko zawstydzające.
Być może nie potrzebujesz czegoś tak skomplikowanego jak leksykon, być może możesz po prostu tokenizować ciąg, jeśli oczekujesz rzeczy w określonej kolejności z pewnymi rzeczami w niektórych miejscach.
Dostałem raport o błędzie, gdy oczekiwano liczby całkowitej i ktoś wpisał
f*** my life
cudzysłowy. Nie napisałem tego programu, miałem nieszczęście go odziedziczyć.Brak pokrętła „gadatliwości”
Pozwól doświadczonym użytkownikom łatwo odkryć, w jaki sposób uzyskać znacznie więcej hałasu z twojego programu, niż większość ludzi tolerowałaby, ale domyślnie drukuje tylko poważne i krytyczne rzeczy. Nie mogę Wam powiedzieć, ile razy musiałem odpalać,
strace
żeby zdać sobie sprawę, że coś się nie udało, bo działało na strumieniu plików NULL.Możesz także owijać twierdzenia, tak aby wyłączenie ich za pomocą NDEBUG lub w inny sposób nadal skutkowało wydrukowaniem lub zalogowaniem przez użytkownika do znalezienia.
Mówiąc o plikach dziennika, postaraj się upewnić, że wszystko, co w nich umieścisz, ma sens (przynajmniej trochę) dla kogoś innego niż ty. Jeśli początek każdego wpisu jest datą epoki UNIX, spotęgujesz frustrację u kogoś, kto naprawdę chce pomóc w odtworzeniu błędu.
W trybie debugowania nie ma „kumpla błędów”
Wiele programów oferuje pewien rodzaj przełącznika „debugowania”, który oferuje dodatkową gadkę na temat tego, co się dzieje z programem, ale bardzo niewiele oferuje następujące opcje:
A może lubisz słyszeć, jak ludzie czytają przez telefon:
Zbyt skomplikowane pliki konfiguracyjne
Nie usprawiedliwiaj potrzeby analizowania konfiguracji jako pretekstu, aby uzyskać gwarancję dużej ilości cukru syntaktycznego. Spróbuj użyć formatu, który ludzie znają, nawet jeśli oznacza to dodatkową pracę podczas analizowania. Staram się używać formatu INI, gdy tylko jest to możliwe. Zdziwiłbyś się, co możesz zrobić za pomocą prostego słownika klucz-> wartość.
Brak plików konfiguracyjnych
Nie zmuszaj ludzi do pisania skryptów powłoki lub plików wsadowych tylko w celu korzystania z programu, chyba że miał on być narzędziem do któregoś z zadań. Daj mi sposób, aby wskazać plik zawierający moje zwykłe opcje i podać tylko kilka dodatkowych argumentów.
Brak oznak „mokrej podłogi”
Jeśli jakaś funkcja może wpędzić użytkownika w kłopoty (być może jest dostępna dla zaawansowanych użytkowników), wyraźnie to zaznacz. Dodatkowo, jeśli ktoś gruby palec wprowadzi coś lub zapomni coś, program wydrukuje bardzo przyjazny link do dokumentacji on-line. Być może masz do czynienia z kimś, kto używa twojego programu przez KVM i nie może wycinać i wklejać.
Jeśli to możliwe, (zbiega się to z weryfikacją danych wejściowych) użyj apletu Google:
Oferuj wyjście z destrukcyjnych instrukcji
Celem jest poinformowanie użytkownika, dlaczego to nie zadziałało, i poproszenie go jeszcze kilka razy, przy jednoczesnym zapewnieniu, że nie zrobisz nic potencjalnie destrukcyjnego, chyba że wydaje się, że użytkownik naprawdę tego chce. Zezwól na przełącznik, który wyłącza „dokuczanie”, na przykład
-Y
lub w/Y
inny sposób umożliwi wyjście dla kogoś, kto po prostu ma „grube palce”.Prawdopodobnie zapominam o kilku wskazówkach. Radzę sobie z tym często, ponieważ bardzo, bardzo trudno jest stworzyć interfejs „niskiego poziomu” dla czegoś wystarczająco intuicyjnego, aby większość ludzi unikała błędów.
źródło
„Czy na pewno chcesz usunąć ten plik / rekord? Tak / Nie”. Kliknąłem tak, a następnie dostałem telefon, że „omyłkowo” kliknął czerwony przycisk usuwania i potrzebuje tych danych z powrotem :)
źródło
Nie wydaje mi się, że uzyskanie konkretnych przykładów break / fix jest tak ważne, jak uświadomienie sobie tego:
Jeśli podczas tej eksploracji coś zepsują, jako programista Twoim zadaniem jest albo ostrzec ich przed niebezpieczeństwem, albo przede wszystkim zapobiec jego wystąpieniu. Nie pamiętam, gdzie to teraz widziałem, ale w myślach zawsze staram się „ ułatwiać robienie właściwych rzeczy ” użytkownikom mojego oprogramowania.
Jeśli nalegasz na przykłady:
Widzisz dokąd to zmierza? :)
źródło
Oto jedna, którą usłyszałem w tym tygodniu. Użytkownik prosi o funkcję „wyślij mi powiadomienie, gdy wystąpi zdarzenie”. Dość proste, a programista kontynuuje i wdraża go. Jasne, pierwsze pytanie powinno brzmieć „co próbujemy rozwiązać za pomocą tego powiadomienia?”. Nie wejdę w to. Kilka dni później użytkownik zatrzymuje się przed deweloperem i pyta: „Otrzymałem to powiadomienie. Co mam z tym zrobić?”.
Przypomniałem sobie ten komiks Dilberta i zasugerowałem programistom „napisanie aplikacji, aby dowiedzieć się, co użytkownik powinien zrobić z tym powiadomieniem”.
Jak powiedział mpeterson, użytkownik jest bardzo konkurencyjny w swojej dziedzinie. Po prostu nie myślą jak programista lub projektant.
źródło
Nie sądzę, że użytkownicy są głupi. Nie chcą w ogóle używać Twojego ani żadnego programu. Wszystko, czego chcą, to załatwić swoje sprawy. Pomóż im i nie dopuść do krzywdy, która im się przydarzy po drodze.
źródło
Posiadanie dobrego interfejsu użytkownika i zapewnianie odpowiedniego doświadczenia edukacyjnego znacznie przyczynia się do powstrzymania użytkowników od robienia złych rzeczy.
Dobre interfejsy użytkownika powinny być beztarciowe.
Zamiast wyskoczyć okno dialogowe (kosztowna operacja, którą użytkownicy ignorują po pewnym czasie), aby potwierdzić usunięcie, wykonać usunięcie i zaoferować sposób cofnięcia.
Dobre interfejsy użytkownika powinny być możliwe do wykrycia.
Chociaż wstążka w pakiecie Microsoft Office jest bardzo luźna, ponieważ zmusza starych użytkowników programu Word do zmiany sposobu działania, wstążka jest świetnym przykładem tego, w jaki sposób można uczynić interfejs wykrywalnym (tj. Łatwym do wykrycia).
Dobre interfejsy użytkownika, podobnie jak dobry kod, powinny być zrozumiałe.
Nikt nie czyta instrukcji. Jedyną instrukcją, jaką kiedykolwiek przeczytałem dla moich użytkowników, była prezentacja PowerPoint zawierająca szczegółowe instrukcje oprogramowania. Widziałem to przy użyciu narzędzi wideo, takich jak Camtasia, ale PowerPoints są lepsze, ponieważ możesz łatwo przewijać w przód i w tył przez kolejne kroki.
źródło
Użytkownik nie popełnia błędów. Błędy leżą po stronie programisty, który nie stworzył użytecznego interfejsu.
Wykonaj testy użyteczności przy każdym wydaniu!
źródło