Ders 01 / 24
Kullanıcı Araştırması Yöntemleri
Gözlem, görüşme ve anketin hangi soruya yanıt verdiği; görüşme doygunluğunun ölçülmesi, küçük örneklemden yaygınlık kestirimi çıkarmanın sınırı ve araştırmanın etik çerçevesi.
İçindekiler
Arayüz Tasarımının Temelleri kursu bir ekranın içini ölçtü: hiyerarşi, ızgara, aralık, kontrast eşikleri, bileşen durumları. O kursta katalog arayüzünün akışı — arama alanı, sonuç listesi, kayıt ayrıntısı, ödünç alma — baştan verilmişti ve niçin bu akış olduğu sorulmadı. Bu kurs o soruyla açılır. Ölçülecek şey artık bir ekranın içi değil, ekranlar arasındaki yoldur.
Yolun başlangıcı bir varsayımdır: arayüzün desteklemesi gereken görevleri bilmek. Bu bilgi tasarımcının kendi kullanımından çıkarılamaz; tasarımcı arayüzün nasıl çalıştığını bildiği için hiçbir kullanıcının içinde bulunmadığı bir konumdadır. Bilginin kaynağı araştırmadır. Bu ders üç temel yöntemi — gözlem, görüşme ve anket — hangi sorulara yanıt verdiklerine göre ayırır ve her birinin ne söyleyip ne söyleyemeyeceğini sayıyla gösterir.
Üç Yöntem, Üç Ayrı Soru
Yöntem seçimi bir bütçe kararı değil, soru türü kararıdır. Üç yöntem üç ayrı soruya yanıt verir ve birinin yanıtı diğerinin yerine geçmez.
Gözlem (observation), kişinin görevi gerçekten nasıl yaptığını kaydeder. Katalog arayüzünde bir kullanıcının aramayı yazdıktan sonra sonuç listesinin kaçıncı satırına baktığı, geri döndüğünde ne yaptığı, rafta bulamayınca nereye gittiği gözlemle görülür. Gözlemin gücü, kişinin söylemediği ve çoğu zaman farkında olmadığı davranışları yakalamasıdır. Sınırı, gerekçeyi vermemesidir: kullanıcının niçin geri döndüğü gözlemlenemez, ancak sorulabilir.
Görüşme (interview), gerekçeyi ve bağlamı toplar. Kişinin görevi niçin yaptığını, hangi alternatifleri denediğini, arayüzden bağımsız hangi kısıtları taşıdığını görüşme açığa çıkarır. Sınırı iki katmanlıdır. Birincisi, insan kendi davranışını yanlış hatırlar; “genellikle konu başlığından ararım” diyen bir kişi gözlemde yazar adından arayabilir. İkincisi, görüşme az sayıda kişiyle yapılır ve sayısal bir yaygınlık kestirimi vermez.
Anket (survey), bir olgunun ne kadar yaygın olduğunu ölçer. Yalnızca zaten bilinen seçenekler arasında ölçüm yapabilir: ankete koymadığınız bir sorun, anketten çıkmaz. Bu yüzden anket araştırmanın başında değil, keşfin ardında durur.
Sıralama buradan çıkar: gözlem ve görüşme neyin var olduğunu bulur, anket bulunanın ne kadar yaygın olduğunu ölçer. Ters sırada yürütülen bir araştırma, yalnızca araştırmacının baştan aklında olan seçenekleri doğrular.
Araştırmanın Etik Çerçevesi
Araştırma, insanlardan veri toplamaktır ve bu üç kural yöntemin süsü değil parçasıdır.
Bilgilendirilmiş onay. Katılımcı, oturumun başında verinin ne için toplandığını, ne kadar süreceğini, kaydın hangi biçimde tutulacağını ve istediği an ayrılabileceğini öğrenir ve buna açıkça onay verir. Onay kapsamı sonradan genişletilemez: görüşme için alınan onay, kaydın bir tanıtım metninde kullanılmasını kapsamaz.
Kimliksizleştirme. Notlar kodlanırken katılımcı adı yerine K01 gibi bir kod kullanılır
ve ad ile kod arasındaki eşleme, çözümleme verisinden ayrı tutulur. Kimliksizleştirmenin
ölçüsü, veriden kimliğe geri gidilememesidir; “adı sildim” yetmez. Serbest metin
alıntılarında kişiyi tek başına tanımlayabilecek ayrıntılar da temizlenir. Katalog
örneğinde “üçüncü kattaki tek gece görevlisi” bir addır.
Saklama sınırı. Her veri kümesi için saklama süresi araştırma başlamadan yazılır ve süre dolduğunda veri silinir. Ham kayıt en kısa sürede kodlanmış nota dönüştürülür; kodlanan not saklanır, ham kayıt silinir. Sınırı olmayan saklama, ileride ne için kullanılacağı bilinmeyen bir veri yığını üretir ve onayın kapsamını fiilen sonsuza genişletir.
Bu kurallar araştırmayı yavaşlatmaz; kapsamını belirler. Onaysız toplanan veri, çözümlemede kullanılamayacağı için zaten yoktur.
Görüşme Kaç Kişiyle Yapılır
Görüşme sayısının ölçütü temsil değil doygunluktur (saturation): yeni görüşmelerin yeni kod üretmeyi bıraktığı nokta. Kod, not içindeki bir olgunun kısa adıdır; aynı olgu farklı katılımcılarda farklı sözcüklerle anlatılsa bile aynı kodu alır.
// doygunluk.mjs — gorusme notlarinin kodlanmasi, doygunluk ve kod sikligi // 12 gorusmenin kodlanmis notlari (ders icin kurulmus veri) const GORUSMELER = [ ["K01", ["es-adli-kayit", "raf-kodu-anlasilmiyor", "odunc-durumu-gec", "konu-taramasi-zor"]], ["K02", ["raf-kodu-anlasilmiyor", "geri-donusta-arama-kayip", "es-adli-kayit"]], ["K03", ["odunc-durumu-gec", "filtre-gorunmuyor", "es-adli-kayit", "yazar-yazim-farki"]], ["K04", ["konu-taramasi-zor", "geri-donusta-arama-kayip", "raf-kodu-anlasilmiyor"]], ["K05", ["uzatma-yolu-bilinmiyor", "odunc-durumu-gec", "es-adli-kayit"]], ["K06", ["filtre-gorunmuyor", "dar-ekranda-liste", "raf-kodu-anlasilmiyor", "konu-taramasi-zor"]], ["K07", ["es-adli-kayit", "yazar-yazim-farki", "geri-donusta-arama-kayip"]], ["K08", ["rezervasyon-sirasi-belirsiz", "odunc-durumu-gec", "raf-kodu-anlasilmiyor"]], ["K09", ["konu-taramasi-zor", "es-adli-kayit", "dar-ekranda-liste"]], ["K10", ["raf-kodu-anlasilmiyor", "odunc-durumu-gec", "geri-donusta-arama-kayip", "filtre-gorunmuyor"]], ["K11", ["es-adli-kayit", "konu-taramasi-zor", "uzatma-yolu-bilinmiyor"]], ["K12", ["odunc-durumu-gec", "raf-kodu-anlasilmiyor", "yazar-yazim-farki"]], ]; // Doygunluk: her gorusmenin getirdigi yeni kod const gorulen = new Set(); console.log("gorusme kod yeni kod toplam benzersiz kod"); for (const [ad, kodlar] of GORUSMELER) { const yeni = kodlar.filter((k) => !gorulen.has(k)); yeni.forEach((k) => gorulen.add(k)); console.log( `${ad.padEnd(8)} ${String(kodlar.length).padStart(3)} ${String(yeni.length).padStart(9)} ${String(gorulen.size).padStart(21)}` ); } // Kod sikligi: bir kod kac katilimcinin notunda gecti const siklik = new Map(); for (const [, kodlar] of GORUSMELER) { for (const k of new Set(kodlar)) siklik.set(k, (siklik.get(k) ?? 0) + 1); } const N = GORUSMELER.length; console.log("\nkod katilimci oran"); for (const [k, c] of [...siklik].sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))) { console.log(`${k.padEnd(28)} ${String(c).padStart(9)} ${((c / N) * 100).toFixed(1)}%`); } console.log(`\ntoplam benzersiz kod: ${siklik.size}, son yeni kod: ${GORUSMELER.length - 4}. gorusmede`);
gorusme kod yeni kod toplam benzersiz kod K01 4 4 4 K02 3 1 5 K03 4 2 7 K04 3 0 7 K05 3 1 8 K06 4 1 9 K07 3 0 9 K08 3 1 10 K09 3 0 10 K10 4 0 10 K11 3 0 10 K12 3 0 10 kod katilimci oran es-adli-kayit 7 58.3% raf-kodu-anlasilmiyor 7 58.3% odunc-durumu-gec 6 50.0% konu-taramasi-zor 5 41.7% geri-donusta-arama-kayip 4 33.3% filtre-gorunmuyor 3 25.0% yazar-yazim-farki 3 25.0% dar-ekranda-liste 2 16.7% uzatma-yolu-bilinmiyor 2 16.7% rezervasyon-sirasi-belirsiz 1 8.3% toplam benzersiz kod: 10, son yeni kod: 8. gorusmede
İlk tablo doygunluğu gösteriyor. İlk dört görüşme on kodun yedisini getirdi; sekizinci görüşmeden sonra yeni kod gelmedi. Son dört görüşme çözümlemeye yeni bir olgu eklemedi.
Bu, “sekiz görüşme yeter” biçiminde bir kurala dönüştürülemez. Doygunluk noktası katılımcıların çeşitliliğine bağlıdır: on iki kişinin hepsi aynı bölümden seçilseydi eğri daha erken düzleşir ve bu erken düzleşme yeterlilik değil, örneklemin darlığı olurdu. Doygunluk bir durma ölçütüdür, örneklem büyüklüğü sözü değil. Uygulamadaki karşılığı şudur: yeni görüşmeler yeni kod getirmediği sürece durulur, ama katılımcı profili değiştirilerek bir kez daha denenir.
Görüşme Oranları Yaygınlık Değildir
İkinci tablo bir tuzak içeriyor. “Katılımcıların %58.3’ü eş adlı kayıt sorunundan söz etti” cümlesi doğru ama yanıltıcıdır; bu oran bir kullanıcı kitlesi hakkında bir kestirim gibi okunur. Oranın hangi belirsizlikle taşındığını hesaplamak gerekir.
// kesinlik.mjs — gorusme sayilarinin yayginlik kestirimi olarak sinirlari const N = 12; // gorusme sayisi const Z = 1.96; // %95 guven duzeyi const GOZLEM = [ ["es-adli-kayit", 7], ["odunc-durumu-gec", 6], ["rezervasyon-sirasi-belirsiz", 1], ]; const wald = (basari, n) => { const p = basari / n; const yari = Z * Math.sqrt((p * (1 - p)) / n); return [p - yari, p + yari]; }; const wilson = (basari, n) => { const p = basari / n; const payda = 1 + (Z * Z) / n; const merkez = (p + (Z * Z) / (2 * n)) / payda; const yari = (Z / payda) * Math.sqrt((p * (1 - p)) / n + (Z * Z) / (4 * n * n)); return [merkez - yari, merkez + yari]; }; console.log("kod gozlem Wald araligi Wilson araligi genislik"); for (const [ad, c] of GOZLEM) { const [wa, wb] = wald(c, N); const [sa, sb] = wilson(c, N); console.log( `${ad.padEnd(28)} ${`${c}/${N}`.padStart(6)} ` + `${`${(wa * 100).toFixed(1)} - ${(wb * 100).toFixed(1)}`.padEnd(16)} ` + `${`${(sa * 100).toFixed(1)} - ${(sb * 100).toFixed(1)}`.padEnd(16)} ` + `${((sb - sa) * 100).toFixed(1)} puan` ); } console.log("\nornek buyuklugu %95 hata payi (p = 0.5) %45 ile %55 ayirt edilir mi"); for (const n of [8, 12, 30, 100, 400, 1000]) { const yari = Z * Math.sqrt(0.25 / n); console.log( `${String(n).padStart(15)} ${`+/- ${(yari * 100).toFixed(1)} puan`.padStart(21)} ${yari * 100 < 5 ? "evet" : "hayir"}` ); } console.log(`\n+/- 5 puan icin gereken en kucuk ornek: ${Math.ceil((Z / 0.05) ** 2 * 0.25)}`);
kod gozlem Wald araligi Wilson araligi genislik
es-adli-kayit 7/12 30.4 - 86.2 32.0 - 80.7 48.7 puan
odunc-durumu-gec 6/12 21.7 - 78.3 25.4 - 74.6 49.2 puan
rezervasyon-sirasi-belirsiz 1/12 -7.3 - 24.0 1.5 - 35.4 33.9 puan
ornek buyuklugu %95 hata payi (p = 0.5) %45 ile %55 ayirt edilir mi
8 +/- 34.6 puan hayir
12 +/- 28.3 puan hayir
30 +/- 17.9 puan hayir
100 +/- 9.8 puan hayir
400 +/- 4.9 puan evet
1000 +/- 3.1 puan evet
+/- 5 puan icin gereken en kucuk ornek: 385
Yedi kişinin sözünü ettiği sorunun aralığı %32 ile %81 arasında; genişliği 48.7 puan. Bu aralık, “kullanıcıların yarısından fazlası” ile “kullanıcıların dörtte biri” iddialarının ikisini de içerir. On iki görüşmeden çıkan oran bir kestirim olarak kullanılamaz.
Wald aralığının üçüncü satırda eksi bir alt sınır üretmesi ayrıca öğreticidir: normal yaklaşım küçük örneklemde ve uç oranlarda geçerliliğini yitirir, olasılık için olanaksız bir değer verir. Wilson aralığı aynı veriyi %1.5 ile %35.4 arasına yerleştirir. Bir kez gözlenmiş bir olgunun yaygınlığı hakkında söylenebilecek tek şey, bunun sıfır olmadığıdır.
İkinci tablo anketin fiyatını veriyor. Yüz kişilik bir ankette hata payı ±9.8 puandır ve %45 ile %55 arasındaki bir farkı ayırt edemez; ±5 puan kesinliğe inmek için en az 385 yanıt gerekir. Örnek büyüklüğünün dörde katlanması hata payını yarıya indirir — kesinlik, örnekle karekök hızında iyileşir.
Yöntem Seçim Kuralı
Yukarıdaki hesaplar tek bir seçim kuralına indirgenir.
- Soru “insanlar bunu nasıl yapıyor” ise gözlem seçilir; söylenen değil yapılan ölçülür.
- Soru “niçin böyle yapıyor” ya da “hangi kısıtlar altında” ise görüşme seçilir; çıktısı kodlanmış olgulardır, oran değil.
- Soru “bu ne kadar yaygın” ise anket seçilir ve gerekli örneklem büyüklüğü baştan hesaplanır; hesabın karşılanamayacağı anlaşılırsa anket yapılmaz, çünkü küçük anket yanıt vermez.
Üçünün ortak kuralı, sorunun yöntemden önce yazılmasıdır. Yöntemle başlayan bir araştırma, o yöntemin yanıtlayabileceği soruya kendini uydurur.
Özet
- Gözlem yapılanı, görüşme gerekçeyi, anket yaygınlığı ölçer; keşif gözlem ve görüşmeyle, ölçüm anketle yapılır ve sıra tersine çevrilemez.
- Bilgilendirilmiş onay, kimliksizleştirme ve saklama sınırı yöntemin parçasıdır; onayın kapsamı sonradan genişletilemez ve ham kayıt kodlandıktan sonra silinir.
- Görüşme sayısının ölçütü doygunluktur; örnek veride sekizinci görüşmeden sonra yeni kod gelmedi, ancak doygunluk katılımcı çeşitliliğine bağlıdır ve sabit bir sayı vermez.
- On iki görüşmeden çıkan %58.3 oranının %95 aralığı %32 ile %81 arasındadır; nitel örneklem yaygınlık kestirimi üretmez.
- Anket kesinliği örneklemin kareköküyle artar: ±5 puan için en az 385 yanıt gerekir, yüz kişilik bir anket 10 puanlık farkları ayırt edemez.
Sonraki Adım
Bu ders on iki görüşmeden on kod çıkardı ama katılımcıları hâlâ K01–K12 kodlarından
ibaret bir liste olarak bıraktı. Tasarım kararı vermek için bu listenin yapısını görmek
gerekir: bazı katılımcılar birbirine benziyor mu, benziyorlarsa hangi eksende? Sonraki ders
katılımcıları özelliklerine göre kümeler, davranışa göre yapılan gruplamayla demografiye
göre yapılan gruplamanın aynı sonucu vermediğini hesapla gösterir ve gerçek veriye dayanan
bir kullanıcı profilinin nasıl kurulduğunu ortaya koyar.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.