👨‍👩‍👧 Bu ders planlamayı öğretir. Çocuğunuz Bıdık'a bir 'spec' (requirements.md) ve numaralı 'features' dosyaları çizdirecek. Her özellik dosyasında kabul kriteri (nasıl test edileceği) yazılır. Bu, büyük bir işi parçalara ayırma becerisini geliştirir ve örnek projeyi düzenli bir yol haritasına bağlar. Komutlar kopyalanabilir.
Bu derste yapacağımız etkinlik: Bıdık'a örnek oyununuzun requirements.md spec'ini ve features/ klasörünü çizdirin. Sonra bir A3 kağıda aynı haritayı (başlangıç, varış, 4-6 durak) çizip duvara asın; her özellik bitince kutuyu yeşile boyayın.
Modül 3 · M — Harita Çiz · ⏱ 10 dk

Gün 4: Define Haritası — Spec ve Features

Day 4: Treasure map — Spec and Features

Bu derste neler öğreneceksin

  • Gerçek bir uygulama için önce harita çizmenin neden önemli olduğunu anlamayı
  • İki katmanlı haritayı kavramayı: varış noktası (requirements.md) + duraklar (features/)
  • Her özellik için kabul kriteri (nasıl biteceğini) yazmayı
  • Bıdık'a örnek oyunun haritasını çizdirip features klasörü oluşturmayı

M — Harita Çiz Başlıyor

Bıdık’ın artık bütün güçleri var: kurallar (R), hafıza, plan modu, yetenek kartları, alet çantası, yardımcılar (A). Şimdi RAMP’ın üçüncü harfine geçiyoruz: M — Map (Harita Çiz). Büyük bir işi yapmadan önce, haritasını çizeceğiz.

Define Haritası Hikayesi

Bir define haritası düşün. Üstünde bir başlangıç (X işareti), bir varış (hazinenin yeri), arada patikalar ve duraklar var. Hiç kimse haritaya bakmadan define aramaz — çünkü kaybolur.

Yazılımda harita aynı işe yarar. Bıdık’a sadece “şunu yap” demek yetmez; “şu varış noktasına şu duraklardan geçerek git” demen gerekir. Yoksa Bıdık kendi kafasına göre gider, bazı durakları atlar, bazı yerde takılır.

Harita = “kafandaki plan” değil, kağıtta yaşayan bir belge. Onsuz Bıdık konuşmaya başladığı an yoldan çıkabilir. Plan modunu hatırla (6. ders) — harita, plan modunun büyük kardeşidir: tek bir iş için değil, bütün proje için plan.

İki Katmanlı Harita

Haritayı iki katmanda çiziyoruz:

1. Katman: Varış Noktası — requirements.md (Spec)

Bu dosya, bütün uygulamanın özeti. Yazılımcılar buna “spec” (şartname) der. Tek yerde “bu uygulama ne yapacak, kim kullanacak, nerede saklanacak” yazılır.

Örnek oyunumuz için şöyle görünür:

# Sanal Evcil Hayvan Bakıcısı — requirements.md

## Kim kullanır?
- Tek oyuncu (sen). Hayvanına bakarsın.

## Ne yapar?
- Bir evcil hayvan gösterir (emoji).
- Üç çubuk: Açlık, Mutluluk, Enerji.
- Üç buton: Besle, Oyna, Uyut.
- Zamanla çubuklar yavaşça azalır (hayvan acıkır, sıkılır, yorulur).
- Çubuklar çok düşerse hayvan üzgün görünür.

## Nerede saklanır?
- Tarayıcının hafızasında (sayfayı kapatıp açınca durum korunur).

Bu dosya konuşarak yazılır. Bıdık’a “böyle bir oyun istiyorum” de, Bıdık sana sorular sorsun (plan modunu kullan!), cevapları bu dosyaya yazsın. Bittiğinde bu dosya hedefin sözleşmesi olur.

2. Katman: Duraklar — features/ klasörü

Şimdi varış noktasına ulaşmak için her adımı ayrı bir dosyaya yazıyoruz. Her dosya bir “durak”. Her durağın iki bölümü var: ne yapacağız ve nasıl biteceğini anlayacağız (kabul kriteri).

features/01-temel-oyun.md
  Ne: Hayvan, üç çubuk ve üç buton ekranda olsun.
  Bitti mi? Test: Besle açlığı azaltıyor, Oyna mutluluğu, Uyut enerjiyi artırıyor.

features/02-zamanla-azalma.md
  Ne: Çubuklar her birkaç saniyede yavaşça azalsın.
  Bitti mi? Test: Hiçbir şey yapmadan beklersen çubuklar düşüyor.

features/03-hafizada-sakla.md
  Ne: Oyun durumu tarayıcı hafızasında saklansın.
  Bitti mi? Test: Sayfayı kapatıp açınca çubuklar kaldığı yerde.

features/04-ruh-hali.md
  Ne: Çubuklara göre hayvanın yüzü değişsin (mutlu / üzgün).
  Bitti mi? Test: Çubuklar düşünce emoji üzgüne dönüyor.

Her dosya küçük bir başarı. Her dosya bitince Bıdık durur, “bu bitti” der, sen kontrol edersin, sonra sıradakine geçersiniz.

Önemli fikir: Büyük işler küçük parçalardan oluşur. Her parçayı tek tek bitirip imzalayarak ilerlemek, dağınık bir işi düzenli bir yolculuğa çevirir.

Şimdi Dene: Bıdık’a Haritayı Çizdir

Önce spec’i yazdıralım. Plan modunu aç (Shift + Tab) ve şunu ver:

Sanal Evcil Hayvan Bakıcısı oyunumuz için bir requirements.md dosyası
yaz. Şu an oyunumuzda var olanları (hayvan, Açlık/Mutluluk/Enerji
çubukları, Besle/Oyna/Uyut butonları) yaz. Sonra şu hedefleri ekle:
çubuklar zamanla azalsın, durum tarayıcı hafızasında saklansın,
çubuklara göre hayvanın yüzü değişsin. Bana sorular sorarak eksikleri
tamamla, sonra dosyayı oluştur.

Bıdık sorular soracak, sen cevaplayacaksın, sonra requirements.md oluşacak. Şimdi bunu duraklara bölelim:

Bu requirements.md dosyasını al ve her özelliği ayrı bir dosyaya böl.
Dosyaları "features" klasörüne koy. Her dosyanın adı 01-, 02-, 03-
şeklinde numaralı olsun. Her dosyada şunlar olsun: özelliğin adı,
ne yapacağı, ve "nasıl biteceğini anlarız" diye bir kabul kriteri.
Henüz kod yazma, sadece harita dosyalarını oluştur.

Bıdık planı okuyacak, her özelliği ayrı dosyaya bölecek:

● features/ klasörünü oluşturuyorum...

  features/01-temel-oyun.md       ✓
  features/02-zamanla-azalma.md   ✓
  features/03-hafizada-sakla.md   ✓
  features/04-ruh-hali.md         ✓

  Her dosyada "Bitti mi?" kabul kriteri var. Haritan hazır!

Planı Atlama!

Bir tuzak var: Bıdık haritayı getirdiğinde “bu kadar detay yeter, hemen yapalım!” diye düşünebilirsin. Dur! Haritayı baştan sona oku. Her şey gerçekten orada mı kontrol et:

  • Bütün özellikler var mı?
  • Her özelliğin kabul kriteri net mi (nasıl test edeceğini biliyor musun)?
  • Eksik ya da yanlış anlaşılan bir şey var mı?

Eksik varsa şimdi ekle. Çünkü harita, projenin sözleşmesi. Eksik bir madde sonra hatayla geri döner.

Yarın bu haritayı bir komuta dönüştüreceğiz (workflow): “Bıdık, sıradaki özelliği yap” dediğinde, Bıdık haritaya bakıp tek tek ilerleyecek.

Kontrol Noktası ✅

  • requirements.md (spec) dosyası oluştu — oyunun varış noktası yazılı.
  • features/ klasöründe numaralı durak dosyaları var (01, 02, 03…).
  • Her durak dosyasında bir kabul kriteri (“Bitti mi? Test:…”) var.
  • Haritayı baştan sona okudum, eksik yok.

Bugün Ne Öğrendin?

  • Harita olmadan Bıdık yoldan çıkabilir.
  • Harita iki katmandır: varış noktası (requirements.md / spec) + duraklar (features/).
  • Her özellik ayrı dosyada yazılır, her dosyada kabul kriteri olur.
  • Hayat kuralı: Büyük işler küçük parçalara bölünerek yapılır.

Ebeveyn Notu

Bu ders, çocuğunuza profesyonel yazılım planlamasının temelini öğretir: önce bir “spec” (requirements.md) ile hedefi netleştirmek, sonra işi küçük, test edilebilir parçalara (features) bölmek. Her özelliğin “kabul kriteri” olması — yani “bittiğini nasıl anlarız” sorusunun önceden yanıtlanması — kalite kontrolünün kalbidir. Bu beceri yazılımın çok ötesine geçer: ödevler, sınav hazırlığı, organizasyonlar. Çocuğunuz bu haritayı tüm hafta referans alacak.

Etkinlik (Elle Yapılacak)

Bir A3 kağıda (ya da büyük bir kağıdı ikiye bölerek) oyununuzun haritasını çizin:

  • Sol üst — Başlangıç: “Sade oyun (hayvan + butonlar)”
  • Sağ alt — Varış: “Tam oyun (zamanla azalma + hafıza + ruh hali)”
  • Ortada 4-6 kutu: Her kutu bir özellik, numaralı (01, 02…).
  • Her kutunun yanında: “Nasıl bitecek?” sorusunun cevabı (1-2 cümle).

Bu haritayı duvara asın. Bıdık her özelliği bitirdikçe ilgili kutuyu yeşil kalemle boyayın. Hafta sonunda tüm kutular yeşil olacak!

Yarın

Yarın haritayı bir komut düğmesine çevireceğiz: Workflow (iş akışı). Bıdık’a kendi özel komutlarını yazmayı öğreneceksin — /sıradaki-özellik gibi tek bir komutla bütün bir işi başlatabileceksin!