---
title: 'Danışmanlık ve Koçluk'
source: 'https://academia.sh/tr/kurslar/mimarin-rolu/danismanlik-ve-kocluk'
course: 'Mimarın Rolü'
language: tr
updated: '2026-08-17T18:10:33+00:00'
license: 'CC BY-SA 4.0'
---

# Danışmanlık ve Koçluk

Aynı kararın buyruk, yazılı gerekçe ve birlikte çalışma biçimlerinde aktarılması: kalıp durum ile kenar durumun ayrılması, iki dalgalı bir modelde doğru uygulanma oranının ve aktarım maliyetinin ölçülmesi, ekip değişiminden sonra hangi aktarım biçiminin ayakta kaldığının sayılması.

Önceki ders kararın doğduğu koşulları ölçtü: karar verenin gördüğü grafik ne kadar tazeyse karar o
kadar uygulanabilir. Kararın uygulanabilir olması ise uygulanacağı anlamına gelmiyor. Üçüncü
dersin gözetim ölçümü kararların kodda karşılığını yitirdiğini gösterdi ama kararın ekibe nasıl
ulaştığını hiç ayırt etmedi.

Aynı karar üç ayrı biçimde aktarılabilir. **Buyruk**: kural duyurulur, gerekçe verilmez.
**Yazılı gerekçe**: kural, eşiği ve ödünleşimiyle birlikte yazılır — Sistem Tasarımına Giriş
kursunda kurulan karar kaydının biçimi budur. **Birlikte çalışma**: kararın ilk uygulaması birkaç
geliştiriciyle beraber yapılır; **danışman mimar** ve **koçluk** sözcükleri bu biçimi anlatır. Bu
ders üçünü aynı karar ve aynı durum kümesi üzerinde koşturur.

## Kalıp Durum ve Kenar Durum

Aktarım biçimleri arasındaki fark, kararın uygulandığı durumların hepsinde görünmez. Bir kararın
geçtiği durumlar ikiye ayrılır. **Kalıp durum**, kuralın sözüne birebir uyan durumdur: "uç
modüller veri erişim modülünü doğrudan ithal etmez" kuralı, bir uç modülde veri erişimine kenar
çekilirken doğrudan uygulanır. Bunun için gerekçeyi bilmek gerekmez, kuralı bilmek yeter.

**Kenar durum**, kuralın sözünün yetmediği durumdur: toplu iş modülü bir uç mudur, günlük rapor
sorgusunun geçmesi gereken katman hangisidir, dış katalog için yazılan yeni bir okuma yolu bu
kuralın kapsamına girer mi. Bu sorular ancak kararın **niçin** verildiği bilinerek yanıtlanır.
Modelde durumların %35'i kenar durumdur (**MN12**) ve üç aktarım biçimi yalnız bu durumlarda
ayrışır.

İkinci ayrım zamandır. Bir karar verildiği hafta uygulanıp bitmez; aylar sonra da uygulanmaya
devam eder ve o sırada ekip değişmiştir. Model bunu iki dalgayla kurar: ilk dalgada on iki
geliştirici, ikinci dalgadan önce dördü ayrılır ve yerlerine kararın aktarımını hiç almamış dört
kişi gelir (**MN13**).

## Ölçüm

Üç biçimin her biri geliştiriciye bir anlama düzeyi ve bir maliyet verir. Buyruk herkese ulaşır ve
ucuzdur; yazılı gerekçe de herkese ulaşır ama okunması gerekir; birlikte çalışma yalnız üç kişiye
doğrudan dokunur ve pahalıdır. Bütün olasılık ve saat değerleri modelin seçilmiş girdileridir
(**MN14**); ölçülen şey bu girdiler altındaki farktır. Aynı durum kümesi ve aynı atış dizisi üç
biçime de verilir, böylece karşılaştırma eşleştirilmiş olur.

```js
// mimari/aktarim.mjs — ayni kararin uc aktarim biciminde dogru uygulanma orani ve maliyeti
// MODEL kutuphane agi; gercek kisi ve ekip yoktur. Iki dalga: ikincisinden once 4 kisi ayrilir.
function uretec(tohum) { let s = tohum >>> 0; return () => (s = (s * 1664525 + 1013904223) >>> 0) / 2 ** 32; }

const KISI = 12, D1 = 8, D2 = 6, KENAR_ORANI = 0.35, AYRILAN = 4;
const SAAT = { buyruk: 2.2, "yazili gerekce": 10.0, "birlikte calisma": 24.0 };
const DOGRUDAN = { buyruk: KISI, "yazili gerekce": KISI, "birlikte calisma": 3 };
const BICIMLER = Object.keys(SAAT);

function kosum(tohum) {
  const rast = uretec(tohum);
  const durum = (kisiler, adet) => kisiler.flatMap((k) =>
    Array.from({ length: adet }, () => ({ kisi: k, kenar: rast() < KENAR_ORANI, atis: rast() })));

  const eski = [...Array(KISI).keys()];
  const D = { bir: durum(eski, D1) };
  const okur = Array.from({ length: KISI + AYRILAN }, () => rast() < 0.7); // gerekceyi okuyanlar
  const eslik = new Set();
  while (eslik.size < 3) eslik.add(Math.floor(rast() * KISI));              // birlikte calisilanlar
  const ayrilan = new Set();
  while (ayrilan.size < AYRILAN) ayrilan.add(Math.floor(rast() * KISI));
  const yeni = Array.from({ length: AYRILAN }, (_, i) => KISI + i);
  const ikinciEkip = [...eski.filter((k) => !ayrilan.has(k)), ...yeni];
  D.iki = durum(ikinciEkip, D2);
  const eslikKalan = [...eslik].filter((k) => !ayrilan.has(k)).length;

  // olasilik: kalip durumda kuralin bilinmesi yeter, kenar durumda gerekcenin anlasilmasi gerekir
  const P = {
    buyruk: (k, kenar) => (k >= KISI ? (kenar ? 0.10 : 0.30) : kenar ? 0.15 : 0.95),
    "yazili gerekce": (k, kenar) => (kenar ? (okur[k] ? 0.60 : 0.15) : 0.95),
    "birlikte calisma": (k, kenar) => (k >= KISI
      ? (eslikKalan ? (kenar ? 0.50 : 0.95) : kenar ? 0.15 : 0.60)
      : kenar ? (eslik.has(k) ? 0.95 : 0.50) : 0.95),
  };
  const say = (bicim, liste) => liste.filter((d) => d.atis < P[bicim](d.kisi, d.kenar)).length;
  return { eslikKalan, kenar1: D.bir.filter((d) => d.kenar).length, kenar2: D.iki.filter((d) => d.kenar).length,
    n1: D.bir.length, n2: D.iki.length,
    bicim: Object.fromEntries(BICIMLER.map((b) => [b, { d1: say(b, D.bir), d2: say(b, D.iki) }])) };
}

const TOHUM = 5150;
const r = kosum(TOHUM);
const sut = (s, n) => String(s).padEnd(n);
console.log(`${KISI} gelistirici; birinci dalga ${r.n1} durum (${r.kenar1} kenar), ikinci dalga ${r.n2} durum (${r.kenar2} kenar)`);
console.log(`tohum ${TOHUM}; ikinci dalgadan once ${AYRILAN} kisi ayrildi, birlikte calisilan ${r.eslikKalan}/3 kisi kaldi\n`);
console.log(sut("aktarim bicimi", 19) + sut("dalga 1", 11) + sut("dalga 2", 11) + sut("toplam", 15) + sut("saat", 8) + "dogrudan kisi");
console.log("-".repeat(81));
for (const b of BICIMLER) {
  const v = r.bicim[b], t = v.d1 + v.d2;
  console.log(sut(b, 19) + sut(`${v.d1}/${r.n1}`, 11) + sut(`${v.d2}/${r.n2}`, 11) +
    sut(`${t}/${r.n1 + r.n2} (${((t / (r.n1 + r.n2)) * 100).toFixed(0)}%)`, 15) + sut(SAAT[b].toFixed(1), 8) + DOGRUDAN[b]);
}

console.log("\nbir onceki bicime gore artis (bu tohumda):");
for (let i = 1; i < BICIMLER.length; i++) {
  const a = r.bicim[BICIMLER[i - 1]], b = r.bicim[BICIMLER[i]];
  const dt = (b.d1 + b.d2) - (a.d1 + a.d2), ds = SAAT[BICIMLER[i]] - SAAT[BICIMLER[i - 1]];
  console.log(`  ${sut(BICIMLER[i], 19)}+${sut(dt, 4)}dogru  +${sut(ds.toFixed(1), 6)}saat  saat basina ${(dt / ds).toFixed(2)} dogru`);
}

// tek tohum gurultulu olabilir: 200 tohumda ortalama
const N = 200;
const top = Object.fromEntries(BICIMLER.map((b) => [b, { d1: 0, d2: 0 }]));
for (let t = 0; t < N; t++) {
  const k = kosum(1000 + t * 7);
  for (const b of BICIMLER) { top[b].d1 += k.bicim[b].d1; top[b].d2 += k.bicim[b].d2; }
}
console.log(`\n${N} tohumda ortalama dogru uygulama:`);
console.log(sut("aktarim bicimi", 19) + sut("dalga 1", 10) + sut("dalga 2", 10) + sut("toplam", 10) + "saat basina");
console.log("-".repeat(62));
for (const b of BICIMLER) {
  const d1 = top[b].d1 / N, d2 = top[b].d2 / N;
  console.log(sut(b, 19) + sut(d1.toFixed(1), 10) + sut(d2.toFixed(1), 10) + sut((d1 + d2).toFixed(1), 10) + ((d1 + d2) / SAAT[b]).toFixed(2));
}
const ort = (b) => (top[b].d1 + top[b].d2) / N;
console.log(`\ndalga 2 farki: yazili gerekce ${(top["yazili gerekce"].d2 / N).toFixed(1)}, birlikte calisma ${(top["birlikte calisma"].d2 / N).toFixed(1)}, buyruk ${(top.buyruk.d2 / N).toFixed(1)}`);
console.log(`yazili gerekce - buyruk = ${(ort("yazili gerekce") - ort("buyruk")).toFixed(1)} dogru, +7.8 saat -> saat basina ${((ort("yazili gerekce") - ort("buyruk")) / 7.8).toFixed(2)}`);
console.log(`birlikte calisma - yazili gerekce = ${(ort("birlikte calisma") - ort("yazili gerekce")).toFixed(1)} dogru, +14.0 saat -> saat basina ${((ort("birlikte calisma") - ort("yazili gerekce")) / 14).toFixed(2)}`);
```

```
12 gelistirici; birinci dalga 96 durum (27 kenar), ikinci dalga 72 durum (26 kenar)
tohum 5150; ikinci dalgadan once 4 kisi ayrildi, birlikte calisilan 2/3 kisi kaldi

aktarim bicimi     dalga 1    dalga 2    toplam         saat    dogrudan kisi
---------------------------------------------------------------------------------
buyruk             71/96      43/72      114/168 (68%)  2.2     12
yazili gerekce     83/96      59/72      142/168 (85%)  10.0    12
birlikte calisma   84/96      62/72      146/168 (87%)  24.0    3

bir onceki bicime gore artis (bu tohumda):
  yazili gerekce     +28  dogru  +7.8   saat  saat basina 3.59 dogru
  birlikte calisma   +4   dogru  +14.0  saat  saat basina 0.29 dogru

200 tohumda ortalama dogru uygulama:
aktarim bicimi     dalga 1   dalga 2   toplam    saat basina
--------------------------------------------------------------
buyruk             64.7      37.7      102.4     46.56
yazili gerekce     75.1      56.3      131.4     13.14
birlikte calisma   80.1      58.9      139.1     5.79

dalga 2 farki: yazili gerekce 56.3, birlikte calisma 58.9, buyruk 37.7
yazili gerekce - buyruk = 29.0 dogru, +7.8 saat -> saat basina 3.71
birlikte calisma - yazili gerekce = 7.7 dogru, +14.0 saat -> saat basina 0.55
```

## Üç Biçimin Farkı

Tek tohumlu tabloda üç biçim sırasıyla %68, %85 ve %87 doğru uygulama veriyor. İki yüz tohumda
ortalama toplamlar 102,4, 131,4 ve 139,1. Sıra beklendiği gibi; asıl bilgi **artışların
biçimi**nde.

Buyruktan yazılı gerekçeye geçmek ortalama **29 doğru uygulama** kazandırıyor ve 7,8 saate mal
oluyor: saat başına 3,71. Yazılı gerekçeden birlikte çalışmaya geçmek **7,7 doğru uygulama**
kazandırıyor ve 14 saate mal oluyor: saat başına 0,55. İki artış arasındaki oran yaklaşık yedi
kat. Bu, koçluğun değersiz olduğunu söylemiyor; söylediği şey, gerekçenin yazılmamış olduğu bir
yerde koçlukla başlamanın en pahalı yol olduğudur.

Sağdaki "saat başına" sütunu ise ters yönde okunmalı. Buyruk saat başına 46,56 doğru uygulama
üretiyor, birlikte çalışma 5,79. Ortalama verim en ucuz biçimde en yüksektir ve bu her zaman
böyledir; ucuz olanın verimi yüksek, sonucu düşüktür. Bir aktarım biçimini ortalama verime bakarak
seçmek, buyruğu seçmek demektir. Karar, **artışa** bakılarak verilir: bir sonraki saat kaç doğru
uygulama getiriyor.

## Ekip Değiştiğinde Ne Kalıyor

İkinci dalga sütunu bu dersin asıl bulgusudur. İlk dalgada buyruk ile yazılı gerekçe arasındaki
ortalama fark 10,4 doğru uygulama (64,7'ye karşı 75,1). İkinci dalgada, yani dört kişi ayrılıp
yerlerine yeni kişiler geldikten sonra fark **18,6**'ya çıkıyor (37,7'ye karşı 56,3). Buyruk
zamanla değil, **kişi değişimiyle** çöküyor: duyuruyu duymamış birinin elinde kalıp durum bile
belirsizdir.

Birlikte çalışmanın ikinci dalgadaki değeri 58,9, yazılı gerekçenin 56,3 — aradaki fark 2,6. Bu
fark, birlikte çalışılan kişilerin ayrılıp ayrılmadığına bağlı. Tek tohumlu koşumda üç kişiden
ikisi kalmıştı; hiçbiri kalmasaydı biçim buyruğa yaklaşırdı. Koçluğun aktardığı şey bir belgede
değil, bir kişide duruyor ve o kişiyle birlikte gidebiliyor.

Üç biçim için tek cümlelik sonuç şudur ve üçü de bir sayıya bağlı: buyruk en ucuz aktarımdır ve
kenar durumların %15'ini doğru geçer; yazılı gerekçe orta maliyetlidir, kenar durumların yarısından
çoğunu doğru geçer ve ekip değiştiğinde ayakta kalır; birlikte çalışma en yüksek doğruluğu verir,
en pahalıdır ve dayanıklılığı birlikte çalışılan kişilerin kalmasına bağlıdır.

## Özet

- Aktarım biçimleri kalıp durumlarda ayrışmaz; fark yalnız kararın gerekçesini gerektiren kenar
  durumlardan gelir, modelde durumların %35'i kenar durumdur.
- Aynı 168 durumda üç biçim %68, %85 ve %87 doğru uygulama verdi; iki yüz tohumdaki ortalamalar
  102,4, 131,4 ve 139,1 oldu.
- Artışlar eşit değil: buyruktan yazılı gerekçeye geçiş saat başına 3,71 doğru uygulama, yazılı
  gerekçeden birlikte çalışmaya geçiş saat başına 0,55 getiriyor.
- Ortalama verim en ucuz biçimde en yüksektir (buyruk 46,56, birlikte çalışma 5,79); aktarım
  biçimi ortalama verime değil artışa bakılarak seçilir.
- Ekip değişimi buyruk ile yazılı gerekçe arasındaki farkı 10,4'ten 18,6'ya çıkarıyor; koçluğun
  kazancı birlikte çalışılan kişilerin kalmasına bağlıdır, yazılı gerekçeninki değildir.

## Sonraki Adım

Bu konu mimarın rolünü tanımladı ve her parçasını bir sayıya bağladı: kararın ne olduğu geri alma
maliyetiyle, düzeyi kapsadığı birim sayısıyla, sorumlulukları gözetimsiz kararın uygulanma
oranıyla, koddan kopmanın bedeli ölü karar oranıyla, aktarım biçimi de doğru uygulanma oranıyla
ölçüldü.

Bütün bu ölçümlerde kararlar hazır girdi olarak alındı. Karar kümesi verildi, kapsamı ölçüldü,
aktarıldı ve izlendi — ama **kararın kendisi nasıl verilir** sorusuna hiç girilmedi. Çelişen iki
kalite niteliği arasında seçim nasıl yapılır; bir sistemdeki karmaşıklığın hangisi işin
doğasından gelir ve hangisi sonradan eklenmiştir; hangi kararın geri alınabilir olduğu karar
anında nasıl bilinir; bir teknoloji seçiminin çıkış maliyeti nasıl hesaplanır. Sonraki konu bu
sorulara geçer ve ilki en zorudur: iki nitelik birbiriyle çelişiyorsa, kazananı seçen ağırlıklar
nereden gelir ve ağırlık değiştiğinde kazanan değişir mi.
