İçeriğe geç
academia.sh

Ders 16 / 24

Alışkanlık Döngüsü

İpucu, rutin ve ödülün oluşturduğu döngünün tekrarla güçlenmesi, üç parçadan birini zayıflatmanın bedeli ve alışkanlık gücünün kullanıcıya sağlanan yararla aynı şey olmaması.

İçindekiler

Önceki ders tek bir davranışın gerçekleşme koşullarını kurdu: motivasyon, yetenek ve tetikleyicinin çarpımı bir eşiği geçmeli. Bu çerçeve ilk ödünç almayı açıklıyor. Katalog arayüzünün asıl sorusu ise tekrardır. Kullanıcı ikinci kez, beşinci kez, yirminci kez geri geliyor mu?

Tekrar eden davranış her seferinde baştan hesaplanmaz. Yeterince tekrarlandığında davranış, motivasyon eşiğini geçme işi olmaktan çıkar ve bir işarete verilen doğrudan yanıt hâline gelir. Bu ders o dönüşümün yapısını kurar ve tasarımcının bu yapıyı kurmaya hangi koşulda hakkı olduğunu tartışır.

Döngünün Üç Parçası

Alışkanlık döngüsü (habit loop) üç parçadan oluşur.

İpucu (cue), davranışı başlatan işarettir. Önceki dersteki tetikleyiciden farkı, ipucunun yinelenen ve bağlama bağlı olmasıdır: her salı günü gelen teslim hatırlatması bir ipucudur; bir kerelik duyuru değildir. İpucunun gücü öngörülebilirliğinden gelir.

Rutin (routine), ipucunun ardından yapılan davranıştır. Katalog arayüzünde rutin, ödünç aldığı kitabın süresini uzatmak ya da rafına yeni bir kitap eklemektir. Rutinin maliyeti önceki iki dersin konusuydu: karar noktası sayısı, karar süresi, yetenek.

Ödül (reward), rutinin sonunda gelen ve davranışı pekiştiren sonuçtur. Ödül bir oyunlaştırma ögesi olmak zorunda değildir; aradığı kitabın rafta bulunması, süre uzatmanın anında onaylanması ya da teslim tarihini artık takip etmek zorunda olmadığını bilmek de ödüldür.

Üç parça bir döngü kurar: ipucu rutini başlatır, rutin ödüle götürür, ödül bir sonraki ipucunun etkisini artırır. Alışkanlık gücü, bu döngünün kaç kez tamamlandığıyla birlikte artan bir büyüklüktür.

Döngünün Tekrarla Güçlenmesi

Aşağıdaki benzetim beş yüz kullanıcının yirmi altı haftasını izliyor. Her hafta ipucu gelebilir ya da gelmeyebilir; ipucu geldiğinde kullanıcı rutini tamamlayabilir ya da tamamlamayabilir; tamamladığında ödül gelebilir ya da gelmeyebilir. Alışkanlık gücü, ödüllü tekrarda artıyor, tekrarsız haftada sönüyor.

Beş tasarım karşılaştırılıyor. Dördü döngünün bir parçasını zayıflatıyor; beşincisi üç parçayı da güçlendiriyor ama ziyaretin kullanıcıya yarar sağlama oranını düşürüyor.

// aliskanlik.mjs — ipucu, rutin ve odul dongusunun tekrarla guclenmesi

function uretec(tohum) {
  let s = tohum >>> 0;
  return () => { s = (s * 1664525 + 1013904223) >>> 0; return s / 4294967296; };
}

const ALFA = 0.22;   // pekismis her tekrarin guc kazanci
const DELTA = 0.06;  // tekrar olmayan haftada sonme
const HAFTA = 26;
const KISI = 500;

// Bir tasarim: ipucu guvenilirligi, rutin maliyeti (0-1), odul guvenilirligi ve
// ziyaretin kullaniciya gercekten yarar saglama orani.
const TASARIMLAR = [
  { ad: "ipucu yok", ipucu: 0.15, maliyet: 0.45, odul: 0.90, fayda: 0.85 },
  { ad: "odul guvenilmez", ipucu: 0.90, maliyet: 0.45, odul: 0.30, fayda: 0.85 },
  { ad: "rutin agir", ipucu: 0.90, maliyet: 0.80, odul: 0.90, fayda: 0.85 },
  { ad: "ucu de yerinde", ipucu: 0.90, maliyet: 0.25, odul: 0.90, fayda: 0.85 },
  { ad: "sik ipucu, ilgisiz icerik", ipucu: 0.98, maliyet: 0.20, odul: 0.95, fayda: 0.18 },
];

// Tek kullanicinin 26 haftasi. kesme verilirse o haftadan sonra ipucu seyreklesir.
function kisi(t, rnd, kesme = null) {
  let h = 0.05;
  let ziyaret = 0, yararli = 0, esik = null;
  const h_ = {};
  for (let hafta = 1; hafta <= HAFTA; hafta++) {
    const ipucuOrani = kesme !== null && hafta > kesme ? 0.15 : t.ipucu;
    const ipucuGeldi = rnd() < ipucuOrani;
    // Rutini tamamlama: ipucu gerekli; olasilik aliskanlik gucuyle artar, maliyetle azalir
    const tamamlar = ipucuGeldi && rnd() < (0.35 + 0.6 * h) * (1 - t.maliyet);
    if (tamamlar) {
      ziyaret++;
      if (rnd() < t.fayda) yararli++;
      h = rnd() < t.odul ? h + ALFA * (1 - h) : h * (1 - DELTA);
    } else {
      h = h * (1 - DELTA);
    }
    if (esik === null && h >= 0.5) esik = hafta;
    h_[hafta] = h;
  }
  return { h_, ziyaret, yararli, esik };
}

function nufus(t, kesme = null) {
  const rnd = uretec(20250115);
  let ziyaret = 0, yararli = 0, esikSayisi = 0, esikToplam = 0;
  const h = { 6: 0, 12: 0, 18: 0, 26: 0 };
  const kesmeH = {};
  for (let i = 0; i < KISI; i++) {
    const k = kisi(t, rnd, kesme);
    ziyaret += k.ziyaret; yararli += k.yararli;
    for (const w of [6, 12, 18, 26]) h[w] += k.h_[w] / KISI;
    if (kesme !== null) kesmeH[kesme] = (kesmeH[kesme] ?? 0) + k.h_[kesme] / KISI;
    if (k.esik !== null) { esikSayisi++; esikToplam += k.esik; }
  }
  return {
    h, ziyaret: ziyaret / KISI, yararli: yararli / KISI,
    esikOrani: (esikSayisi / KISI) * 100,
    esikHafta: esikSayisi === 0 ? null : esikToplam / esikSayisi,
    kesmeH: kesme === null ? null : kesmeH[kesme],
  };
}

console.log("tasarim                    h(6)  h(12)  h(18)  h(26)  0.5'i gecen  ort. gecis  ziyaret");
const S = {};
for (const t of TASARIMLAR) {
  const s = nufus(t);
  S[t.ad] = s;
  console.log(
    `${t.ad.padEnd(25)} ${[6, 12, 18, 26].map((w) => s.h[w].toFixed(2)).join("   ")}` +
    `  ${(s.esikOrani.toFixed(1) + " %").padStart(11)}  ${(s.esikHafta === null ? "-" : s.esikHafta.toFixed(1) + ". hafta").padStart(10)}  ${s.ziyaret.toFixed(1).padStart(7)}`
  );
}

// Dongunun uc parcasindan birini zayiflatmanin bedeli
console.log("\nreferans: ucu de yerinde (h(26) = " + S["ucu de yerinde"].h[26].toFixed(2) + ", ziyaret " + S["ucu de yerinde"].ziyaret.toFixed(1) + ")");
const ref = S["ucu de yerinde"];
for (const ad of ["ipucu yok", "odul guvenilmez", "rutin agir"]) {
  const s = S[ad];
  console.log(`${ad.padEnd(25)} h(26) referansin ${(s.h[26] / ref.h[26] * 100).toFixed(0)} %'i, ziyaret referansin ${(s.ziyaret / ref.ziyaret * 100).toFixed(0)} %'i`);
}

// Ziyaret sayisi ile kullaniciya saglanan yarar ayni sey degildir
console.log("\ntasarim                    ziyaret  yararli  yararsiz  yararli oran");
for (const t of TASARIMLAR) {
  const s = S[t.ad];
  console.log(
    `${t.ad.padEnd(25)} ${s.ziyaret.toFixed(1).padStart(7)}  ${s.yararli.toFixed(1).padStart(7)}` +
    `  ${(s.ziyaret - s.yararli).toFixed(1).padStart(8)}  ${((s.yararli / s.ziyaret * 100).toFixed(1) + " %").padStart(12)}`
  );
}

// Ipucu 14. haftada seyreklestirilirse aliskanlik ne kadar dayanir
console.log("\nipucu 14. haftadan sonra seyreklestirilirse");
for (const ad of ["ucu de yerinde", "sik ipucu, ilgisiz icerik"]) {
  const t = TASARIMLAR.find((x) => x.ad === ad);
  const s = nufus(t, 14);
  console.log(`${ad.padEnd(25)} h(14) ${s.kesmeH.toFixed(2)} -> h(26) ${s.h[26].toFixed(2)}  (${(s.h[26] / s.kesmeH * 100).toFixed(0)} % kaldi), ziyaret ${s.ziyaret.toFixed(1)}`);
}
tasarim                    h(6)  h(12)  h(18)  h(26)  0.5'i gecen  ort. gecis  ziyaret
ipucu yok                 0.06   0.07   0.08   0.10        1.0 %  19.4. hafta      0.9
odul guvenilmez           0.10   0.12   0.14   0.18       10.0 %  17.1. hafta      5.4
rutin agir                0.10   0.14   0.16   0.20       13.2 %  15.5. hafta      2.0
ucu de yerinde            0.30   0.49   0.61   0.69       95.4 %  11.1. hafta     10.8
sik ipucu, ilgisiz icerik 0.36   0.59   0.72   0.81       98.8 %  9.3. hafta     13.6

referans: ucu de yerinde (h(26) = 0.69, ziyaret 10.8)
ipucu yok                 h(26) referansin 14 %'i, ziyaret referansin 8 %'i
odul guvenilmez           h(26) referansin 25 %'i, ziyaret referansin 50 %'i
rutin agir                h(26) referansin 29 %'i, ziyaret referansin 19 %'i

tasarim                    ziyaret  yararli  yararsiz  yararli oran
ipucu yok                     0.9      0.7       0.1        86.0 %
odul guvenilmez               5.4      4.6       0.8        85.6 %
rutin agir                    2.0      1.7       0.3        85.9 %
ucu de yerinde               10.8      9.2       1.6        85.5 %
sik ipucu, ilgisiz icerik    13.6      2.4      11.2        17.8 %

ipucu 14. haftadan sonra seyreklestirilirse
ucu de yerinde            h(14) 0.51 -> h(26) 0.31  (62 % kaldi), ziyaret 5.6
sik ipucu, ilgisiz icerik h(14) 0.64 -> h(26) 0.39  (61 % kaldi), ziyaret 7.2

Üç Parça da Gereklidir, Ama Aynı Biçimde Değil

İlk tablo döngünün parçalarını tek tek zayıflatmanın sonucunu veriyor. Üçü de yerinde olan tasarımda alışkanlık gücü altıncı haftada 0.30, yirmi altıncı haftada 0.69; kullanıcıların yüzde 95.4’ü 0.5 eşiğini geçiyor. Bir parça zayıfladığında yirmi altıncı haftadaki güç referansın yüzde 14 ile 29’u arasına düşüyor.

İkinci tablo parçaların farklı biçimde başarısız olduğunu gösteriyor. İpucu yoksa kullanıcı yirmi altı haftada ortalama 0.9 kez geliyor: döngü hiç başlamıyor. Ödül güvenilmezse ziyaret sayısı referansın yüzde 50’sinde kalıyor ama alışkanlık gücü yüzde 25’te — kullanıcı geliyor, rutini yapıyor, pekişme olmuyor. Rutin ağırsa ziyaret yüzde 19’a düşüyor ama gelenler pekişiyor; güç oranı (yüzde 29) ziyaret oranından (yüzde 19) yüksek.

Tasarım sonucu şudur: hangi parçanın zayıf olduğu, gözlenen sayı örüntüsünden okunabilir. Ziyaret az ve güç az ise ipucu eksiktir. Ziyaret var ama güç yoksa ödül eksiktir. Ziyaret az ama gelenler kalıcıysa rutin ağırdır. Bu üçü aynı “düşük tekrar” göstergesi altında toplanır ve ayrılmadan müdahale edilemez.

Alışkanlık Gücü Bir Başarı Ölçütü Değildir

Üçüncü tablo bu dersin ağırlık merkezidir. “Sık ipucu, ilgisiz içerik” tasarımı bütün alışkanlık göstergelerinde birinci: en yüksek güç (0.81), en yüksek eşik geçme oranı (yüzde 98.8), en erken eşik geçişi (9.3. hafta) ve en çok ziyaret (13.6). Üçü de yerinde olan tasarımı her sütunda geçiyor.

Aynı tabloda son sütun tersini söylüyor. On üç buçuk ziyaretin yalnızca 2.4’ü kullanıcıya bir yarar sağlıyor; on bir ziyaret boşa gidiyor. Üçü de yerinde olan tasarımda 10.8 ziyaretin 9.2’si yararlı. İkinci tasarım daha az ziyaret üretiyor ama dört kat fazla yararlı ziyaret.

Ziyaret sayısı, oturum süresi ve geri dönüş sıklığı alışkanlığı ölçer, yararı ölçmez. Bir arayüz bu göstergelere göre eniyilenirse, kullanıcının vaktini alan ama ona bir şey vermeyen bir tasarım “başarılı” görünür. Ölçüt bu kursta baştan beri aynıdır: kullanıcı, kendisine haftada iki kez ipucu gönderildiğini ve bu ipuçlarının onda ikisinin işine yaradığını bilseydi, bu ipuçlarını almayı sürdürür müydü? Yanıt hayırsa alışkanlık kullanıcının değil, göstergenin lehinedir.

Bu, tasarımcının alışkanlık kurmasının yanlış olduğu anlamına gelmez. Kütüphane kullanıcısının teslim tarihini kaçırmama alışkanlığı kullanıcının yararınadır; kullanıcı bu hatırlatmayı bilse de ister. Ayrım, alışkanlığın kime hizmet ettiğindedir ve bu üçüncü tablodaki son sütunla ölçülür.

Alışkanlık Kendi Kendini Taşımaz

Son tablo, sık dile getirilen bir varsayımı sınıyor: alışkanlık bir kez kurulduğunda kendi kendine devam eder mi?

İpucu on dördüncü haftadan sonra seyrekleştirildiğinde iki tasarımda da alışkanlık gücü yaklaşık yüzde 61 seviyesine düşüyor. Üçü de yerinde olan tasarımda 0.51’den 0.31’e, diğerinde 0.64’ten 0.39’a. İki tasarım arasında anlamlı bir fark yok.

Sonuç şudur: bu modelde alışkanlık ipucuya bağımlı kalır. İpucu kesildiğinde davranış söner. Bunun iki karşılığı var. Tasarım açısından: bir hatırlatmayı kaldırmak, kullanıcının o davranışı sürdüreceği anlamına gelmez; kaldırma kararı ölçülerek verilir. Etik açısından: kullanıcıyı bir ipucuya bağımlı hâle getiren tasarım, o ipucuyu kesme gücünü de elinde tutar. Bu güç, ipucunun kullanıcının işine yaradığı durumda bir hizmettir; yaramadığı durumda bir bağımlılıktır.

Modelin sınırı burada belirtilmelidir. Benzetim, kullanıcının kendi içsel nedenlerini hesaba katmıyor: gerçek kullanıcı, hatırlatma gelmese de aradığı kitabı arayabilir. Modelin verdiği sonuç, alışkanlığın arayüzün ürettiği kısmının ipucuya bağımlı olduğudur; kullanıcının kendi motivasyonundan gelen kısmı bu benzetimin dışındadır.

Döngüyü Kurmanın Kuralları

Katalog arayüzünde alışkanlık kurmanın meşru biçimi dört kuralla özetlenir.

İpucu kullanıcının takvimine bağlanır, tasarımcının takvimine değil. Teslim tarihi yaklaştığında gelen hatırlatma kullanıcının durumundan doğar. Haftanın belirli bir günü “yeni gelenler” göndermek arayüzün durumundan doğar; kullanıcının o an bir ihtiyacı olduğunu varsaymaz.

Rutin kısaltılır, ama karar silinmez. Önceki derste ölçüldüğü gibi rutinin maliyetini düşürmek döngüyü güçlendirir. Düşürülecek şey karar sayısıdır; kullanıcının ödünç aldığını fark etme fırsatı değil.

Ödül rutinin doğal sonucudur. Süre uzatmanın ödülü, sürenin uzamış olmasıdır. Rutinle ilgisiz bir ödül (rozet, sayaç, seri) döngüyü besler ama kullanıcının yararına bağlanmadığı için üçüncü tablodaki son sütunu düşürür.

Yararlı ziyaret oranı ayrı bir gösterge olarak izlenir. Ziyaret sayısı tek başına raporlanırsa, yararsız ziyaret üreten her değişiklik iyileşme gibi görünür.

Özet

  • Alışkanlık döngüsü ipucu, rutin ve ödülden oluşur; üçü tekrarla birbirini besler ve alışkanlık gücü bu tekrarlarla birikir.
  • Parçaların başarısızlık örüntüleri farklıdır: ipucu eksikse ziyaret de güç de düşer, ödül eksikse ziyaret var güç yok, rutin ağırsa ziyaret az ama gelenler pekişir.
  • Alışkanlık göstergelerinin tamamında birinci olan tasarım, yararlı ziyaret oranında yüzde 17.8’de kalabilir; alışkanlık gücü bir başarı ölçütü değildir.
  • Yararlı ziyaret oranı ayrı bir gösterge olarak izlenmezse, kullanıcının vaktini alan her değişiklik iyileşme gibi görünür.
  • Benzetimde alışkanlık ipucuya bağımlı kalır: ipucu seyreldiğinde güç yaklaşık yüzde 61 seviyesine düşer; alışkanlık kendi kendini taşımaz.
  • Meşruluk ölçütü aynıdır: kullanıcı ipuçlarının hangi oranda işine yaradığını bilseydi de onları almayı sürdürür müydü?

Sonraki Adım

Bu ders davranışı tekrarlatmayı ele aldı ve rutinin maliyetini düşürmenin döngüyü güçlendirdiğini gösterdi. Maliyeti düşürmenin en güçlü aracı önceki derste geçmişti ama ölçülmedi: karar noktalarını varsayılana bağlamak. Varsayılan, kullanıcının hiçbir şey yapmadığında sahip olduğu değerdir ve etkisi hem şaşırtıcı derecede büyük hem de tasarımcının elindeki en tartışmalı güçtür. Sonraki ders bu etkiyi iki senaryoda hesaplar ve bir varsayılanı meşru kılan ölçütü sayıya bağlar.

İ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