Faz 5: UUID ile İlerleme Senkronizasyonu
Hedef: Her öğrenenin tamamlama durumunu kullanıcı hesabı olmadan kalıcı hale getirmek ve yeniden yüklemede kenar çubuğunu yeniden boyamak.ACU tüketimi: 2.7 (planlanan 2–3).Sonuç: Küçücük bir React kancası artık tarayıcıda üretilen bir UUID’yi saklıyor, her test geçişinde GraphQL API’sini çağırıyor ve oyun alanı mount olduğunda ilerlemeyi önceden yüklüyor.
Devin gerçekte ne yaptı
Beşinci faz için Devin şunları yaptı:
- Frontend ile backend arasında GraphQL iletişimi için Apollo Client’ı entegre etti
- localStorage’da saklanan UUID’lerle anonim oturum yönetimi uyguladı
- Gerçek zamanlı ilerleme verilerini ve görsel göstergeleri hem kategori hem egzersiz düzeyinde senkronize etti
- Tarayıcı içi Vitest test çalıştırıcısına bağlanarak egzersiz tamamlamayı tespit etti
- Çevrimdışı destek, iyimser güncellemeler ve geri deneme mantığıyla sağlam hata yönetimi ekledi (bunu istememiştim).
Kazanımlardan biri, Devin’in iyimser UI güncellemesi eklemesi; böylece rozetler anında ✅’a dönüyor. Bu, özellikle yüksek gecikmeli bağlantılarda arayüzü akıcı tuttuğu için önemliydi.
Çıkarılan dersler
Çıkardıklarım:
- Küçük kapsam az hata demektir: Bu oldukça küçük ve sıkı tanımlı bir görevdi; Devin bunu iyi ve makul bir sürede yerine getirdi.
- Ne istediğinizi söyleyin, ama ne istemediğinizi de belirtin: Devin’in kapsamı genişletme eğilimi olduğunu fark ettim ve yine, istediğimden fazlasını verdi. Bu durumda sorun etmedim, ancak kesinlikle yapmasını istemediğiniz bir şey varsa, açıkça söyleyin. Örneğin her bir istemde “giriş işlevi yok” diye belirttim; çünkü oraya gitmeyi deneyeceğini düşündüm.
Artık anonim oturum hattımızın uçtan uca çalıştığına dair kanıtımız var. Şimdi son cilalama fazında bunu güzel göstermek zamanı.
Faz 6: UI Cilası & İlerleme Panosu
Hedef: Faydacı arayüzü pastel, “havadar” bir deneyime dönüştürmek ve her öğrenenin serisini, zorluk merdivenini ve haftalık aktivitesini görselleştiren bir pano eklemek.ACU tüketimi: 11 (planlanan ≈ 3).Sonuç: Açık/koyu pastel temalar, yeniden tasarlanmış egzersiz kartları ve halkalar, çubuklar ve seri sayaçları gösteren canlı bir pano. Devin ana hatları başardı, ancak adlandırma uyumsuzluklarını ve kaçak bağımlılık değişimlerini düzeltmek için ben devreye girdim.
Bu fazda, Devin’in daha geniş bir gereksinim setini nasıl yöneteceğini görmek için kapsamı bilerek genişlettim. Aslında bunun, tüm backend uygulamasının olduğu 3. fazdan daha kolay olacağını düşünmüştüm. Sürpriz: Yanılmışım.
İstemden Devin’in ele aldıkları
Gereksinimlerimin dökümü ve Devin’in çıktısı şöyle:
|
Gereksinim |
Devin’in çıktısı |
|
Pastel tasarım sistemi |
Yumuşak mavi birincil, nane başarı ve lavanta vurgu için Tailwind CSS değişkenleri eklendi. Kart köşeleri |
|
Tipografi & boşluklar |
|
|
İlerleme panosu |
Yeni rota
|
|
Geliştirilmiş kartlar |
|
|
Katalog genişletme |
Anlatısal isimlere ve yer tutucu şablonlara sahip 10 adet yeni iskelet egzersiz üretildi. Metaveri; zorluk, tahmini süre ve kategori içeriyor. |
Devin’in yanlış yaptığı yerler
Her şey mükemmel gitmedi — Devin:
- Egzersiz paketi dosya adlarını değiştirdi ancak sarmalayıcıyı ya da resolver’ı güncellemedi → çalışma anında 500’ler; yama +1 ACU.
- Postgres’i sessizce SQLite ile değiştirdi “yerel geliştirme kolaylığı için” benim onayımı almadan. İzlemeseydim fark etmeyecektim.
- React bileşenlerinde düzinelerce
console.logbıraktı ve lint kontrolleri tekrar tekrar denendi.
Çıkarılan Dersler
Çıkarımlarım:
- Pano mantığı hâlâ çalışmaya muhtaç: Devin seri ve harcanan süre sayaçlarını bağladı ama çalışır bırakmadı. “Mutlu yol” UI’sinin erken birleştirilmesini önlemek için backend metriklerinde en az bir entegrasyon testi olmalı.
- Uzun oturumlarda ACU kullanımı hızlanıyor: ~8 ACU’dan sonra oturum belirgin şekilde yavaşladı. Kısa, sınırlı oturumlar (< 5 ACU) bağlamı sıkı ve ajanı duyarlı tutuyor.
- Devin “yardımseverce” bağımlılıkları değiştirecek: Sormadan Postgres’i SQLite ile değiştirdi. Kritik servisleri isteminizde sabitleyin: “Veritabanı motorunu değiştirme; Postgres’te kal.”
- Tasarım görevleri sıcak-yükleme kargaşası yaratıyor: Her Tailwind/Vite yenilemesi ajan süresi demek. Belki en iyisi, stilleri toplu düzenlemeden önce oturumu duraklatmak, proje temiz derlendiğinde Devin’i uyandırmak.
Bu görev, yaptığımız işin geri kalanına kıyasla uzun ve maliyetliydi. En azından Devin, nerede yanlış gittiğinin farkında:

Ortada güzel bir şey var ama biraz zaman aldı ve tam işlevsel değil. Pano metriklerinin bir kısmı hardcode — seçenek kategorimizde iki egzersiz mi? On tane var. Seri ve harcanan süre metrikleri de hiçbir şeye bağlı değil ve bireysel egzersiz sayfalarındaki UI oldukça kötü.
Maliyet & Zaman Değerlendirmesi
Rakamlar nasıl çıktı
Özet şöyle:
|
Faz |
Planlanan ACU |
Gerçekleşen ACU |
Fark |
Notlar |
|
1 – Çalışma alanı & iskelet |
1 – 2 |
3.66 |
▲ ≈ 1.7 |
|
|
2 – Egzersiz paketi |
2 |
0.60 |
▼ 1.4 |
Basit dosya taşımaları; ağır kurulum yok |
|
3 – API & Prisma |
4 |
4.20 |
▲ 0.2 |
Yapılandırma pürüzleri (eksik |
|
4 – Oyun alanı & testler |
3 – 4 |
7.20 |
▲ ≈ 3.5 |
Sıcak-yükleme döngüleri, birleştirme editörü tıkanması |
|
5 – İlerleme senk. |
2 – 3 |
2.70 |
▼ ≈ 0.3 |
Düz kanca + sorgular |
|
6 – UI cilası & pano |
2 – 3 |
11.00 |
▲ ≈ 8 |
Yeniden kurulumlar, sessiz DB değişimi, büyük CSS yeniden yüklemeleri |
|
Toplam |
18 – 24 |
29.36 |
▲ ≈ 6 – 11 |
İlk tahminin kabaca %35 üzerinde |
|
Maliyet: 29.36 ACU × $2.25 ≈ $66 | ||||
Manuel çalışmaya karşı tasarruf edilen süre
Tasarruf edilen süreye dair tahminim:
|
Görev |
İnsan tahmini |
Devin (+ düzeltmeler) |
Net |
|
NestJS + GraphQL + Prisma’yı başlatma |
4 saat |
1 saat (düzeltmeler dahil) |
−3 saat |
|
Sandpack + Vitest tarayıcı kablolaması |
3 saat |
1 saat 20 dk |
−1 s 40 dk |
|
Tam pastel yeniden tasarım & pano |
6 saat |
2 saat (ama hâlâ tam işlevsel değil) |
−4 s |
|
Toplam süre |
~13 saat |
~4 saat 20 dk |
-8 s 40 dk |
Önemli çıkarımlar
Önerdiklerim şunlar:
|
Tema |
Ne yapmalı |
Neden önemli |
|
Oturumları kısa tutun |
• Her çalıştırmayı ≤ 5 ACU ile sınırlayın. • Büyük hedefleri lokma büyüklüğünde görevlere bölün. |
8 ACU üzerindeki oturumlar yavaştır ve hata oranları ≈%35’te sıçrar. Kısa patlamalar duyarlı ve daha ucuzdur. |
|
Erken dürtün, sık sık duraklatın |
• Timelapse sekmesini izleyin; Devin döngüye girerse “Devam et” veya “Uyu” yazın. • CSS veya dokümanları toplu düzenlerken duraklatın, kod temiz derlenince Devin’i uyandırın. |
Boşta döngüler hâlâ sayacı işler; tasarım çalışması sırasındaki sıcak-yükleme kargaşası saf ACU israfıdır. |
|
Yapılandırmayı manuel iş gibi ele alın |
• Büyük dosya ağaçlarını kendiniz taşıyın/yeniden adlandırın (sürükle-bırak, 0.8 ACU’luk betiklerden iyidir). • İlk paket hatalarını manuel düzeltin; yeniden denemeler ACU kuyularıdır. |
Dosya G/Ç ve tekrarlı kurulumlar boşa giden kredilerin ~%30’unu oluşturuyor. |
|
Lint & tip kontrolünü yerelde yapın |
• Birleştirmeden önce test betiklerinizi (bizim durumda lint ve typecheck) her zaman çalıştırın. • Bu komutları CI’a ekleyin (bir sonraki eğitimde daha fazlası!). |
Devin, boru hattı başarısız olsa bile başarı ilan edebilir. |
|
Kritik teknolojileri sabitleyin |
• Değişmemesi gerekenleri belirtin: “Postgres’te kal, giriş yok, Tailwind kalsın.” • Gerekli ortam değişkenlerini |
Devin, belirtilmezse Postgres’i SQLite ile “yardımseverce” değiştirebilir ya da yeni test koşucuları ekleyebilir. |
|
Gizlileri kendiniz yönetin |
• Commit’lerden • Sonraki eğitimler için bir gizli-yönetici adımı planlayın. |
Devin sahte kimlik bilgileriyle gerçeği ayırt etmeyebilir. |
|
Birleştirme editörü tıkanmalarını giderin |
• Birleştirme commit’lerinde ve süreç çıkışlarında yardım etmek için devreye girin. |
Vim kilitlenmeleri dakikaları ve ACU’ları boşa harcar. |
|
Ölü kodu erken silin |
• Taşımalardan sonra, Devin’in yinelenen giriş noktaları görmemesi için bayat dosyaları |
Gereksiz dosyalar ajanı şaşırtır ve derleme sürelerini şişirir. |
|
Yeni mantık için birim testleri ekleyin |
• Seri sayaçları, zamanlayıcılar veya metrikler backend testleri ister; sadece UI’a güvenmeyin. Yine, sabredin; bunu bir sonraki eğitimde ele alacağız. |
Devin panoyu kabloladı ama sayaçları, testler boşluğu ortaya çıkarana kadar işlevsel bırakmadı. |
|
Ne istediğinizi ve ne istemediğinizi söyleyin |
• Açık olumsuzlar (“Şimdilik yetkilendirme yok”) kapsam kaymasını önler. • Devin’in önerdiği planı gözden geçirip fazlalıkları budayın. |
Ajan fazla teslim etmeyi sever; demolar için harika, bütçeler için kötü. |
Sırada Ne Var?
Artık elimizde şunlar var:
- Tarayıcı içinde fp-ts testlerini çalıştıran, pastel cilalı bir oyun alanı
- Yalnızca bir UUID ile ilerlemeyi hatırlayan bir NestJS + PostgreSQL API
- Gerçekten eğlenceli hissettiren bir ilerleme panosu
bir sonraki eğitimde odağı özelliklerden iş akışı ve iş birliğine kaydıracağız:
- Sürekli test: Jest ve Playwright paketlerini ekleyin, sonra Devin’in her PR’da ikisini de yeşil tutmasına izin verin.
- CI/CD hattı: Web ve API uygulamalarını derleyen ve testleri başsız Chrome’da çalıştıran GitHub Actions üretin.
- Ekip entegrasyonları: Bilet güncellemeleri için Devin’i Jira’ya bağlayın, derleme özetlerini Slack’e gönderin ve hafif dokümantasyon için Devin’in ürüne yeni eklenen Wiki özelliğini deneyin.
Devam etmeye hazırsanız, bir sonraki eğitime gitmek için aşağıdaki üçüncü liste öğesine tıklayın:
- Kurulum ve İlk Pull Request (Bölüm 1)
- Devin ile Bir Dikey Dilimi Yayına Alma (Bölüm 2)
- Entegrasyonlar, Testler ve CI/CD (Bölüm 3)
- Güvenlik, Dağıtım, Bakım (Bölüm 4)

Yazar
Marie Fayard
İlk prototipten ürün-pazar uyumuna ve ötesine kadar erken aşama girişimleri büyütme konusunda uzmanlaşmış, ürün odaklı bir teknik liderim. İnsanların teknolojiyi nasıl kullandığına dair bitmeyen bir merakım var ve kurucularla ile disiplinler arası ekiplerle yakın çalışarak cesur fikirleri hayata geçirmeyi seviyorum. Ürün inşa etmediğim zamanlarda ya dünyanın yeni köşelerinde ilham peşinde koşuyor ya da yoga stüdyosunda stres atıyorum.

Tekrar hoş geldiniz! Bu serinin ilk eğitiminde Devin, eski fp-ts-exercises depomu tozlarından arındırdı ve şık bir bağımlılık yükseltme PR’ı açtı. Bu ikinci bölümde, zorluk seviyesini artırıyor ve uçtan uca özellikler inşa ediyoruz.
Devin serisindeki tüm eğitimlere buradan ulaşabilirsiniz:
Bu ikinci bölümün sonuna geldiğinizde elinizde şunlar olacak:
Bu süreçte, Devin’in kendi görev listesini oluşturmasına izin verecek, onun ön uç ve arka uç işlerini aynı anda götürmesini izleyecek ve yapılandırma aksiliklerinde devreye gireceğiz. Nerede ACU harcadığımı (ve tasarruf ettiğimi), elde düzeltmelerimi ve oturumları nasıl verimli tuttuğumu göstereceğim.
Özet ve Ön Koşullar
Bu eğitim serisi boyunca, eskiden sahipsiz kalmış olan fp-ts egzersiz depom üzerinde çalışıyoruz.
Proje, TypeScript’te fonksiyonel programlama kavramlarını (Option, Either vb.) öğretmeyi amaçlayan küçük zorluklardan oluşuyor. Şu anda "kopyala ve çalıştır" tarzında bir repo: öğrenenler depoyu çekiyor, dosyaları yerelde düzenliyor ve testleri kendi terminallerinde çalıştırıyor.
Hedefimiz, bu egzersizleri, insanların bir açıklamayı okuyabildiği, sayfa içi bir editörde kodu değiştirebildiği ve testlerin anında geçtiğini (ya da başarısız olduğunu) gördüğü tarayıcı tabanlı, etkileşimli bir oyun alanına dönüştürmek. Öğrenenler ayrıca ilerlemelerini kaydetmek için oturum açma olanağına da sahip olacak.
İlk bölümde neler başardık
İlk eğitimde şunları yaptığımızı hatırlayın:
İkinci bölüm için gereken yerel araçlar
Bu ikinci eğitim için şunlara ihtiyacımız olacak:
Önerilen Devin ayarları
Devin için şu ayarları öneriyorum:
Oyun Planını Devin’e Yazdırın
Planlama kapasitesini test ederek başlamanın ilginç olacağını düşündüm. Bir istem oluşturdum ve Devin’den (şu anda Beta’da ücretsiz olan) “Sor” özelliğini kullanarak bugün yapacağımız işleri planlamama yardım etmesini istedim.
İstem:
Mevcut fp-ts-exercises Node + TypeScript depomu (şu anda kopyala-çalıştır CLI egzersizleri) ilerlemeyi takip eden tarayıcı tabanlı bir öğrenme platformuna dönüştürmek istiyorum.
Hedef deneyim:
- Öğrenenler bir Next.js web uygulamasını açar, bir egzersiz seçer, tarayıcıda kodu düzenler ve Vitest testlerinin anında geçip geçmediğini görür.
- İlerleme (tamamlanan slug’lar) sunucu tarafında saklanır ve sonraki ziyaretlerde yeniden yüklenir; ancak henüz kullanıcı hesabı eklemiyoruz (tarayıcıda saklanan anonim bir UUID kullanın).
Yöneldiğim teknoloji tercihleri:
- Frontend: Next.js 14 (React 18, App Router)
- Kod editörü & çalıştırıcı: Sandpack + @vitest/browser
- API: @nestjs/graphql (Apollo Driver) ile NestJS 13
- Veritabanı: PostgreSQL ile Prisma 5
- Çalışma alanı: düz npm workspaces (apps/web, apps/api, packages/exercises)
Bu dikey dilimi hayata geçirecek adım adım bir uygulama planı (görev listesi) önerin. Her görev için göreli ACU maliyetini tahmin edin ve uzun süren adımları (ör. büyük taşımalar veya ağır bağımlılık kurulumları) işaretleyin.
Devin, her biri için ACU tahminleri olan altı aşamalı bir görev listesi döndürdü ve “ağır bağımlılık kurulumu” adımlarını işaretledi.
Devin’in yanıtı:
Faz 1: Çalışma Alanı Kurulumu (2–3 ACU)
Faz 2: Egzersiz Paketine Geçiş (3–4 ACU)
Faz 3: Backend API (4–5 ACU)
Faz 4: Frontend Çekirdek Özellikleri (5–6 ACU)
Faz 5: İlerleme Takibi (2–3 ACU)
Faz 6: Cilalama & Dağıtım (2–3 ACU)
Toplam Tahmini Maliyet: 18–24 ACU
Plan genel olarak oldukça iyiydi. Özellikle altıncı fazda bazı şeyleri değiştirdim; çünkü dağıtımı dördüncü eğitimde ele alacağız.
Faz 1: Çalışma Alanı & Front-End İskeleti
Hedef: npm workspaces’i ayağa kaldırmak, eski dosyaları taşımak ve boş bir Next.js 14 kabuğu başlatmak.ACU tüketimi: 3.66 (planlanan 1–2).Sonuç: Depoda artık
/apps/web, paylaşılanpackages/exercisesvelocalhost:3000’de çalışan, Tailwind’e hazır bir Next.js uygulaması var.İstem
Devin’den, oluşturduğu planın ilk fazını inşa etmesini istedim. Otonom Devin’in “Devin’e Sor” özelliğinde daha önce ne sormuş olabileceğinize dair bir bağlamı yok, bu yüzden ayrı bir istem oluşturup bağlam sağlamanız gerekiyor.
Bu yazıda tüm istemleri yapıştırmayacağım, ama ilki şöyleydi:
İstem:
Görev: fp-ts-exercises tarayıcı platformu için npm çalışma alanı yapısını ve Next.js frontend’ini başlatBağlam:
Mevcut fp-ts-exercises CLI tabanlı öğrenme sistemimi tarayıcı tabanlı bir platforma çeviriyorum. Şu anki sistemde egzersizler 10-from-either.exercise.ts:1-3’te düzenli ve TypeScript yapılandırması tsconfig.json:88’de, Vitest kurulumu vitest.config.ts:7’de.
Gereksinimler:
Teslimatlar:
Teknoloji Yığını:
Teslim:
Sonrasında yazdığım tüm istemler aynı kalıbı izledi: görev vurgusu, bağlam, gereksinimler, teslimatlar, teknoloji yığını ve teslim detayları.
Devin gerçekte ne yaptı
Eylem planına karar vermesi epey sürdü (yaklaşık dört dakika), ama şunları yaptı:
packages/exercises/srcaltına taşıdı.ACU maliyeti neden yükseldi
ACU maliyeti şu nedenlerle arttı:
npm installyeniden denemelerinde tam bir dakika döngüye girdi.qile, sonra daCtrl-Cile geliştirici sunucusunu ve süreçleri durdurmaya çalıştı; ikisi de başarısız oldu. Biraz zaman tanıdım ama sonunda iki sefer de manuel müdahale edip süreçleri sonlandırdım. Her ekstra dakika, ekstra ACU demekti ve Devin’in eylemlerini yakından takip etmeseydim bu sorunu çabuk fark edemezdim.İnsan müdahaleleri ve çıkarılan dersler
İhtiyacım olan düzeltmelerin özeti şöyleydi:
Düzeltme
Süre
Nasıl yaptım
Asılı kalan node watch görevi sonlandırıldı
15 sn
VM kabuğunda süreci öldürdüm.
Tailwind yeniden kuruldu
90 sn
npm install tailwindcss postcss autoprefixer --workspace=apps/web komutunu çalıştırdım ve tailwind init’i tekrar koştum.
.next/ .gitignore’a eklendi
10 sn
Şişkin PR’ları önlemek için elle commit’ledim.
Büyük dosya ağaçlarını elle taşımak daha hızlı ve Devin zaman/görev üzerinden ücretlendirdiği için çok daha ucuz. Klasörleri sürükleyip bıraktım, commit’ledim ve ajanın yeni yapıyı algılamasına izin verdim. Benim değişikliklerimi gayet iyi çekti ve kendi kendine merge yaptı!
Bununla birlikte, ilk istemimde belirtmiş olsam da lint ve tip kontrol betiklerini çalıştırması için onu dürtmem gerekti. Sonunda ikisini de çalıştırdı ama başarısız oldular. Devin yine de bunu başarı saydı ve PR’a devam etti.
Her iki sorunu da yerelde düzelttim, betikleri kendim koştum ve yeni web geliştirme sunucusunu başlatıp amaçlandığı gibi açıldığından emin olduktan sonra commit’i gönderdim.
Faz 2: Egzersizleri Paketleme
Hedef: Tüm zorluk dosyalarını yeniden kullanılabilir bir
packages/exercisespaketine çıkarıp her egzersiz için metaveri üretmek.ACU tüketimi: 0.6 (planlanan 2+).Sonuç: Paylaşılan paket, web uygulamasının ve gelecekteki API’ninimport { exercises } from '@exercises/registry'ile içe aktarabileceği tiplenmiş metaveriler dışa aktarıyor.Devin gerçekte ne yaptı
Devin şunları oluşturdu:
fp-tskullanımından etiketleri otomatik üretir.exercise.tsve.solution.tsçiftlerini tararoption-01)getExercises(),getExerciseBySlug(),getExercisesByCategory(),getCategories(),getCategoryBySlug()Devin neden bütçenin altında bitirdi
Devin ACU maliyetini düşük tutmayı başardı — işte nasıl:
git mvkullandı (ucuz)İnsan müdahaleleri
Bu kez hiç yok!
Geçen seferden ders çıkararak, Devin’in dalını checkout edip betikleri yerelde koştum. Her şey derlendi ve kayıt dışa aktarımları temiz tip tanımları sunuyor; bu da onu UI ve bir sonraki aşamada inşa edeceğimiz API için kusursuz bir girdi haline getiriyor.
Faz 3: NestJS + GraphQL API
Hedef: Egzersiz ilerlemesini GraphQL üzerinden açığa çıkaran ve verileri PostgreSQL’de Prisma ile kalıcı kılan bir NestJS 13 servisi ayağa kaldırmak.ACU tüketimi: 4.2 (planlanan 4).Sonuç:
apps/apilocalhost:4000/graphql’de açılıyor. Anonim bir oturum kimliği ile anahtarlanan ilerleme kayıtlarını sorgulayabilir ve mutasyona uğratabilirsiniz.Devin gerçekte ne yaptı
Üçüncü faz için Devin şunları yaptı:
apps/apiiçinde TypeScript ve Apollo GraphQL ile tam bir NestJS API oluşturduSessionveCompletedExercisemodelleriyle kurdupackages/exercises) bağladıDevin’in tökezlediği yerler
Üçüncü fazda karşılaştığım sorunlar ve yaptığım düzeltmeler şunlardı:
Sorun
Düzeltme
Süre
reflect-metadataimport’u unutuldu → uygulama başlangıçta çöktüDevin’e şu şekilde yazdım: “
"npm run dev"çalıştırırken şu hataya rastlıyorum:”The 'import.meta' meta-property is only allowed when the
--moduleoption is 'es2020', 'es2022', 'esnext', 'system', 'node16', 'node18', or 'nodenext'.”1 ACU, 5 dakika
Lint betiği eksik
Devin’e yazdım: “api paketine lint betiği ekle ve geçtiğinden emin ol.”
1 ACU, 4 dakika
.envyanlışlıkla commit’lendigit rm --cached apps/api/.env && echo '.env' >> apps/api/.gitignore20 sn
Çıkarılan dersler
Çıkardığım sonuçlar:
npm run devreflect-metadataeklenene dek çöküyordu.DATABASE_URLdeğişkeniyle bir.envdosyası commit’lemişti. Yerelde çektikten sonra kullanıcı adı ve parolayı yerel veritabanı kimlik bilgilerimle değiştirdim, dosyayı git takibinden çıkardım ve.gitignore’a eklediğimden emin oldum. Gizlileri güvenli şekilde nasıl yöneteceğimizi sonraki eğitimlerde göreceğiz.Faz 4: Sandpack Oyun Alanı & Canlı Testler
Hedef: Öğrenenlere, fp-ts çözümlerini ve Vitest kontrollerini gerçek zamanlı çalıştıran bir tarayıcı editörü sunmak.ACU tüketimi: 7.2 (planlanan 3-4).Sonuç:
/exercises/option-01sayfasını ziyaret etmek, solda Sandpack editörü, sağda test tüneli olan bölünmüş bir görünüm açıyor ve tüm spesifikasyonlar geçtiği anda bir başarı mesajı beliriyor.Devin gerçekte ne yaptı
Dördüncü faz için Devin’in yaptıkları:
Devin fazladan ACU’ları nerede yaktı
Bu fazda Devin beklenenden fazla ACU harcadı — nedenleri:
Neden
Nasıl düzelttim / hafiflettiğim
apps/web’de eski CLI çalıştırıcı kodu bırakıldı – Sandpack iki kopyayı derlemeye çalıştı ve çöktü.Orijinal iskeleten
pages/index.tsx’i sildim, commit’ledim ve Devin’i yeniden koştum.Geri bildirim bekledi ama açıkça sormadı → boşta döngü.
Üç dakika sessizlikten sonra sohbete “İyi görünüyor, devam et.” yazdım.
Çıkarılan dersler
Bu kez çıkardığım sonuçlar:
Devin burada zaman aldı. Aynı sorunları kaydetmeye çalışarak yineledi durdu; backend ve frontend’i düzgün bağlamadı, değişiklikler yaptı, sunucuları yeniden başlattı, tarayıcıda çalışıp çalışmadığını kontrol etti, vs. Sanırım bu da sıradan geliştirme işi gibi…
Artık işlevsel bir uygulamamız var. Hem API hem de web sunucularını başlattım, localhost’a gittim, iskelet fonksiyonu düzenledim, Kaydet’e bastım ve test panelinin kırmızıdan yeşile döndüğünü izledim. Sonra fark ettim ki işin sadece yarısı yapılmış; her egzersiz sayfasında ilk egzersizin testi ve çözümü hardcode edilmişti. Bunu belirttim ve birkaç tur daha sonra, bunu düzeltebildi ve düzeltmelerini gönderdi.