Merak

Siradan bir Java yazilimcisi JVM icinde ne dolaplar döndügünü pek bilmez.

Sadece merakli olanlar bunu bilirler ve bu merak onlari daha iyi bir yazilimci yapar. Ama bilmeseler de iyi kod yazabilirlerdi.

Hicbir yazilimci bir derleyicinin nasil calistigini umursamaz bile.

Sadece merakli olanlar bunu bilir ve bu merak onlari daha iyi bir yazilimci yapar. Ama bilmeseler de yazdiklari kod derlenirdi.

Çoğu yazılımcı yapay zekânın nasıl çalıştığını bilmez. Ama yapay zeka ile yazilim gelistirebilir.

Sadece meraklı olanlar bunları öğrenirler.

Ve evet, bu merak onları yine daha iyi bir yazılımcı yapar.

Ama burada önceki örneklerden farklı bir durum var. JVM’i bilmemek, yazdığın Java kodunun ne olduğunu değiştirmiyordu.

Derleyiciyi bilmemek, programlama biçimini kökten değiştirmiyordu.

Yapay zekâyı anlamamak ise onunla nasıl çalıştığını doğrudan etkiliyor. Çünkü yapay zekâ sadece altta çalışan yeni bir teknoloji katmanı değil. Aynı zamanda seninle birlikte düşünen, üreten ve karar süreçlerine dahil olan yeni bir çalışma katmanı.

Bu yüzden mesele artık bir LLM’in matris çarpımlarını bilmek değil.

Onun neyi iyi yaptığını, nerede yanıldığını, nasıl bağlam kurduğunu, neden bazen emin bir şekilde yanlış konuştuğunu ve senden nasıl yön beklediğini anlamak.

Bir yazılımcının JVM’in garbage collector algoritmasını bilmesine gerek olmayabilir.

Ama yapay zekâ ile çalışan bir yazılımcının, yapay zekânın sınırlarını bilmemesi ciddi bir problem olabilir. Çünkü artık kullandığımız araç sadece komutlarımızı yerine getirmiyor.

Yorumluyor.

Tamamlıyor.

Tahmin ediyor.

Bazen de bizim yerimize düşünüyor.

Dolayısıyla yapay zekâ çağında iyi yazılımcı olmak için yapay zekâ mühendisi olmak gerekmiyor.

Ama yapay zekânın çalışma karakterini anlamak gerekiyor.

Eskiden merak, bizi daha iyi yazılımcı yapıyordu.

Şimdi ise merak, oyunda kalmamızı sağlıyor.

Tutunacak Bir Dal

Eskiden yazilim yapiyordum. Simdi yazilim yaptiriyorum.

Peki eskiden yazilim yaptiranlar simdi ne yapiyor?

Eskiden yazilim yaptiranlar katmani ortadan kalkiyor. Dip dalga olarak gelen bu degisiklikler yekünü yapanlarin yaptiran olmasina, yaptiranlarin ise issiz kalmasina neden olacak.

Bu gidisati karsi korunmanin en iyi yolu, her daim yapan / üreten pozisyonunda kalabilmek. Yapay zeka ile calisabilen yazilimcilar yine yapan / üreten pozisyonunda olacaklar.

Yapmak birseye tutunmak anlamina geliyor. Dip dalga geldiğinde tutunacak bir dalın yoksa, dalgayla birlikte sürüklenirsin.

Asil mesele her daim birseylere tutunabilmek olmustur.

Büyük dönüşümler gürültüyle değil, dip dalgalarla gelir. Fark edilmezler; fakat geride bıraktıkları dünya artık eskisi değildir.

Hayatta kalanı en güçlü olanlar değil, tutunacak yeni dalları en hızlı bulanlar olur.

En Büyük Güç: Zihinsel Esneklik

En büyük güç zihinsel esnekliktir. Zihinsel esneklik perspektif değiştirebilmeyi sağlar. Perspektif her seydir. İnsan onunla yaşar, algılar, mutlu ve mutsuz olur, görür ve karar verir.

Hayata hep aynı pencereden bakılmaz. Gerektiğinde perspektif değiştirmek zaruridir. Yeni bir perspektif bir anda her şeyi başka türlü görmeyi kolaylaştırır. İnsan çoğu zaman olayların değil, kendi perspektifinin mahkûmudur.

Zihnin esnek kalabilmesi için sürekli olanlarla değil, kendisiyle meşgul olması gerekir. Dış etkenler zihni şekillendirir ve her şeye onların dayattığı perspektiften bakmayı öğretir.

Zihinsel esnekliği kazanmanın en etkili yolu olanları olduğu gibi kabullenmek ve teslimiyettir, cünkü direnç, zihni tek bir gerçekliğe hapseder. Kabulleniş ise zihni yeniden hareket ettirir. Bu kabulleniş zihnin zaman içinde solmasını engeller. Solmayan bir zihin ise aynı olaya her seferinde başka bir pencereden bakabilecek kadar canlı kalır.

Zihninizi bir gül gibi düşünün. Onu solduran fırtınalar değildir; her fırtınaya direnmeye çalışmasıdır. Kabulleniş rüzgâri durdurmaz, ama kökleri güçlendirir. Güçlü kökleri olan bir gül nasıl kolay kolay solmazsa, kabullenmeyi öğrenmiş bir zihin de perspektifini kaybetmez.

Belki de en büyük güç, fırtınaları durdurmak değildir. Onlara rağmen solmayan bir gül olabilmektir.

Hayata Dair Prensipler Part II.

Part I. icin bknz.

  • Hicbir seyi kisilestirmeyin, tepki vermeyin, sinirlenmeyin.
  • Sizinle ayni yasam felsefesi, zihniyet ve kültürde olan insanlarla birlikte olun.
  • Insanlari gereksiz yere yüceltmeyin, hayatinizin merkezine koymayin.
  • Zerre icinde zerre oldugunuzu unutmayin. Yildiz tozundan yapildiniz, ama hicbir sey degilsiniz.
  • Alcak gönüllü olun.
  • Tensel ask tinsel askin kücük ölcekli provasidir. Asik olmayan hakikatleri sezemez.
  • Kamil insana giden yolda teslimiyet insanin kendisinedir. Baskalarindan medet ummayin.
  • Her kurulu düzenin bir sahibi oldugunu unutmayin. Yaratana inanmayin, onun var oldugunu bilin.
  • Insani insan yapan onu tasiyanlar degil (araba, yat, taht), onun tasidiklaridir (vicdan, merhamet, ahlak).
  • Para insani bozmaz, var olan bozuklugu ortaya cikarir.
  • Size verilen güzelliklerin diyetini hizmet ederek ödeyin.
  • Canliyi, cansizi yaratandan ötürü sevin.
  • Karsilastiginiz zorluklar gercek potansiyelinizi ortaya cikarir. Zorluklarla mücadele etmekten vazgemecmeyin.
  • Sikayet etmeyin, cözüm üretin.
  • Maneviyatinizi güclendirin.
  • Düsüncelerinize ve agzinuzdan cikanlara dikkat edin. Düsündükleriniz yasadiginiz gercekligi olusturur.
  • Insanlardan bir beklentiniz olmasin. Aksi taktirde hep hayal kirikligina ugrarsiniz.
  • Arzusu olmayan özgürdür, bir seye, istege, ihtiyaca bagimli degildir, serbesttir, serbest düsünür.
  • Kitlik bilincinden vazgecin. Bu evrenin temeli bolluktur. Kitliga düsüncelerinizin neden oldugunu bilin. Bir seyi
  • istemek, arzulamak, pesinde kosmak kitlik bilinci isaretleridir.
  • Dünyada varligini artirmaya calisanlar degil de hep hiclige ulasmaya calisanlar var olmuslardir.
  • Ahlak insanin en somut tarafi ile en soyut tarafinin iliskili hale gelmesidir. Insanim özü ile sözü arasindaki bosluk bir ahlak boslugudur. Ya kapatilir ya da ucurum acilir.

Yaratan nezdinde hersey yasandi ve bitti. Rahat olun.

Hayata Dair Prensipler:

  • Kimseye planlarinizi anlatmayin. Sessizce calisin, basariyi da sessizce yasayin.
  • Sadece özgüven yoksunu insanlar ilgi ve övgü beklerler. Genel olarak kimsenin sizi övmesine izin vermeyin. Bildigiiniz seylerin size anlatilmasinin bir anlami yoktur. Insanlari sizin eksiklerinizi dillendirmeye tesvik edin.
  • Kendinizi anlatmayin. Birakin baskalari konussun. Herkes kendisini anlatmaya meraklidir. Dinleyin ve ögrenin. Masadan kaltiginizda siz karsi tarafin herseyini bilirken, karsi taraf sizin hakkinizda hicbir fikir sahibi olamayacaktir.
  • Hergün kisisel gelisiminize yatirim yapin.
  • Bosa vakit harcamayin. Ölünce dinlenmek icin yeterince vaktiniz olacak.
  • Hayati bir bilgisayar oyunu gibi görün. Tek bir sansiniz var ve gelebileceginiz en iyi levele gelmeye calisin. Kaybedecek hicbir seyiniz yok.
  • Hayatta anlam aramayin. Kendinize bir hedef secin ve onu gerceklestirmek icin en üstün gayreti gösterin.
  • Para, mal, mülk anlamsiz degerlerdir. En kiymetli degerleriniz size en yakin olan insanlardir. Onlar ile mümkün olan en yüksek seviyede kaliteli vakit gecirin.
  • Kendinizden vazgecmeyin. Hayatinizin basrolü hep siz kalin. Figüranlar hayatiniza cokca dahil olup, ayrilacaklar. Siz kendi filmizi cekmeye devam edin, kimseye hayatinizda basrolü vermeyin, özellikle karsi cinse.
  • Bir gün öleceginizi hatirlayin. Mezarliklara ugramayi aliskanlik haline getirin. Ölümü yeni bir baslangic olarak adledin ve merakla bekleyin, ama bu hayatinizdaki potansiyelinizi en son raddesine kadar kullanin ve icinden gecin.
  • Spor yapin, yürüyün, kas kütlenizi artirin. Protein ve takviye alin.
  • Iyilik yapin, iyilik iyidir.
  • Yaptiginiz her isi severek yapin. Ayni isi o hali ile bir daha yapmayacaksiniz.
  • Hep sükredin.
  • Kontrolünüzde olmayan hicbir seye kafa yormayin. Sadece düsünceleriniz kontrolünüzdedir. Bunun haricinde bu dünyevi yasamda hicbir sey kontrolünüz altinda degildir. Kontrol etmeye calismak beyhude bir cabadir. Kendinize ve düsüncelerinize odaklanin.
  • Her olani oldugu gibi kabul edin. Olmasi gereken olur, olmasi gereken olacak.
  • Kitap okuyun.
  • Hayati dengeli yasayin. Fazla vermeyin, cok almayin.
  • Hayatinizin ilk yarisindan almaniz gerekenleri alin, diger yarisinda verin.
  • Olumlu düsünün.
  • Sevin, yarin yokmus gibi sevin.
  • Huzur arayin, huzur verin.
  • Sizden daha bilgili, cesur, zengin, akilli insanlarla biraraya gelin, düsük seviye insanlarla zaman kaybetmeyin. Birlikte oldugunuz insanlarin ortalamasi haline geleceksiniz.
  • Bir gün bu dünyadan ayrildiginizda, arkada biraktiginiz sevdiklerinizin sizin hakkiniizda ilk akillarina gelen hos bir sada birakmis olmaniz olsun.
  • Amaciniz hayatta kalmak degil, insan kalmak olsun.
  • Gidenin arkasindan üzülmeyin. Ders cikarin ve eksiklerinizi tamamlayin.
  • Mutlulugu aramayin. Mutluluk dengeli bir hayatin yan ürünüdür.
  • Paranin pesinde kosmayin. Hicbir seyin pesinde kosmayin.
  • Kalp kirmayin. Özür dilemeyi bilin.
  • Alcak gönüllü olun.

Kim Senior Yazılımcıdır?

Senior yazilimci ne anlama geliyor, ondan bahsetmek istiyorum.

Senior anlam olarak icinde ne barindiriyor?

Senior tecrübeden gücünü alan sezgi demektir.

Suna sahit olmussunuzdur. Bir problemi cözmek icin ugrasirsiniz, ama cözümü hemen göremezsiniz. Senior birisine sorarsiniz, “söyle yapacaksin” diiye aninda tepki verir. Düsünmeden, merminin tabancadan cikmasi gibi bu cevap ve ihtiva ettigi cözüm nereden gelmektedir sizce? Sezgi!

Bu sebeple yapay zeka ile olan calisma tarzina da en yatkin olanlar senior yazilimcilardir, cünkü yapay zekaya ilk dokunduklarinda o sezgi onlara isin nereye gidecegini aninda göstermistir.

Bu sebeple yapay zeka ile yazilim yapabilmek icin iyi bir senior yazilimci olmak gerekiyor. Iyi bir yazilimci olma yolunda o sezgisel gücü edinmis olanlar, yapay zekanin nelere kadir oldugunu bilenlerdir.

Nasil senior yazilimci olunur?

10 sene boyunca degisik yazilim alanlarinda ihtisas yaparak! Ayni seyi 10 sene tekrar etmis olmak ayni sey degildir, hele hele 3-5 sene sonra profile senior yazilimci ibaresini eklemek hic degil!

Benim icin senior yazilimcilik 10+ ile baslar. 1-5 sene tecrübe ciraklik, 5-9 sene tecrübe ile kalfa olunur. Buradaki en önemli nokta bu 10 senenin hangi tecrübeler ile dolduruldugudur. Programci ile yazilim mühendisini ayirt eden en büyük farklilik buradaki bilgi ve tecrübe yelpazesidir.

Bizde ne kadar üniversite ve yazilim mühendisi enflasyonu varsa, bir o kadar da senior enflasyonu var.

Bu yazi nereden kaynaklandi diye sorarsaniz, aciklayayim.

Ben senior yazilimcilardaki o sezgiye cokca sahit olmus birisiyim. Burada kendini senior fullstack ya da senior backend yazilimci ünvanlari ile yorum yapan yazilimcilara denk geliyorum. Yorum olarak verdikleri tepkiler o kadar o bahsettigim sezgilere ters ki, senior olmadikarini ifsa etmis oluyorlar.

Almanca’da bir deyim var: Namen sind Schall und Rauch. Türkce’ye isimler ses ve dumandir yani bir anlam ifade etmezler seklinde tercüme edilebilir. Insanlarin kendilerine ya da baskalarinin insanlara verdikleri ünvanlar birsey ifade etmezler. Önemli olan insanin tasidigi inherent degerlerdir.

Yazılım Konusunda Artık Yapmadığım Şeyler

Artik aklima gelmeyen ve aramadigim seyler:

  • Yeni Java versiyonlari ve özellikleri
  • Yeni catilar ve kullandigim catilarin yeni versiyonlari
  • Yazilim hakkinda makaleler
  • Yeni programlama dilleri
  • Cevik sürec yöntemleri
  • Tasarim sablonlari, tasarim prensipleri
  • Konferanslar, toplantilar

Artik aradigim seyler:

  • Yazilim konusunda hicbir sey ;-)

Tamamen gereksinim odakli yazilim yaptirma üzerinde yogunlasiyorum. Hangi dil, hangi teknoloji, hangi cati, umrumda degil.

Lakin genel olarak kullandigim stack:

  • Backend -> Java
  • UI -> Angular
  • Mobil, Web, Desktop -> Flutter, Dart
  • DI -> Spring
  • Console -> Go
  • CI / CD -> Jenkins, Gitea
  • Monitoring -> Grafana, Prometheus, Zipkin, Graylog
  • HA -> Cloudflare, Nginx, HAProxy
  • DB -> H2, postgres
  • Proje yönetimi -> Jira

Yapay Zeka ve Production

Iyi bir yazilimciyi vasatindan ayirt edici en önemli özellik canli tecrübesidir, yani bütün resmi görebilmek. Proje yapmak, kod yazmak insani bir yere kadar yetistiriyor. Asil is, projeyi yazilim ürünü olarak canliya tasimak ve orada isletebilmek.

Simdiye kadar yapay zeka araclari ile nasil yazilim ürünü gelistirilir sorularini tartistik. Projemi henüz teknik olarak bir ürün haline dönüstürme safhasini tamamlamadim. Ama aklim simdiden yapay zeka destekli canli isletme modeline kaymaya basladi. Bu yapay zekaya yazilim yaptirmaktan cok daha heyecan verici bir alan.

Bu model ile:

  • Realtime log analizi
  • Hatalarin loglar üzerinden tespiti ve dev staging alaninda giderilmesi
  • Runtime memeory leak ve yük analizleri ve otomatik kapasite optimizasyonu
  • Realtime monitoring ile sistemsel ve mimari sorunlarinin kesfi ve girelimesi
  • Kendi kendini runtime icinde tamir eden uygulamalar

gibi konulara birlikte isik tutacagiz.

Yapay zeka araclari ürün gelistirme konusunda muazzam potansiyelleri olduklarini kanitladilar. Canlida calisan bir ürün icin CI yani continious improvement konusunda potansiyellerinin cok daha büyük oldugunu düsünüyorum.

Daha yapay zeka ile veri analizi konusuna girmedik bile. Ücüncü kademe de bu konuya da egilecegiz.

Bu konularin hepsini birlikte burada inceliyor olacagiz. Tecrübelerimi sizlerle paylasamaya devam edecegim.

Vibecoding ile Neler Yapılamaz?

Yazilim bilgisi olmayan bir vibecodingcinin yapamayacaklari:

  • Veritabani ve index nedir bilgisi eksikligi yüzünden olusan veritabani performans problemlerini cözmek
  • Canlida yük dagitimi yapmak (HA)
  • Veritabani replikasyonu
  • Uygulamayi bulut bilisim ya da klasik sunuclarda isletmek
  • Bu sunucularin güvenlik ayarlarini (firewall; ufw) ayarlarini yapmak
  • Canlida olusan teknik ve network problemlerini cözmek
  • Network konfigürasyonu
  • Prometheus ve Grafana ile monitoring altyapisini kurmak ve canlida metrik ölcümlerini yapmak
  • CI / CD pipeline olusturmak
  • Memoryleak analizleri yapmak
  • Yazilim ve network mimarisi kurgulama
  • Artan yükle altyapiyi scale ettirmek
  • Veri migrasyonlari ve backuplar yapmak
  • Efektiv git ve branch yönetimi yapmak
  • API tasarlamak
  • Event driven design yapmak
  • Code review yapmak
  • Test yazmak
  • ERD veri modelleri olusturmak

Daha onlarca konu sayabiliirim.

Yani kod yazdirabilmek, kaldi ki onu da dogru yapamaycaktir, tek basina hicbir anlam ifade etmemektedir.

Bu alanlarin hepsine hakim olan senior yazilimci arkadaslara selamlarimi gönderiyorum.

Sky is the Limit

2022 yilina kadar 25 sene boyunca programci olarak calistim. Yapay zeka araclari kullaniminda sifir kod yazma, sifir kod review, sifir test yazma evrelerine kadar geldim. Yazilimda her zaman müsterinin ve onun isteklerinin ön planda olmasi gerekliligine inandim ve bunu hep savundum. Ama günün sonunda hep masa basina dönüp, kod yazmak zorunda kaldim.

Artik böyle bir zorunluluk yok. Simdi tamamen müsteri odakli calisiyorum ve yapay zeka ile ortaya cikan ürünler daha önce teknik olarak belki hayal edilir ama yapilamaz türden.

Ürünler bir tebesir ile kara tahtada cizilir kadar kolay ortaya cikiyor. Bu satirlari yazarken Fable 5 arka planda su saniyede onlarca belki yüzlerce satir kod yazdi. Ben bu yaziyi tamamladigimda, istedigim uygulama özelligi de calisir durumda olacak.

Hayal edebilene artik hayat bu kadar kolay.

Not: hayallerinin gercekleseceginden emin olsaydin, ne kadar büyük hayal kurardin?

Kod Yazarken Uygulama Gelistirilmez

1.5 yildir bir Java sinifi, tasarim sablonu, algoritma ya da hangi veri yapisini kullanacagim aklima bile gelmiyor. Ben bütün gün uygulamanin faal olacagi alan (domain) icinde takiliyorum ve ne sorusunun cevabini ariyorum:

  • müsteri ne istiyor?
  • sürec abc ne anlama geliyor ve nasil isliyor?
  • beklentiler neler?
  • riskler neler?
  • böyle yapsak ya da yapmasak ne olur?

Beni daha iyi bir programci yapan hicbir zaman teknik bilgim olmadi. Nasil sorusuna cevap bulmakla yükümlü yapay zekayi yönlendirirken bu teknik bilgi elbette cok faydali. Bu teknik bilgi ile giris ve cikis kapilarini tutmus oluyorsunuz ve giren ve cikan sizin kontrolünüzde oluyor. Ama bundan daha önemli olan sey, icerde olup, bitenleri tayin edebilmek, yani nasil sorusunun dogru cevaplarinin yapay zeka tarafindan bulunmasini saglamak. Bunun yolu sadece alan hakimiyetinden ve o alanda yasanan süreclerin idrak seviyelerinden geciyor.

Bir programciyi iyi bir programci her daim ne sorusunun pesinde olmasi yapmistir. Isin nasil kismi yani kod yazmak cok kücük bir alanla istigal etmekti. Eskiden de iyi programcilar müsterilerine iyi kulak verenlerdi, simdilerde de ayni sey gecerli.

Bir uygulama cikarmak icin gerekli en önemli yetiler analitik düsünme, gereksinim analizi ve iletisim olmustur, kod yazmak degil.

Kisaca kod yazarak uygulama gelistirilmez. Bir uygulama düsünerek ve sorgulayarak gelistirilir. Artik kod yazmamiza gerek kalmadigina göre, asil isime konsantre olabilliriz.

Hayirli düsünmeler.

Software Factory Pattern

Daha önceki yazilarimda yapay zeka araclari ile calisirken gectigim evreleri sizinle paylasmistim. Buna bir yenisi daha eklendi: Software Factory Pattern

Gectigim Evreler:

Autocomplete -> Prompt Engineering -> Loop Engineering -> Software Factory Pattern

4 sene öncesinde benim icin ilk yapay zeka araci olan Github Copilot ile tanistigimda, satir bazinda autocomplete özelligi ile bu arac benim kodumu tamamlayabiliyor, alternatif kod örnekleri sunabiliyordu. Bunu daha sonra metot ve sinif bazinda yapmaya basladim.

Daha sonra chat özelligi geldi ve ben promptlar ile calismaya basladim. Akabinde uygulama özelliklerini promptlar ile gelistirmeye basladim.

Loop engineering ile bunu otomatize ettim ve uygulama özellikleri icin bir pipeline olusturdum. Daha sonra bunu tüm bir uygulama icin yapabilecegimi gördüm ve simdilerde software factory pattern ile calisiyorum.

Nedir bu software factory pattern?

Yazilim üretilen bir fabrika düsünün. Ben bir ekosistemi olusturan onlarca uygulama üzerinde calisiyorum. Eskiden bir uygulamayi secip, onun parcalari üzerinde calisirdim. Simdilerde bütün bir uygulamayi loop engineering ile bir bütün olarak insa ettiriyorum. Bu 24-48 saat zaman diliminde otonom calisan Codex + Fable 5 ile gerceklesiyor. Fabrika bir sonraki uygulanin kaba insaatini yaparken, ben bu zaman diliminde fabrikadan taze cikmis baska bir uygulama icin fine-tuning islemlerine basliyorum. Fine-tuning prompt engineering ile uygulamayi kaba halinden alip, istedigim hale sokma islemi.

Bunun nasil yapildigini bir sonraki videoda sizlerle paylasacagim.

Yapay Zeka ile Uygulama Geliştirme Yol Haritası

Yapay zeka araclari ile ürün gelistirmek istiyorsaniz, bunu nasil yapmaniz gerektigine dair benim uyguladigim yol haritasini sizinle paylasmak isterim.

Yol haritasi su sekilde:

  • Iyi bir fikrim var
  • Analiz safhasi
  • Loop engineering ile kaba insaat
  • Prompt engineering ile ince insaat (fine-tuning)
  • CI / CD ile ilk testler, sürüm ve deployment
  • Sistem hatalari ve kullanici geribildirimleri ile düzeltmeler
  • Hardening ile güvenlik aciklarinin kapatilmasi
  • Performans testleri ile yük kapasitesinin ölcümü ve memory leak düzenlemeleri
  • Canliya alim.
  • Canlida olusan hatalari ve loglari sürekli yapay zekanin ulasabilecegi bir yere birakma ve hatalarin tamir edilmesi.

Ben öncelikle iyi bir fikri oldugunu düsündügüm noktada ise koyuluyorum. Buradan girisimcilik, piyasa arastirmasi, fizibilite, rekabet kosullari vb gibi konulari göz ardi ediyoruz. Ben ürünün teknik olarak nasil olusturulacagina deginecegim.

Fikir tek basina birsey ifade etmez. Önce fikrin yapilabilirliginin analiz edilmesi gerekmektedir. Bu amacla Codex / Gpt 5.5-high ile önce konuyu netlestirmek icin sohbet turlarina basliyorum. Buradaki maksat henüz göremedigim dolayli ve dolaysiz noktalara ulasabilmek. Akabinde alani (domain) tanimak icin bu sohbetleri analizlere dönüsecek sekilde derinlestirmek oluyor. Bununla birlikte uygulamanin mimari yapisi hakkinda fikir alisverisinde bulunuyorum. Burada benim cerceveyi tanimlamam gerekiyor, aksi taktirde yapay zeka istedigi ve cogu zaman benim tasvip etmedigim sekilde mimari ve kod olusturacaktir. Bu noktada mümkün mertebe baska projeleri referans olarak almasini sagliyorum ve bir senior dev gibi hareket etmesini saglayacak CLAUDE.md dosyasini olusturuyorum.

Bu safhada teknik olarak yeni projeyi baslatabiliriz. Bunun icin Codex’den gereklli tüm loop planlarini olusturmasini ve isi Opus ile koordine etmesini istiyorum ve bu noktada benim aradan cekilme vaktim gelmis oluyor.

12/24/48 saat araliklarinda gidisati konrol ediyorum. Olusan uygulama kaba hatlari ile benim siparis ettigim türde bir uygulama seklinde yapilandirlilmis olacaktir. Bu benim o uygulamayi hemen alip, canliya atarak, kullanabilecegim anlamina gelmemektedir. Bu noktada fine-tuning baslamak zorunda.

Öncelikle uygulamaya kullanmaya baslayarak, kesif turlarina cikmam gerekiyor. Bir son kullanici icin atilmasi gereken adimlari Codex’den bana yazmasini istiyorum. Bu arada Codex her loop sonunda gerekli test adimlarini ihtiva eden jira loop ticketleri olusturdu. Ben onlari tek tek inceleyerek, ne insa edildigini ve nasil calistigini görebilirim. Bu benim e2e testlerimi kolaylastiran bir sürec.

Uygulayi ve kapsadigi tüm sürecleri anladiktan sonra fine-tuning islemini baslatiyorum. Burada tek tek uygulama özelliklerini derinlesecek ve benim istedigim sekle gelecek sekilde prompt engineering yöntemleri ile fine-tune ediyorum, yani mevcut özellikleri degistiriyorum, yeni özellikler ekliyorum.

Bu noktadan itibaren uygulama test amacla ilk kullanicilari ile bir araya getirilebilir. Bu arada ben degisik staging alanlari icin deployment pipeline olusturmus oluyorum. Her degisiklik sonunda yeni bir sürüm olusturuluyor ve gerekli staging alanlarina test amacli deployment gerceklesiyor. Bu noktadan itibaren hardening ve performance testing sürecleri basliyor.

Bu islemler sonunda uygulama kullanicilari ile bulusacak canli ortamina alinabilecek kivama geliyor. Bu islemi tamamlayip, uygulamayi calisir halde kullanicilari ile bulusturuyorum.

Ben arka planda olusan bir hatalar icin jira ticketleri olusmasini sagliyorum. Yine düzenli araliklarla Codex buraya göz atip, sorunu analiz ettikten sonra loop planlari hazirliyor ve bu problemlerin Opus yardimi ile cözülmelerini sagliyor.

Yeni uygulama özellikleri icin döngüye yeniden baslatiyorum. Bu kadar :)

Loop Engineering ve Otonom Uygulama Geliştirme

Yapay zeka araclari ile ilk zamanlar line autocomplete özelligini kullanarak uygulama gelistirme serüvenime devam etmistim. Daha sonralari bunu metot ve sinif bazinda yapmaya basladim. Akabinde promptlarla uygulanin parcalarini degistirmeye basladim.

Daha sonra promptlarla komple uygulama özellikleri gelistirebilecegimin farkina vardim. Promptlarin uygulama özelligi gelistirme konusunda yetersiz kaldiklarini, tüm bir uygulama özelligi icin onlarca prompta ihtiyac oldugunu ve bunlari elden yönetmeye calismanin zaman kaybi oldugunu gördüm. Kendimce bir döngü kurmaya karar verdim.

Analizleri gpt’nin yaparak, promptlari olusturmasini sagladim. Prompt yazma derdinden kurtulmustum. Sira bunlari arka arkaya sistem tarafindan tek tek uygulama özelligine dönesecek sekilde uygulanmalarini saglamakti. Bunun icin kücük bir döngü catisi olusturdum. Bu aslinda iptidai bir loop engineering sekliydi. Daha sonra loop enginneering ile tanistim ve sistemin loop planlari olusturmasini ve bu planlarin otonom bir sekilde kosturulmasini sagladim.

Loop engineering ile uygulama özelliklerinin el sürmeden ve basinda bekleden olusturulmalarini sagladim. Simdilerde komple uygulamalarin loop enginnering ile el sürmeden olusturulmalarini seyrediyorum.

Bunun ilk örnegin distributed file storage uygulamasi. Döngü 30 saattir isliyor ve kodun %80 i tamamlanmis durumda.

Özetle yapay zeka araclari ile calisirken nereden nereye geldim?

Satir autocomplete -> metot autocomplete -> sinif autocomplete -> prompt ile degisiklik yapma -> prompt ile uygulama özelligi gelistirme -> loop engineering ile uygulama özelligi gelistirme -> loop engineering ile komple uygulama gelistirme -> nirvana :-)

“Aksamdan prompt verdim, sabah uygulama hazirdi” vari cümleler vibe coding camiasinda insanlarin agzina pelesenk olmus durumda. Yazilim konusunda tecrübesiz bir sahsin vibe coding ile böyle bir netice almasi imkansiz. Benim örnegimde ise bu cümle gecerliligini koruyabilir, cünkü benim gibi yazilimcilar hem sistem girdisini gerektigi sekilde sekillendirebilirler hem de ciktiyi degerlendirebilirler.