İçeriğe geç
academia.sh

Ders 04 / 24

Yolculuk Haritaları

Uçtan uca deneyimin aşamalara ayrılması; kanal payının, terk oranının ve kayıp kişi-dakikanın hesaplanması; en uzun aşamayla en çok bırakılan aşamanın niçin aynı olmadığı.

İçindekiler

Görev envanteri her görevi ayrı bir satır olarak gösterdi, oysa kullanıcı bunları arka arkaya yapıyor. “Raf konumunu bul” görevi ekranda başlıyor, rafın önünde bitiyor ve başarısız olduğunda kullanıcı kataloğa geri dönüyor. Envanter bu zinciri göremez; her görevi bağımsız bir olay olarak sayar.

Yolculuk haritası (journey map), tek bir amacın uçtan uca izlenmesidir: kullanıcı nerede başlar, hangi aşamalardan geçer, her aşamada ne kadar kalır ve nerede vazgeçer. Bu ders haritanın sütunlarını kurar, bırakma noktalarını hesaplar ve en uzun aşamanın niçin en kötü aşama olmadığını gösterir.

Haritanın Sütunları

Bir yolculuk haritası dört soruya sütun ayırır.

  • Aşama. Kullanıcının amacı yolunda attığı bir adım. Aşama sınırı, kullanıcının bir karar verdiği ya da ortam değiştirdiği yerdedir; arayüz ekranlarıyla birebir örtüşmez.
  • Kanal. Aşamanın geçtiği ortam. Katalog arayüzünde üç kanal var: ekran, kütüphanenin fiziksel alanı ve ödünç bankosu. Kanal sütunu olmayan bir harita, ekranda başlayıp ekranda biten bir yolculuk varsayar.
  • Ölçüm. Aşamaya kaç kişi girdi, kaçı sonraki aşamaya geçti, aşamada ne kadar zaman geçti. Bu sütun gözlem verisinden gelir.
  • Bulgu. Aşamada ne olduğu ve niçin olduğu. Bu sütun görüşmeden gelir; sayı değil, kodlanmış olgudur.

Son iki sütunun ayrı tutulması önemlidir. Ölçüm nerede kaybedildiğini söyler, bulgu niçin kaybedildiğini söyler ve biri diğerinin yerine geçmez.

Yolculuğu Ölçmek

Aşağıdaki hesap “bilinen kaydı bul ve ödünç al” amacını yüz başlangıçtan izliyor. Her aşama için giren ve çıkan sayısı ile aşamada geçen ortalama süre kaydedildi.

// yolculuk.mjs — ucdan uca yolculugun asama asama sure, birakma ve kayip zaman hesabi

// "Bilinen kaydi bul ve odunc al" yolculugunun 100 baslangicta izlenmesi
// (ders icin kurulmus veri). kanal: asamanin gectigi ortam.
const ASAMALAR = [
  { ad: "katalogu ac",        kanal: "ekran",   giren: 100, cikan: 97, sure: 0.4 },
  { ad: "aramayi yaz",        kanal: "ekran",   giren: 97,  cikan: 92, sure: 1.1 },
  { ad: "sonuc listesini tara", kanal: "ekran", giren: 92,  cikan: 74, sure: 2.3 },
  { ad: "kayit ayrintisini oku", kanal: "ekran", giren: 74, cikan: 68, sure: 1.6 },
  { ad: "raf kodunu not et",  kanal: "ekran",   giren: 68,  cikan: 61, sure: 0.5 },
  { ad: "rafa git",           kanal: "fiziksel", giren: 61, cikan: 58, sure: 6.2 },
  { ad: "kitabi rafta bul",   kanal: "fiziksel", giren: 58, cikan: 39, sure: 4.8 },
  { ad: "odunc islemini yap", kanal: "banko",   giren: 39,  cikan: 37, sure: 2.1 },
];

console.log("asama                  kanal      giren  cikan  birakan  birakma orani  sure  toplam sure");
let toplamSure = 0;
for (const a of ASAMALAR) {
  a.birakan = a.giren - a.cikan;
  a.birakmaOrani = a.birakan / a.giren;
  toplamSure += a.sure;
  console.log(
    `${a.ad.padEnd(22)} ${a.kanal.padEnd(9)} ${String(a.giren).padStart(6)} ${String(a.cikan).padStart(6)} ` +
      `${String(a.birakan).padStart(8)} ${(a.birakmaOrani * 100).toFixed(1).padStart(13)}% ${a.sure.toFixed(1).padStart(5)} ${toplamSure.toFixed(1).padStart(11)}`
  );
}
console.log(`\nucdan uca tamamlama: ${ASAMALAR.at(-1).cikan} / ${ASAMALAR[0].giren}  (${ASAMALAR.at(-1).cikan}%)`);
console.log(`ucdan uca sure (tamamlayan icin): ${toplamSure.toFixed(1)} dk`);

// Kanal payi: yolculugun ne kadari ekranda gecti
const kanalSure = {};
for (const a of ASAMALAR) kanalSure[a.kanal] = (kanalSure[a.kanal] ?? 0) + a.sure;
console.log("\nkanal      sure   yolculuk payi");
for (const [k, s] of Object.entries(kanalSure)) {
  console.log(`${k.padEnd(10)} ${s.toFixed(1).padStart(4)} dk  ${((s / toplamSure) * 100).toFixed(1)}%`);
}

// Uc ayri "en kotu asama" tanimi ayni asamayi gostermiyor
const enBuyuk = (anahtar) => [...ASAMALAR].sort((a, b) => b[anahtar] - a[anahtar])[0];
for (const a of ASAMALAR) a.kayipDakika = a.birakan * a.sure;
console.log("\nolcut                    en kotu asama          deger");
console.log(`${"en uzun asama".padEnd(24)} ${enBuyuk("sure").ad.padEnd(24)} ${enBuyuk("sure").sure.toFixed(1)} dk`);
console.log(`${"en cok birakan".padEnd(24)} ${enBuyuk("birakan").ad.padEnd(24)} ${enBuyuk("birakan").birakan} kisi`);
console.log(`${"en yuksek birakma orani".padEnd(24)} ${enBuyuk("birakmaOrani").ad.padEnd(24)} ${(enBuyuk("birakmaOrani").birakmaOrani * 100).toFixed(1)}%`);
console.log(`${"en cok kayip dakika".padEnd(24)} ${enBuyuk("kayipDakika").ad.padEnd(24)} ${enBuyuk("kayipDakika").kayipDakika.toFixed(1)} kisi-dakika`);

// Birakanlarin harcadigi zaman: yolculuga girip cikamayanlarin toplam dakikasi
let harcanan = 0, tamamlayanZaman = ASAMALAR.at(-1).cikan * toplamSure;
for (let i = 0; i < ASAMALAR.length; i++) {
  harcanan += ASAMALAR[i].giren * ASAMALAR[i].sure;
}
console.log(`\ntoplam harcanan zaman: ${harcanan.toFixed(1)} kisi-dakika`);
console.log(`tamamlayanlarin zamani: ${tamamlayanZaman.toFixed(1)} kisi-dakika`);
console.log(`sonuca varmayan zaman orani: ${(((harcanan - tamamlayanZaman) / harcanan) * 100).toFixed(1)}%`);
asama                  kanal      giren  cikan  birakan  birakma orani  sure  toplam sure
katalogu ac            ekran        100     97        3           3.0%   0.4         0.4
aramayi yaz            ekran         97     92        5           5.2%   1.1         1.5
sonuc listesini tara   ekran         92     74       18          19.6%   2.3         3.8
kayit ayrintisini oku  ekran         74     68        6           8.1%   1.6         5.4
raf kodunu not et      ekran         68     61        7          10.3%   0.5         5.9
rafa git               fiziksel      61     58        3           4.9%   6.2        12.1
kitabi rafta bul       fiziksel      58     39       19          32.8%   4.8        16.9
odunc islemini yap     banko         39     37        2           5.1%   2.1        19.0

ucdan uca tamamlama: 37 / 100  (37%)
ucdan uca sure (tamamlayan icin): 19.0 dk

kanal      sure   yolculuk payi
ekran       5.9 dk  31.1%
fiziksel   11.0 dk  57.9%
banko       2.1 dk  11.1%

olcut                    en kotu asama          deger
en uzun asama            rafa git                 6.2 dk
en cok birakan           kitabi rafta bul         19 kisi
en yuksek birakma orani  kitabi rafta bul         32.8%
en cok kayip dakika      kitabi rafta bul         91.2 kisi-dakika

toplam harcanan zaman: 1249.2 kisi-dakika
tamamlayanlarin zamani: 703.0 kisi-dakika
sonuca varmayan zaman orani: 43.7%

Haritanın Söyledikleri

Uçtan uca tamamlama %37. Sekiz aşamanın hiçbirinde terk oranı üçte birden yüksek değil, ama çarpımları yüzden otuz yediye indiriyor. Aşamaların tek tek “kabul edilebilir” görünmesi, zincirin kabul edilebilir olduğu anlamına gelmez. Bir yolculuk haritasının ilk işlevi, aşama başına iyi görünen sayıların çarpımını göstermektir.

Ekran, yolculuğun yalnızca %31.1’i. On dokuz dakikalık yolculuğun on bir dakikası fiziksel alanda, iki dakikası bankoda geçiyor. Bu, katalog arayüzünün ölçümüyle görülemeyen bir bölgedir: ekran ölçümü kullanıcının kataloğu kapattığı anda kör olur. Önceki dersteki oturum sürelerinin “bilinen kaydı arayan” profil için 4.3 dakika çıkması bu körlüğün sonucudur; kullanıcı dört dakika ekranda, on beş dakika ekranın dışındadır.

En uzun aşama en kötü aşama değil. “Rafa git” 6.2 dakikayla en uzun aşama, ama bırakma oranı %4.9. Kullanıcı bu süreyi bekliyor ve kabul ediyor; yolculuğun beklenen bir parçasıdır. “Kitabı rafta bul” aşaması 4.8 dakika sürüyor ve giren elli sekiz kişinin on dokuzunu kaybediyor. Uzunluk bir sorun göstergesi değildir; sorun, harcanan zamanın sonuç üretmemesidir.

Kayıp kişi-dakika, aşamaları ortak bir birime çevirir. Bırakan kişi sayısını aşamada geçen süreyle çarpmak, o aşamada boşa giden zamanı verir. “Kitabı rafta bul” 91.2 kişi-dakika üretiyor; toplam bin iki yüz kırk dokuz kişi-dakikanın %43.7’si sonuca varmayan zamandır. Bu oran tasarım tartışmasını değiştirir: sorun “%37 tamamlama düşük” değil, “harcanan zamanın kırk üç puanı karşılıksız” biçiminde konur.

Ekran kararı, ekran dışı aşamayı etkiler. En büyük kaybın ekran dışında olması, çözümün de ekran dışında olduğu anlamına gelmez. “Raf kodunu not et” aşamasında altmış sekiz kişiden yedisi düşüyor; geri kalanların bir kısmı da kodu yanlış not ediyor olabilir ve bunun bedeli bir sonraki aşamada ödeniyor. Kayıt ayrıntısında raf kodunun nasıl gösterildiği, rafta geçirilen 4.8 dakikayı doğrudan belirler. Harita bu bağı görünür kılar; görev envanteri kılmaz.

Bırakma Noktası ile Bulgunun Ayrılması

Tablonun söylemediği şey, on dokuz kişinin rafta niçin bulamadığıdır. Olası nedenler birbirinden çok farklı çözümler gerektirir: kitap ödünçtedir ama katalog güncel değildir, kitap yanlış rafa konmuştur, raf kodu okunmuştur ama raf düzeni anlaşılmamıştır, ya da kullanıcı doğru rafın önünde durup kitabı gözden kaçırmıştır.

Bunlardan hangisinin geçerli olduğu ölçümle değil, aşamanın ardından yapılan kısa görüşmeyle belirlenir. İlk derste kodlanan raf-kodu-anlasilmiyor kodu on iki katılımcının yedisinde geçmişti; bu bulgu üçüncü olasılığı destekler ama tek başına kanıtlamaz. Haritanın bulgu sütunu, kodun hangi aşamaya ait olduğunu kaydeder — kod bir aşamaya bağlanmadığı sürece tasarım kararına çevrilemez.

Ekran Dışı Gözlemin Etik Sınırı

Yolculuk haritası kullanıcıyı fiziksel alanda izlemeyi gerektirir ve bu, ekran kaydından farklı yükümlülükler doğurur.

Onay, izleme için ayrıca alınır. Katalog kullanımına verilen onay, kişinin raflar arasında izlenmesini kapsamaz. Eşlik eden gözlemde katılımcı gözlemcinin varlığını bilir; gizli izleme araştırma yöntemi değildir.

Üçüncü kişiler kayda girmez. Fiziksel alanda yapılan gözlemde, onay vermemiş başka kullanıcılar da görüş alanındadır. Not tutulurken yalnızca katılımcının davranışı yazılır; çevredeki kişilerin görüntüsü, sesi ya da tanımlayıcı ayrıntısı kaydedilmez.

Konum verisi en kısa sürede aşamaya indirgenir. “Üçüncü kat, 4 numaralı raf, 11.20’de” biçiminde bir kayıt kişiyi zaman ve mekânda tanımlar. Çözümlemeye giren veri aşama adı ve süredir; ham konum ve saat, toplulaştırma yapıldıktan sonra saklama sınırı içinde silinir.

Özet

  • Yolculuk haritası aşama, kanal, ölçüm ve bulgu sütunlarından oluşur; ölçüm nerede kaybedildiğini, bulgu niçin kaybedildiğini söyler ve biri diğerinin yerine geçmez.
  • Aşama başına kabul edilebilir görünen terk oranları çarpılır; örnek veride sekiz aşamanın hiçbiri üçte biri aşmadığı hâlde uçtan uca tamamlama %37’de kaldı.
  • Örnek yolculuğun yalnızca %31.1’i ekranda geçiyor; ekran ölçümü kullanıcı arayüzü kapattığında kör olur ve oturum süresi yolculuk süresi değildir.
  • En uzun aşama en kötü aşama değildir; kayıp kişi-dakika ölçütü aşamaları ortak birime çevirir ve örnek veride harcanan zamanın %43.7’si sonuca varmadı.
  • Fiziksel alandaki gözlem için ayrıca onay alınır, üçüncü kişiler kayda girmez ve ham konum–saat verisi aşamaya indirgendikten sonra silinir.

Sonraki Adım

Harita kendi arayüzümüzün nerede kaybettiğini gösteriyor, ama bu kayıpların kaçınılmaz olup olmadığını söylemiyor. Aynı görevi çözen başka sistemler var ve onların hangi kararları verdiği ölçülebilir bir veridir: kaç adımda tamamlıyorlar, hangi bilgiyi hangi ekranda gösteriyorlar, hangi kararda birbirlerinden ayrılıyorlar? Sonraki ders var olan çözümlerin nasıl okunacağını ele alır: adım sayısının karşılaştırılması, yerleşik alışkanlıkların sapmadan ayrılması ve bir kararın niçin herkeste aynı olduğunun anlaşılması.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat