Konu Başlıkları
Yükleniyor...

Uzun Bekleme ve Kesintileri Arayüzde Yönetmek

Uzun işlemler: ilerleme göstergesi, bildirim ve arka plan işleri

Uzun süren işlemlerde kullanıcıyı yoran şey sürenin kendisi değil, sürenin bilinmemesi. Otuz saniyelik bir işlem, ne kadar süreceği yazıyorsa katlanılır; on saniyelik bir işlem, dönen bir daireden başka bir şey göstermiyorsa uzun hissettirir. Aşağıdakiler doğrudan uygulanacak beş karar.

Önce eşiği bil

Yanıt süresinin üç eşiği var ve arayüz kararları bu eşiklere göre değişir. 0,1 saniyenin altı anlık hissedilir, geri bildirim gerekmez. 1 saniyeye kadar akış bozulmaz, bir imleç değişimi yeter. 10 saniyeden sonra kullanıcının dikkati başka yere kayar, o noktadan itibaren ilerleme göstergesi zorunlu hale gelir. Bu sınırlar Jakob Nielsen'in yanıt süresi sınırları yazısından beri değişmedi, çünkü sınırı koyan tarayıcı değil insan dikkati.

Ölçmediğin işlemi bu eşiklere yerleştiremezsin. İşlem süresini ortalamayla değil yüzdelikle bak: ortalama 2 saniye görünen bir uçta 95. yüzdelik 14 saniye olabilir ve kullanıcı şikayeti oradan gelir.

Yüzde göstermek bir iddiadır

Yüzde gösteriyorsan toplam işi bildiğini iddia ediyorsun demektir. Bilmiyorsan gösterme; belirsiz bir çubuk, yanlış bir sayıdan daha dürüsttür.

Bir toplu içe aktarma ekranında yüzdeyi adım sayısından hesaplayan bir sayaç gördüm: 40 bin kayıtlık dosyada yüzde 90'a iki dakikada geliyor, kalan yüzde 10'u sekiz dakikada bitiriyordu, çünkü son adım indeks yeniden kurulumuydu. Adımların eşit ağırlıkta olduğunu varsayan her ilerleme çubuğu bu hataya düşer. Çare basit: adımlara geçmiş çalışmalardan gelen süre ağırlıkları ver, ya da yüzdeyi bırakıp "3/5: kayıtlar doğrulanıyor" gibi adım metni yaz. Adım metni ayrıca kullanıcıya işlemin nerede takıldığını da söyler.

Bitti mesajı işin özetini taşısın

Uzun bir işlemin sonundaki "Başarıyla tamamlandı" bildirimi hiçbir şey söylemiyor. Kullanıcının bilmek istediği: kaç kayıt işlendi, kaçı atlandı, ne kadar sürdü, atlananlara nereden bakılır. Bunları mesajın içine koy ve mesajı kendiliğinden kaybolmayan bir yere yerleştir. Birkaç saniye sonra kaybolan bir toast, on dakikalık bir işlemin tek çıktısı olamaz; kullanıcı o sırada başka sekmededir.

Çalışma hafızasını ekranda tut

Kesinti, kullanıcının kafasındaki bağlamı siler. İki şey bu bağlamı geri getirir.

Birincisi not alanı. Kayda ya da sürece kullanıcının kendi cümlesiyle açıklama ekleyebilmesi, "bunu neden yarım bıraktım" sorusunun cevabını uygulamanın içinde tutar. Aksi halde o cevap birinin masasındaki kağıda ya da ayrı bir tabloya gider ve ekipteki diğer kişiye hiç ulaşmaz.

İkincisi son erişilenler listesi. Dosya adı tek başına yetmez, yanına son işlem zamanı ve bir satırlık özet koy. Kullanıcı doğru kaydı adından değil, bıraktığı yerdeki durumundan tanıyor.

Uzun işi arka plana al

On saniyeyi geçen her işlem kullanıcıyı ekrana kilitlememeli. İşi kuyruğa al, kullanıcı başka işine dönsün, bittiğinde kalıcı bir bildirimle haber ver. Bu bir arayüz kararı olduğu kadar bir mimari kararı: işlem sunucuda bir kuyruk işçisine taşınmadan arayüzde "arka planda çalışıyor" yazmak, sadece bekleme ekranını gizler.

Kuyruğa aldığın işin durumu da sorgulanabilir olmalı. Kullanıcı sayfayı yenilediğinde, tarayıcıyı kapatıp açtığında ya da bir gün sonra döndüğünde işlemin nerede kaldığını görebiliyorsa kesinti yönetilmiş demektir. Göremiyorsa işlemi ikinci kez başlatır, sen de aynı veriyi iki kez işlersin.