---
title: 'Karanlık Kalıplar ve Etik'
source: 'https://academia.sh/tr/kurslar/kullanici-deneyimi/karanlik-kaliplar-ve-etik'
course: 'Kullanıcı Deneyimi ve Davranış Tasarımı'
language: tr
updated: '2026-08-17T18:09:38+00:00'
license: 'CC BY-SA 4.0'
---

# Karanlık Kalıplar ve Etik

Bir tasarım kararının meşruluk ölçütünün sayılabilir göstergelere çevrilmesi, acele ettirme, gizli maliyet, zorlaştırılmış iptal, onay tuzağı ve sahte kıtlık kalıplarının tanınması ve reddedilmesi.

Bu konunun yedi dersinde aynı soru yedi kez ortaya çıktı. Belirginlik dersinde: kullanıcı
listenin niçin bu sırayla dizildiğini bilseydi ilk kaydı seçer miydi? Varsayılanlar
dersinde: ayarın açık geldiğini fark etseydi açık bırakır mıydı? Sosyal kanıt dersinde:
sayının nasıl üretildiğini bilseydi ona güvenir miydi? İlerleme dersinde: çubuğun gerçek
işe bağlı olmadığını bilseydi beklemeyi sürdürür müydü?

Soru her seferinde aynıydı ve her seferinde iki yanıttan biri çıktı. Bu ders soruyu bir
ölçüte, ölçütü de denetlenebilir göstergelere çevirir.

## Ölçüt

**Bir tasarım kararı, kullanıcı o kararın nasıl alındığını bilseydi de aynı seçimi
yapacaksa meşrudur. Kararın gücü kullanıcının bilgisizliğinden geliyorsa o karar bir
karanlık kalıptır.**

Ölçütün iki özelliği vardır. Birincisi, kullanıcının davranışını değiştirmeyi kendi
başına kusur saymaz — her tasarım kararı davranışı değiştirir; kayıtları uygunluğa göre
sıralamak da değiştirir. Kusur, değişimin bir yanlış inanç üzerine kurulmasıdır. İkincisi,
tasarımcının niyetini sormaz. Bir kalıp kazayla kurulmuş olabilir; ölçüt yine de aynı
sonucu verir ve düzeltme yükümlülüğü aynıdır.

**Karanlık kalıp (dark pattern)**, bu ölçütü sistematik olarak çiğneyen, kullanıcının
yanlış bilgisine dayanarak sonucu tasarımcının istediği yöne çeviren arayüz kalıbıdır.
Aşağıdaki beş kalıp bu dersin denetim listesidir.

**Acele ettirme**, kullanıcının düşünme süresini gerçek bir kısıt olmadan daraltan
kalıptır: sona ermeyen ya da her oturumda yeniden başlayan geri sayımlar.

**Gizli maliyet**, kullanıcının taahhüt ettiği bedelin bir kısmını taahhütten sonra
gösteren kalıptır.

**Zorlaştırılmış iptal**, bir duruma girmeyi kolay, çıkmayı orantısız biçimde zor yapan
kalıptır.

**Onay tuzağı**, kullanıcının onayladığını sandığı şeyle gerçekte onayladığı şeyin
ayrıştığı kalıptır: önceden işaretlenmiş kutular, ret seçeneğini görünmez kılan düzenler.

**Sahte kıtlık**, stok, süre ya da talep hakkında veriye dayanmayan bir azlık iddiasıdır.

Bunların hiçbiri burada uygulama tarifi olarak verilmemiştir; her biri **tanıma hedefi**
olarak tanımlanmıştır. Aşağıdaki hesap tanımayı ölçüye bağlar.

## Göstergelerin Ölçülmesi

```js
// denetim.mjs — bir arayuzun karanlik kalip gostergelerinin olculmesi

// ---- 1) Caba asimetrisi: bir seye girmek ile cikmak arasindaki adim farki ----
const AKISLAR = [
  { ad: "odunc alma / iade", giris: 2, cikis: 2 },
  { ad: "teslim hatirlatmasi", giris: 1, cikis: 1 },
  { ad: "oneri bulteni", giris: 1, cikis: 4 },
  { ad: "uyelik", giris: 3, cikis: 7 },
];
console.log("akis                    giris adimi  cikis adimi  asimetri  esik (2x)");
for (const a of AKISLAR) {
  const asimetri = a.cikis / a.giris;
  console.log(
    `${a.ad.padEnd(23)} ${String(a.giris).padStart(11)} ${String(a.cikis).padStart(12)}` +
    ` ${(asimetri.toFixed(2) + "x").padStart(9)}  ${asimetri > 2 ? "ASILDI" : "gecti"}`
  );
}

// ---- 2) Gizli maliyet: ilk gorulen taahhut ile son toplam arasindaki fark ----
const MALIYETLER = [
  { ad: "odunc (ucretsiz)", ilk: 0, son: 0 },
  { ad: "gec iade cezasi", ilk: 0, son: 12 },
  { ad: "sube arasi tasima", ilk: 5, son: 5 },
  { ad: "rezervasyon + tasima + gecikme", ilk: 5, son: 23 },
];
console.log("\nkalem                            ilk gosterilen  son toplam  surpriz orani");
for (const m of MALIYETLER) {
  const surpriz = m.son === 0 ? 0 : (m.son - m.ilk) / m.son;
  console.log(
    `${m.ad.padEnd(32)} ${String(m.ilk).padStart(14)} ${String(m.son).padStart(11)}` +
    ` ${((surpriz * 100).toFixed(0) + " %").padStart(14)}  ${surpriz > 0.2 ? "ASILDI" : "gecti"}`
  );
}

// ---- 3) Kitlik iddiasinin veriyle bagi ----
// 12 kayit icin: gercek raf durumu ve arayuzde gosterilen "kalan nusha" iddiasi.
const GERCEK = [1, 4, 2, 7, 1, 3, 9, 2, 5, 1, 6, 8];
const IDDIALAR = {
  "veriden turetilen": [1, 4, 2, 7, 1, 3, 9, 2, 5, 1, 6, 8],
  "sabit uyari":       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
  "kismen bagli":      [1, 3, 2, 3, 1, 3, 3, 2, 3, 1, 3, 3],
};
function korelasyon(a, b) {
  const n = a.length;
  const oa = a.reduce((x, y) => x + y, 0) / n, ob = b.reduce((x, y) => x + y, 0) / n;
  let pay = 0, pa = 0, pb = 0;
  for (let i = 0; i < n; i++) { pay += (a[i] - oa) * (b[i] - ob); pa += (a[i] - oa) ** 2; pb += (b[i] - ob) ** 2; }
  return pb === 0 ? 0 : pay / Math.sqrt(pa * pb);
}
console.log("\niddia bicimi          gercek stokla korelasyon  esik (0.9)");
for (const [ad, v] of Object.entries(IDDIALAR)) {
  const r = korelasyon(GERCEK, v);
  console.log(`${ad.padEnd(21)} ${r.toFixed(3).padStart(24)}  ${r >= 0.9 ? "gecti" : "ASILDI"}`);
}

// ---- 4) Geri sayimin gercek bir son tarihe bagli olup olmadigi ----
// Ayni kullanicinin ardisik oturumlarinda gorulen "kalan sure" (dakika).
const OTURUMLAR = {
  "gercek son tarih": [58, 41, 27, 12, 3],
  "her oturumda sifirlanan": [10, 10, 10, 10, 10],
  "sayfa yenilendiginde sifirlanan": [10, 10, 9, 10, 10],
};
console.log("\ngeri sayim                       oturumlar            azalan mi");
for (const [ad, v] of Object.entries(OTURUMLAR)) {
  let azalan = true;
  for (let i = 1; i < v.length; i++) if (v[i] >= v[i - 1]) azalan = false;
  console.log(`${ad.padEnd(32)} ${v.join(", ").padEnd(20)} ${azalan ? "evet" : "HAYIR"}`);
}

// ---- 5) Bes gosterge birlikte: bir tasarim kararinin denetimi ----
// Olcut: kullanici karari nasil alindigini bilseydi ayni secimi yapar miydi?
// Gostergeler tek tek olculur; biri bile asilirsa karar karanlik kalip sayilir.
const KARARLAR = [
  { ad: "teslim hatirlatmasi acik varsayilan", pismanlik: 0.128, asimetri: 1.0, surpriz: 0.0, kaynak: 1.00, geriSayim: null },
  { ad: "oneri bulteni acik varsayilan",       pismanlik: 0.188, asimetri: 4.0, surpriz: 0.0, kaynak: 1.00, geriSayim: null },
  { ad: "son nusha uyarisi (stoktan)",         pismanlik: 0.000, asimetri: 1.0, surpriz: 0.0, kaynak: 1.00, geriSayim: null },
  { ad: "son nusha uyarisi (sabit)",           pismanlik: 0.000, asimetri: 1.0, surpriz: 0.0, kaynak: 0.00, geriSayim: null },
  { ad: "rezervasyon geri sayimi",             pismanlik: 0.000, asimetri: 1.0, surpriz: 0.0, kaynak: 1.00, geriSayim: false },
  { ad: "gecikme cezasi son adimda",           pismanlik: 0.000, asimetri: 1.0, surpriz: 0.52, kaynak: 1.00, geriSayim: null },
];
const ESIKLER = { pismanlik: 0.15, asimetri: 2.0, surpriz: 0.20, kaynak: 0.90 };
console.log("\nkarar                                 asilan gosterge                 sonuc");
for (const k of KARARLAR) {
  const asilan = [];
  if (k.pismanlik > ESIKLER.pismanlik) asilan.push("pismanlik");
  if (k.asimetri > ESIKLER.asimetri) asilan.push("caba asimetrisi");
  if (k.surpriz > ESIKLER.surpriz) asilan.push("gizli maliyet");
  if (k.kaynak < ESIKLER.kaynak) asilan.push("dayanaksiz iddia");
  if (k.geriSayim === false) asilan.push("sahte aciliyet");
  console.log(
    `${k.ad.padEnd(37)} ${(asilan.length === 0 ? "-" : asilan.join(", ")).padEnd(31)}` +
    ` ${asilan.length === 0 ? "mesru" : "KARANLIK KALIP"}`
  );
}
```

```
akis                    giris adimi  cikis adimi  asimetri  esik (2x)
odunc alma / iade                 2            2     1.00x  gecti
teslim hatirlatmasi               1            1     1.00x  gecti
oneri bulteni                     1            4     4.00x  ASILDI
uyelik                            3            7     2.33x  ASILDI

kalem                            ilk gosterilen  son toplam  surpriz orani
odunc (ucretsiz)                              0           0            0 %  gecti
gec iade cezasi                               0          12          100 %  ASILDI
sube arasi tasima                             5           5            0 %  gecti
rezervasyon + tasima + gecikme                5          23           78 %  ASILDI

iddia bicimi          gercek stokla korelasyon  esik (0.9)
veriden turetilen                        1.000  gecti
sabit uyari                              0.000  ASILDI
kismen bagli                             0.807  ASILDI

geri sayim                       oturumlar            azalan mi
gercek son tarih                 58, 41, 27, 12, 3    evet
her oturumda sifirlanan          10, 10, 10, 10, 10   HAYIR
sayfa yenilendiginde sifirlanan  10, 10, 9, 10, 10    HAYIR

karar                                 asilan gosterge                 sonuc
teslim hatirlatmasi acik varsayilan   -                               mesru
oneri bulteni acik varsayilan         pismanlik, caba asimetrisi      KARANLIK KALIP
son nusha uyarisi (stoktan)           -                               mesru
son nusha uyarisi (sabit)             dayanaksiz iddia                KARANLIK KALIP
rezervasyon geri sayimi               sahte aciliyet                  KARANLIK KALIP
gecikme cezasi son adimda             gizli maliyet                   KARANLIK KALIP
```

## Dört Göstergenin Okunması

**Çaba asimetrisi**, bir duruma girmek için gereken adım sayısının çıkmak için gereken
adım sayısına oranıdır. Ödünç alma ile iade her ikisi de iki adım; oran 1.00. Öneri
bülteni bir adımda açılıyor, dört adımda kapanıyor; oran 4.00. Bu ölçüm kütükten değil,
arayüzün kendisinden yapılır: iki akışı sayarak. Sayım hiçbir varsayım gerektirmediği için
en kolay denetlenen göstergedir.

**Sürpriz oranı**, son toplam bedelin taahhüt anında gösterilmemiş kısmının payıdır. Şube
arası taşıma ücreti baştan yazıldığı için oran sıfır. Gecikme cezası hiç gösterilmediği
için oran yüzde 100. Cezanın koşullu olması bir gerekçe değildir: kullanıcı ödünç alırken
gecikme durumunda ne olacağını bilmiyorsa, taahhüdünün bir kısmını görmemiştir.

**Kıtlık iddiasının veriyle bağı**, gösterilen azlık iddiasıyla gerçek stok arasındaki
korelasyondur. Veriden türetilen iddia 1.000 veriyor. Her kayda "son nüsha" yazan sabit
uyarı 0.000 veriyor — iddia hiçbir şeye karşılık gelmiyor. Üçüncü satır ara bir durumu
ölçüyor: iddia stokla kısmen ilişkili (0.807) ama stok üçün üstüne çıktığında sabitleniyor.
Kısmen doğru bir iddia, denetimi geçmez; kullanıcı sayıya baktığında onun bir ölçüm
olduğunu varsayar.

**Geri sayımın azalıyor olması**, aciliyetin gerçek bir son tarihe bağlı olup olmadığını
gösterir. Gerçek son tarihte ardışık oturumlarda görülen kalan süre azalır. Her oturumda
aynı değerden başlayan geri sayımda azalmaz. Üçüncü satır kolay kaçırılan bir biçimi
gösteriyor: değerler biraz oynuyor ama bir yöne gitmiyor; süre gerçekte akmıyor, yalnızca
akıyormuş gibi gösteriliyor.

## Denetimin Sonucu ve Sınırları

Son tablo beş göstergeyi altı karara birlikte uyguluyor. Ödünç akışındaki kararlardan
ikisi bütün eşikleri geçiyor; dördü en az bir eşiği aşıyor. Denetim, hangi göstergenin
aşıldığını da yazdığı için doğrudan bir düzeltme listesi üretir: öneri bülteninin
varsayılanı kapatılır ve kapatma adımı bire indirilir; sabit uyarı stok verisine bağlanır
ya da kaldırılır; geri sayım gerçek bir son tarihe bağlanır ya da kaldırılır; gecikme
cezası ödünç onayı ekranında yazılır.

Denetimin sınırları açıkça belirtilmelidir.

**Eşikler bir uzlaşımdır.** Çaba asimetrisinde iki kat, sürpriz oranında yüzde 20,
korelasyonda 0.90 — bunlar hesaplanmış değil, seçilmiş değerlerdir. Değerlerin işlevi
tartışmayı denetime çevirmektir: eşik yazılıysa bir kararın onu aşıp aşmadığı tartışılmaz,
ölçülür. Eşiğin kendisi tartışılabilir ve tartışılmalıdır.

**Bütün eşikleri geçen bir karar yine de kusurlu olabilir.** Denetim, ölçülebilir izler
bırakan kalıpları yakalar. Kullanıcıyı utandıran bir ret metni ("hayır, tasarruf etmek
istemiyorum") hiçbir sayıyı bozmaz; onay tuzağının bu biçimi ancak metin okunarak
görülür. Denetim bir tarama aracıdır, bir kanıt değil.

**Hiçbir gösterge dönüşüm artışıyla dengelenemez.** Bir kalıbın ödünç alma sayısını
yükseltmesi, denetimden geçtiği anlamına gelmez; Varsayılanların Gücü dersinde ve
İlerleme dersinde ölçüldüğü gibi bu yükselişin kaynağı kullanıcının yanılmasıdır. Yanılma
üzerine kurulmuş bir sayının büyüklüğü, kararın gerekçesi olamaz.

## Reddetmek

Bu konunun tamamı, tasarımcının kullanıcının kararı üzerinde ne kadar güç taşıdığını
göstermek içindi. Sonuç, gücün her tasarım kararında zaten kullanılıyor olmasıdır:
tarafsız bir varsayılan, tarafsız bir sıralama, tarafsız bir vurgu yoktur.

Bu yüzden mesleki tutum "etkilemekten kaçınmak" olamaz; kaçınmak mümkün değildir. Tutum
şudur:

**Kararın hangi göstergeyi yükselttiği yazılır.** Bir değişiklik önerildiğinde "neyi
artıracağı" açıkça söylenmelidir. Yükselen sayı ödünç alma mı, yoksa istemeden verilen
onay mı — bu ayrım yapılmadan tartışma yürütülemez.

**Ölçüt kullanıcı adına uygulanır.** Kullanıcı odada değildir; ölçütü onun yerine
uygulayacak olan tasarımcıdır. "Kullanıcı bunu bilseydi de aynı seçimi yapar mıydı"
sorusunun yanıtı hayırsa, karar reddedilir.

**Ret bir gerekçeyle verilir.** Yukarıdaki beş gösterge, reddin gerekçesini kişisel bir
tercih olmaktan çıkarıp denetlenebilir bir bulguya çevirir. "Bunu yapmak istemiyorum"
yerine "bu karar çaba asimetrisi eşiğini dört kat aşıyor ve kapatma adımı bire
indirilebilir" denir.

**Meşru bir alternatif önerilir.** Denetimden kalan her kararın, aynı amacı ölçütü
çiğnemeden karşılayan bir karşılığı çoğu zaman vardır: sahte kıtlık yerine gerçek stok
bilgisi, zorlaştırılmış iptal yerine simetrik akış, gizli maliyet yerine taahhüt anında
tam bedel.

## Özet

- Meşruluk ölçütü tektir: kullanıcı kararın nasıl alındığını bilseydi de aynı seçimi
  yapacaksa karar meşrudur; kararın gücü bilgisizlikten geliyorsa karanlık kalıptır.
- Beş kalıp tanıma hedefi olarak tanımlanır: acele ettirme, gizli maliyet, zorlaştırılmış
  iptal, onay tuzağı, sahte kıtlık.
- Dört gösterge ölçülebilir iz bırakır: çaba asimetrisi, sürpriz oranı, kıtlık iddiasının
  veriyle korelasyonu ve geri sayımın gerçekten azalıp azalmadığı.
- Denetim, aşılan göstergeyi yazdığı için doğrudan bir düzeltme listesi üretir; eşikler
  uzlaşımdır ve tartışmayı denetime çevirmek için yazılır.
- Denetim bir tarama aracıdır: bütün eşikleri geçen bir karar da kusurlu olabilir ve
  yükselen bir dönüşüm sayısı hiçbir göstergeyi dengelemez.
- Tasarımcının tutumu etkilemekten kaçınmak değil, kararın hangi sayıyı yükselttiğini
  yazmak, ölçütü kullanıcı adına uygulamak, reddi gerekçeye bağlamak ve meşru alternatifi
  önermektir.

## Sonraki Adım

Bu konu boyunca ölçütün uygulanabilmesi için sürekli bir şeye ihtiyaç duyuldu:
kullanıcının bilgili tercihini, gerçek görev süresini, yararlı ziyaret oranını bilmeye.
Bunların hiçbiri tahminle elde edilmez. Sonraki konu ölçmeye ayrılmıştır ve en temel
soruyla başlar: bir arayüzün iyi olduğu nasıl gösterilir? Görev başarımı, süre ve hata
oranı nasıl ölçülür, bu üç sayı nasıl tek bir ölçüte indirgenir ve ortalamanın yanıltıcı
olduğu yerler nerelerdir?
