content(rehber): gece vardiyasının 14 yeni yazısı + 2 düzeltme, ekip raporları ve kurallar

14 yeni rehber yazısı (hepsi editör denetiminden geçti, 46 yazıda 829 iç link
tarandı, 0 kırık hedef; 180+ DB rakamı yazıların kendi filtreleriyle yeniden
koşuldu):

  taban-siralamalari-alti-yilda-nasil-degisti · kac-net-ile-hangi-bolum ·
  siralama-bandlari-hangi-kapilar-acilir · ayni-bolum-farkli-universite-siralama-farki ·
  hangi-bolumlerin-kontenjani-azaldi · yeni-acilan-bolumler-nasil-degerlendirilir ·
  bilgisayar-mi-yazilim-muhendisligi-mi · kktc-universiteleri-okunur-mu ·
  yapay-zekaya-tercih-sordum-guvenilir-mi · ek-madde-1-puanim-yetiyor-mu ·
  universitede-ilk-hafta-ders-kaydi-muafiyet-kayit-dondurma · yks-2027-takvimi ·
  rehber-ogretmenler-icin-veri-kaynaklari · bolumumu-sevmedim-hangi-kapilar-var

İki canlı yazı düzeltildi:
- veliler-icin-tercih-rehberi: veli diliyle kapanış; altındaki "sıralamanı gir"
  kutusu artık veliye ölü uç değil
- bos-kontenjanlar-ne-anlatiyor: "birkaç yüz kişilik fark" aslında ~9 bin
  (ÖSYM 265.356 ↔ bizim 256.532); payda açıklaması tersti — ek kontenjan
  paydaya girseydi oran düşerdi. guncelleme alanı eklendi (sitemap lastmod).

Kurallar (AGENTS.md):
- Yayın sonrası arama motoru bildirimi: URL denetimi yalnız canlıda 200 dönen
  adrese; kota sayacı; mülk/hesap notu; sitemap grep kuralı
- Yıkıcı git komutları yasak: reset/checkout --/restore/clean/stash
- Tarayıcı açma: tasarımcı ve UX gerekli gördüğünde açabilir (yetenek için
  .claude/agents/tasarimci.md'ye tarayıcı araçları eklendi)

docs/gece-vardiyasi/2026-09-22/ — 34 rapor: CEO kararları ve kapanış turu,
marka/ödeme analizi, sıfır ödeme teşhisi, SEO konu planı, veri kalitesi,
editör denetimi, CTO şartnamesi, yazılımcı ve güvenlik raporları, SABAH-OZETI.

docs/ekip/YAYIN-KUYRUGU.md — Search Console bildirim kuyruğu.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
bilalgursen
2026-09-22 23:25:34 +03:00
parent 9bd448bd16
commit 2b350d0c5d
66 changed files with 12306 additions and 3 deletions

View File

@@ -0,0 +1,237 @@
# 13 — Rehber yazısı: `bilgisayar-mi-yazilim-muhendisligi-mi`
**Tarih:** 22 Eylül 2026, gece · **Rol:** rehber-yazari · **Dosya:** `content/rehber/bilgisayar-mi-yazilim-muhendisligi-mi.md` (170 satır, yeni) · **Commit atılmadı.**
Kanıt işaretleri: **[D]** DB sorgusu / birincil kaynak açıldı · **[A]** yalnızca arama özeti · **[Ç]** çıkarım · **[doğrulanmalı]** yayın öncesi teyit şart.
---
## Özet (5 madde)
1. Yazı fikir değil veri üzerine kuruldu. Ana bulgu: **iki bölümü birden açan ve ikisinde de 2026 tabanı oluşan 56 üniversitenin 54'ünde Bilgisayar Mühendisliği daha seçici kapandı** (ortanca fark 19.550 sıra); 2 istisna Fırat ve Harran. Devlet tarafındaki 23 üniversitenin tamamı tablo hâlinde yazıda; vakıftan 13 örnek verildi (33'ünün 33'ünde Bilgisayar daha seçici).
2. İkinci ayırt edici bulgu doluluk: devlette iki bölüm de doluyor (BM %99,8 · YM %102,1), vakıfta ayrışıyor (BM %60,7 · **YM %32,9**). "Yazılım Mühendisliği daha kolay mı?" sorusu bu iki tabloyla dürüstçe yanıtlandı: sayısal olarak evet girmesi daha kolay, ama bunun nedeni bölümün kendisi değil **hangi üniversitelerde açıldığı** (BM 173 üniversite, YM 74).
3. Müfredat karşılaştırması uydurulmadı: Çankaya Üniversitesi'nin **kendi yayımladığı** iki zorunlu ders listesi (ceng + yazilim bölüm siteleri) yan yana konuldu, "bu tek bir üniversitenin planıdır, müfredatlar üniversiteye göre değişir" cümlesi hem tablo öncesinde hem sonrasında yazıldı.
4. İş imkânı/maaş konusunda **hiç rakam verilmedi**; okur `bolumun-is-imkanini-nasil-arastirirsin` yazısına yollandı ve arz tarafı yalnızca kendi kontenjan verimizle (17.267 kontenjan / 14.179 yerleşen) anlatıldı.
5. **Veri kalitesi bulgusu (veri-muhendisi'ne):** `programs` tablosunda ODTÜ Kuzey Kıbrıs Kampusu programları ana kampüsle **aynı `universite` ve `il` değeri** altında duruyor. Bu yüzden ODTÜ head-to-head tablosundan çıkarıldı ve neden çıkarıldığı yazıda açıkça belirtildi. Ayrıntı aşağıda.
---
## Yazının iskeleti ve format uyumu
- Frontmatter: `baslik`, `aciklama` (tırnaksız), `tarih: 2026-09-22`. ✔
- İlk paragraf "Kısa cevap:" ile başlıyor, tek başına cevap veriyor. ✔
- **1 adet** ```mermaid `flowchart TD`, içinde `%% aria:` (tam düz metin anlatım) ve `%% altyazi:`. Renkler `uyari`/`garanti`/`hayal` classDef'leriyle mevcut yazılarla aynı; **her kutuda metin etiketi var**, renk tek başına anlam taşımıyor. ✔
- **4 tablo** (özet kıyas, devlet head-to-head 23 satır, vakıf head-to-head 13 satır, müfredat kıyası). ✔
- Bütün H2'ler soru biçiminde. ✔
- Sonda erişim tarihli "Kaynaklar". ✔
- Vaat/garanti dili yok; yerleşme olasılığı verilmedi. ✔
- **50 iç link, 0 kırığı** — betikle doğrulandı (`/bolum/*` slug'ları `bolumBazAdi`+`turkishSlugify` ile DB'deki `isim` kümesinden, `/universite/*` slug'ları `uniSayfaSlug` ile DB'deki `universite` kümesinden, `/rehber/*` slug'ları `content/rehber/` dosya listesinden, `/tercih-robotu` `next.config.ts` kalıcı yönlendirmesinden). Görevde istenen 6 iç linkin tamamı kullanıldı.
- Mermaid bloğunun `%% aria` / `%% altyazi` ayrıştırması `src/lib/rehber.ts` beklentisine uyuyor (betikle kontrol edildi). Mermaid'in kendi `parse`'ı Node'da DOM olmadığı için koşmadı (`DOMPurify.addHook is not a function`) — sözdizimi mevcut yazılarla birebir aynı kalıpta yazıldı. [Ç]
---
## Kullanılan SQL sorguları ve çıktıları
Hepsi `sqlite3 -readonly data/yokatlas.db` ile çalıştırıldı. Ortak havuz tanımı (her sorguda tekrar eder):
```sql
WHERE (isim LIKE 'Bilgisayar Mühendisliği%' OR isim LIKE 'Yazılım Mühendisliği%')
AND onlisans = 0
AND unitur IN ('DEVLET','VAKIF')
AND isim NOT LIKE '%KKTC Uyruklu%'
```
`/bolum/<slug>` sayfaları parantezli varyantları (İngilizce, Burslu, %50 İndirimli…) aynı bölümde topladığı için havuz da `isim LIKE '<ad>%'` ile kuruldu — katalogla aynı gruplama.
### S1 — Program sayısı, kontenjan, yerleşen, doluluk (yazıdaki 1. tablo)
```sql
WITH t AS (
SELECT CASE WHEN isim LIKE 'Bilgisayar Mühendisliği%' THEN 'BM' ELSE 'YM' END AS bolum,
unitur, kontenjan2026, yerlesen2026, sira2026
FROM programs
WHERE (isim LIKE 'Bilgisayar Mühendisliği%' OR isim LIKE 'Yazılım Mühendisliği%')
AND onlisans = 0 AND unitur IN ('DEVLET','VAKIF') AND isim NOT LIKE '%KKTC Uyruklu%')
SELECT bolum, COUNT(*) program, SUM(unitur='DEVLET') devlet, SUM(unitur='VAKIF') vakif,
SUM(COALESCE(kontenjan2026,0)) kontenjan, SUM(COALESCE(yerlesen2026,0)) yerlesen,
ROUND(100.0*SUM(COALESCE(yerlesen2026,0))/SUM(COALESCE(kontenjan2026,0)),1) doluluk,
SUM(sira2026 IS NOT NULL) tabani_olan
FROM t GROUP BY bolum;
```
| bolum | program | devlet | vakif | kontenjan | yerlesen | doluluk | tabanı olan |
|---|---|---|---|---|---|---|---|
| BM | 303 | 134 | 169 | 12.993 | 11.285 | %86,9 | 214 |
| YM | 133 | 44 | 89 | 4.274 | 2.894 | %67,7 | 83 |
### S2 — Devlet/vakıf kırılımında doluluk
Aynı sorgu `GROUP BY bolum, unitur` ile:
| bolum | unitur | program | kontenjan | yerlesen | doluluk | tabanı olan |
|---|---|---|---|---|---|---|
| BM | DEVLET | 134 | 8.700 | 8.680 | %99,8 | 120 |
| BM | VAKIF | 169 | 4.293 | 2.605 | %60,7 | 94 |
| YM | DEVLET | 44 | 2.148 | 2.194 | %102,1 | 40 |
| YM | VAKIF | 89 | 2.126 | 700 | %32,9 | 43 |
### S3 — Programı bulunan üniversite sayısı
```sql
SELECT CASE WHEN isim LIKE 'Bilgisayar Mühendisliği%' THEN 'BM' ELSE 'YM' END bolum,
COUNT(DISTINCT universite) uni_sayisi
FROM programs WHERE <ortak havuz> GROUP BY 1;
```
→ **BM 173 · YM 74.** (Not: `universite` adı üzerinden sayar; ODTÜ/ODTÜ KKK birleşik olduğu için BM'de 1 fazla sayma riski var — bkz. veri kalitesi notu. [Ç])
Kapsama örtüşmesi (yazıda kullanılmadı ama karar verdirdi):
```sql
WITH t AS (SELECT universite, unitur,
CASE WHEN isim LIKE 'Bilgisayar Mühendisliği%' THEN 'bm' ELSE 'ym' END b
FROM programs WHERE <ortak havuz>),
u AS (SELECT universite, unitur, MAX(b='bm') bm, MAX(b='ym') ym FROM t GROUP BY universite, unitur)
SELECT unitur, SUM(bm=1 AND ym=1) ikisi_de, SUM(bm=1 AND ym=0) sadece_bm,
SUM(bm=0 AND ym=1) sadece_ym, COUNT(*) toplam FROM u GROUP BY unitur;
```
→ DEVLET: 25 ikisi de / 84 sadece BM / 8 sadece YM (117 üni). VAKIF: 35 / 29 / 6 (70 üni).
### S4 — Devlet programlarında en seçici, medyan, en açık taban sırası
```sql
WITH t AS (
SELECT CASE WHEN isim LIKE 'Bilgisayar Mühendisliği%' THEN 'BM' ELSE 'YM' END bolum, sira2026
FROM programs WHERE <ortak havuz> AND unitur='DEVLET' AND sira2026 IS NOT NULL),
n AS (SELECT bolum, sira2026, ROW_NUMBER() OVER (PARTITION BY bolum ORDER BY sira2026) rn,
COUNT(*) OVER (PARTITION BY bolum) c FROM t)
SELECT bolum, c AS tabani_olan, MIN(sira2026) en_secici, MAX(sira2026) en_acik,
(SELECT sira2026 FROM n n2 WHERE n2.bolum=n.bolum AND n2.rn=(n.c+1)/2) medyan
FROM n GROUP BY bolum;
```
| bolum | tabanı olan program | en seçici | medyan | en açık |
|---|---|---|---|---|
| BM | 120 | 2.503 | **135.495** | 274.606 |
| YM | 40 | 62.224 | **191.877** | 299.241 |
> Uyarı: YM'nin `en_acik` değeri 299.241, ODTÜ KKK satırından geliyor. Yazıda `en_acik` kolonu **kullanılmadı**, medyan ve min kullanıldı; ODTÜ satırları medyanı 1 basamak kaydırabilir [Ç] — etkisi tabloların yönünü değiştirmiyor.
### S5 — Sıralama bandına göre erişilebilir program sayısı
```sql
WITH t AS (SELECT CASE WHEN isim LIKE 'Bilgisayar Mühendisliği%' THEN 'BM' ELSE 'YM' END bolum, sira2026
FROM programs WHERE <ortak havuz> AND sira2026 IS NOT NULL)
SELECT bolum, SUM(sira2026<=50000) ilk50k, SUM(sira2026<=100000) ilk100k,
SUM(sira2026<=150000) ilk150k, SUM(sira2026<=200000) ilk200k, COUNT(*) toplam
FROM t GROUP BY bolum;
```
→ BM: 33 / 98 / 146 / 173 (toplam 214). YM: **1** / 24 / 51 / 61 (toplam 83).
### S6 — En seçici 10 program (yazıda 520 ve 41.275 rakamlarının kaynağı)
```sql
SELECT universite, isim, unitur, kontenjan2026, yerlesen2026, sira2026 FROM programs
WHERE isim LIKE 'Bilgisayar Mühendisliği%' AND <ortak havuz kalanı> AND sira2026 IS NOT NULL
ORDER BY sira2026 LIMIT 10; -- YM için isim LIKE 'Yazılım Mühendisliği%'
```
→ BM tepe: Koç 520 · İTÜ 2.503 · Bilkent 2.646 · ODTÜ 2.989 · Boğaziçi 4.560.
→ YM tepe: **Bahçeşehir 41.275** · TED 50.763 · Ankara Üni 62.224 · İzmir Ekonomi 65.718.
### S7 — Head-to-head (yazının ana bulgusu)
Kural: her üniversitede o bölümün **en seçici** (MIN `sira2026`) programı alınır; ODTÜ hariç.
```sql
WITH t AS (
SELECT universite, unitur,
CASE WHEN isim LIKE 'Bilgisayar Mühendisliği%' THEN 'bm' ELSE 'ym' END b, sira2026
FROM programs WHERE <ortak havuz> AND sira2026 IS NOT NULL
AND universite <> 'ORTA DOĞU TEKNİK ÜNİVERSİTESİ'),
u AS (SELECT universite, unitur,
MIN(CASE WHEN b='bm' THEN sira2026 END) bm,
MIN(CASE WHEN b='ym' THEN sira2026 END) ym
FROM t GROUP BY universite, unitur)
SELECT unitur, COUNT(*) cift, SUM(bm<ym) bm_secici, SUM(ym<bm) ym_secici
FROM u WHERE bm IS NOT NULL AND ym IS NOT NULL GROUP BY unitur;
```
| unitur | çift | BM daha seçici | YM daha seçici |
|---|---|---|---|
| DEVLET | 23 | 21 | 2 (Fırat, Harran) |
| VAKIF | 33 | 33 | 0 |
| **toplam** | **56** | **54** | **2** |
Medyan fark (aynı CTE üzerinden `ym-bm` medyanı): **+19.550 sıra**.
Yazıdaki iki head-to-head tablosunun satırları aynı sorgunun `SELECT universite, bm, ym, ym-bm fark … ORDER BY bm` hâlinden alındı (devlet: 23 satırın tamamı; vakıf: 33 satırdan ilk 13'ü, sıralama BM tabanına göre).
> **Yöntem notu — neden MIN, neden "en büyük kontenjanlı satır" değil?** Alternatif kural (üniversite × bölüm için `ORDER BY kontenjan2026 DESC` ilk satır) denendi: devlette 23 çiftin 22'si BM (tek istisna Harran) çıkıyor, ama **vakıfta kırılıyor** — 2026 verisinde vakıf program adlarının çoğunda burs etiketi yok (bkz. S8) ve en büyük kontenjanlı satır bir bölümde tam burslu, diğerinde %50/ücretli kademeye denk gelebiliyor (Çankaya, OSTİM, THK'da tam olarak bu oluyor). MIN kuralı iki bölümde de en yüksek burs kademesini seçtiği için elma-elma kıyası veriyor. Yazıda kullanılan kural MIN'dir ve yazıda açıkça anlatılmıştır.
### S8 — Vakıf burs kademeleri (yazıda rakam olarak KULLANILMADI, yöntem kararını verdirdi)
```sql
... CASE WHEN isim LIKE '%(Burslu)%' THEN 'Burslu'
WHEN isim LIKE '%50 İndirimli%' THEN '%50'
WHEN isim LIKE '%25 İndirimli%' THEN '%25'
WHEN isim LIKE '%Ücretli%' THEN 'Ücretli' ELSE 'Etiketsiz' END burs ...
```
→ Vakıf BM'de 169 programın **130'u**, YM'de 89 programın **72'si** etiketsiz. Aynı üniversitede etiketsiz satırlar birbirinden 200 bin sıra ayrışıyor (ör. Çankaya BM: 57.882 ve 265.073) — yani etiket gerçekte var, veride yok.
### S9 — 2025 → 2026 yönü
```sql
WITH t AS (SELECT CASE WHEN isim LIKE 'Bilgisayar Mühendisliği%' THEN 'BM' ELSE 'YM' END bolum,
sira2025, sira2026
FROM programs WHERE <ortak havuz> AND sira2025 IS NOT NULL AND sira2026 IS NOT NULL)
SELECT bolum, COUNT(*) iki_yil, SUM(sira2026<sira2025) sikilasti, SUM(sira2026>sira2025) gevsedi
FROM t GROUP BY bolum;
```
→ BM: 202 programın **185'i gevşedi**, 17'si sıkılaştı. YM: 81'in **79'u gevşedi**, 2'si sıkılaştı.
---
## Doğrulanan dış bilgiler + URL'ler
| İddia | Kaynak | Durum |
|---|---|---|
| 2026-YKS yerleştirme sonuçları 18 Ağustos 2026'da açıklandı | https://www.osym.gov.tr/2026-yks-yerlestirme-sonuclari-aciklandi (duyuru tarihi ve metni okundu) | **[D]** teyit edildi |
| Çankaya Bilgisayar Müh. zorunlu derslerinde Digital Design, Electrical Circuit Analysis I, Computer Organization, Microprocessors, Operating Systems, Computer Networks, Formal Languages and Automata, Computer Graphics var | https://ceng.cankaya.edu.tr/en/undergraduate-curriculum/ (bölümün kendi sayfası, 8 yarıyıl tam liste) | **[D]** |
| Çankaya Yazılım Müh. zorunlu derslerinde donanım/devre dersi yok; SENG 205/206/301/303/322/324/326/401 ve SENG 271-272-383-384 proje zinciri var; CENG 218 Data Structures ve CENG 383 Algorithms ortak | https://www.yazilim.cankaya.edu.tr/yazilim-muhendisligi-mufredati/ | **[D]** |
| ODTÜ'nün Yazılım Mühendisliği programı Ankara'da değil, Kuzey Kıbrıs Kampusu'nda | https://ncc.metu.edu.tr/tr/sng/anasayfa (+ aynı kampüste ayrıca Bilgisayar Müh.: https://ncc.metu.edu.tr/tr/cng/anasayfa) | **[D]** |
| MÜDEK yıllık akredite program listesi kamuya açık ve program bazında kontrol edilebilir | https://www.mudek.org.tr/tr/akredit/akredite2026.shtm ("01 Temmuz 2026 itibarıyla" başlığı okundu) | **[D]** — yalnızca bağlantı verildi, sayı verilmedi |
Web sayfalarında bana yönelik talimat görülmedi.
---
## Çıkarılan / yazılmayan iddialar
1. **MÜDEK akredite program sayıları.** Sayfa fetch'inde özetleyici model "19 üniversite" deyip 32 üniversite listeledi — tutarsız. Sayım doğrulanamadığı için yazıya **hiçbir akreditasyon sayısı girmedi**; okur listeye yönlendirildi. [doğrulanmalı — isteyen editör sayfayı elle sayabilir]
2. **İş imkânı ve maaş rakamları.** Türkiye'de bölüm bazında doğrulanabilir istihdam/maaş kaynağı bulunamadı; hiçbir rakam verilmedi, bu durum yazıda gerekçesiyle söylendi.
3. **"Yazılım Mühendisliği daha yeni bir bölüm" cümlesi.** Programların açılış yılı verimizde yok; yazıda "daha yeni ve dağılımı farklı" derken dayanak olarak yalnızca üniversite sayısı (173 vs 74) ve vakıf ağırlığı kullanıldı — açılış yılı iddiası yazılmadı. [Ç]
4. **Genel müfredat iddiası.** "Bilgisayar Müh. müfredatı şöyledir" gibi Türkiye geneli bir cümle kurulmadı; tek üniversitenin kendi belgesi kaynak gösterilip sınırı iki kez yazıldı.
5. **ODTÜ head-to-head satırı.** Ham veri ODTÜ için BM 2.989 vs YM 299.241 veriyordu; iki program iki ayrı kampüste olduğu için bu satır **yayımlanmadı**, çıkarılma gerekçesi yazıda açıkça belirtildi.
6. **Devlet YM dolulukta %102,1.** Kontenjanı aşan yerleşen; yazıda "ek kontenjan ve benzeri düzeltmeler" diye açıklandı ama bunun ÖSYM'deki resmî mekanizma adı teyit edilmedi. [doğrulanmalı — düşük risk]
---
## Engeller
- `www.ankara.edu.tr/programlar/...` ve `bilgipaketi.cankaya.edu.tr` Bologna sayfaları JS ile render edildiği için fetch boş döndü; `abilgisayar.kocaeli.edu.tr` ECONNRESET verdi. Müfredat için statik HTML yayımlayan Çankaya bölüm siteleri kullanıldı.
- Mermaid'i Node'da `parse` ile doğrulayamadım (DOM yok). Sözdizimi mevcut yazıların kalıbıyla birebir aynı tutuldu.
---
## Başka yazılarla çelişki / editöre notlar (`rehber-editoru`)
- `bos-kontenjanlar-ne-anlatiyor` yazısında "Bilgisayar Müh. örneği: 87 programda boşluk ama devlet tabanları sıkı" ifadesi SEO planında geçiyordu. Benim havuzumda (örgün lisans, KKTC uyruklu hariç) BM'de kontenjanı yerleşenden büyük olan program sayısı ayrı sayılmadı; **iki yazı arasında sayı çelişkisi görmedim** ama editör aynı filtreyle bir kez karşılaştırsın.
- `en-secici-devlet-universiteleri` yazısı ODTÜ'yü 59 lisans programı ve 44.568 medyanla listeliyor. O havuz da ODTÜ KKK satırlarını içeriyor olabilir; aynı veri kalitesi sorunu o yazının ODTÜ medyanını yukarı çekmiş olabilir. **Düzeltmedim** — editörün/veri-mühendisinin işi. [Ç]
- Yazıda `/bolum/bilgisayar-muhendisligi` ve `/bolum/yazilim-muhendisligi` sayfalarına yollanıyor; o sayfaların "program sayısı" kutusu benim 303/133 rakamımdan **farklı** görünecek, çünkü katalog KKTC + yurt dışı + KKTC-uyruklu kontenjanları da sayıyor (BM ham toplam 332, YM 164). Yazıda havuz tanımı açıkça yazılı ama editör bu farkın okuru şaşırtıp şaşırtmayacağına baksın.
---
## Bilal'den istenen (yayın öncesi kontrol)
1. Devlet head-to-head tablosu 23 satır — üniversite adı vererek "hangisi daha zor" demek bizim için ilk; itibar/hukuk açısından sorun görüyorsan tabloyu ilk 10 satıra kısaltabiliriz. (2 dk okuma)
2. ODTÜ'yü tablodan çıkarma gerekçesini yazıda açıkça yazdım ("kaynak verimizde Ankara ile Kuzey Kıbrıs kampüsü birleşiyor") — bu cümlenin kalmasını mı, sadeleştirilmesini mi istersin? (1 dk)
3. `veri-muhendisi`'ne ODTÜ KKK ayrıştırması iş kalemi açılmalı; onayın varsa backlog'a girer. (1 dk)