poniedziałek, 28 czerwca 2010

Co to znaczy „wystarczająco szybko”?

Oczywiście dobrze jest gdy aplikacja działa tak szybko, że użytkownik podczas pracy w ogóle nie zauważa opóźnień w działaniu interfejsu i nie musi „czekać” na program. Stan ten jest jednak trudny do osiągnięcia nawet w aplikacjach typu desktop, nie mówiąc już o aplikacjach internetowych. Dlatego dobrze jest określić co to znaczy „wystarczająco szybko” i dążyć do tego, aby tworzone aplikacje zbliżały się do tego punktu.

To co użytkownik uzna za akceptowalne tempo pracy danej aplikacji jest zjawiskiem psychologicznym nie da się go więc precyzyjnie wyznaczyć. Co innego będzie akceptowane przez różnych użytkowników, co innego również będzie akceptowalne dla tego samego użytkownika w zależności od wagi jaką przykłada do danego zagadnienia. Dodatkowym czynnikiem jest subiektywne odczucie użytkownika o tym jak skomplikowanych operacji wymaga żądane przez niego działanie. Jeżeli uważa on, że jest to coś trudnego i maszyna musi się przy tym „napracować” to jest on w stanie wybaczyć jej znacznie dłuższy czas oczekiwania. Co za tym idzie określając czas jaki będzie akceptowalny dla potencjalnych użytkowników należy brać pod uwagę rodzaj informacji jakich dostarczać będzie witryna oraz jak dużo przeciętny użytkownik będzie skłonny na nie czekać.

Poniżej zamieszczamy ogólne wytyczne co do subiektywnego odbioru czasu jaki poświęcić trzeba oczekując na wyświetlenie strony.
- 0,1 sekundy: Opóźnienie takie daje użytkownikowi wrażenie, że bezpośrednio oddziałuje na dane obiekty. Jest to czas, którego nie traktuje on jako oczekiwanie na wykonanie zadanego polecenie. W przypadku aplikacji internetowych jest to poziom praktycznie nieosiągalny i może być traktowany głównie jako pewien punkt odniesienia.
- do 1 sekundy: Podobnie jak w poprzednim przypadku użytkownik odnosi wrażenie płynności interfejsu, chociaż czas potrzeby na odpowiedź aplikacji jest już zauważalny. Poziom ten można osiągnąć gdy nie zachodzi potrzeba ponownego wczytania całej strony, jest to więc poziom oczekiwany dla zadań opartych o technologię AJAX.
- kilka sekund: Użytkownik odnosi wrażenie, że komputer „pracuje nad powierzonym mu zadaniem”. W przypadku aplikacji typu desktop, jeżeli zadanie nie jest uznawane za trudne i wymagające czasu, użytkownik odniesie już wrażenie, że aplikacja działa ospale i nie będzie z niej zadowolony. W przypadku witryn internetowych jest to poziom akceptowalny przy wczytywaniu całych stron, jednak pod warunkiem, że widać postępy w realizacji zadania. Jeżeli strona nie odpowiada przez kilka sekund i wyświetla jedynie biały ekran, to użytkownik najprawdopodobniej rozważa już jej opuszczenie, a z pewnością pierwsze wrażenie nie jest pozytywne.
- granica 10 sekund: Jest to orientacyjna bariera, po przekroczeniu której użytkownik traci cierpliwość i nie ma już ochoty dłużej oczekiwać na realizację swojego żądania. Poziom ten nie powinien występować w normalnych przypadkach związanych z wyświetlaniem stron internetowych. Użytkownik może go zaakceptować jedynie wtedy, gdy wie, że na żądanej stronie będzie interesująca go informacja, lub gdy realizacja żądania będzie gwarantować mu osiągnięcie celu. Co za tym idzie musi to być użytkownik już związany ze stroną, który zna jej sposób funkcjonowania i rezultaty poszczególnych żądań. Dla nowych użytkowników będzie to sygnał do natychmiastowego opuszczenia witryny. Jeżeli jakieś zadanie z pewnych względów wymaga tak długiego czasu oczekiwania, a potencjalni użytkownicy będą w stanie je tolerować, to należy im to wyraźnie zasygnalizować i informować na bieżąco o postępach w jego realizacji. Pomocne mogą tu być różnego rodzaju paski postępu.

Wnioski:
1) Proste zdarzenia nie wiążące się z ponownym wczytaniem strony lub przejściem na inną stronę (np.: różne zastosowania technologii AJAX) powinny trwać krócej niż sekundę.
2) Wczytywanie strony może trwać kilka sekund, lecz absolutnie nie więcej niż dziesięć. Poziomem, do którego odczucia użytkownika są pozytywne, jest około pięć sekund. Użytkownik powinien na bieżąco widzieć postępy w wykonywaniu prac (progresywne ładowanie strony).
3) Zadania wymagające więcej niż dziesięciu sekund zawsze powinny być sygnalizowane użytkownikowi, a stopień ich realizacji powinien być na bieżąco wyświetlany na pasku postępu, tak aby łatwe było oszacowanie czasu jako pozostał do ukończenia zadania.