Eski ve Yeni Yazılım Dünyasının Çatışması

Eski yazılım mühendisliği dünyası ile yeni, yapay zeka destekli yazılım mühendisliği dünyası arasında muazzam bir çatışma ve çakışma yaşanıyor. Bunu burada paylaştığım yazılara gelen yorumlarda da açıkça görüyorum. Siz kör birisine mavi rengin nasıl göründüğünü anlatamazsınız. Aynı şekilde, eski yazılım mühendisliği dünyasından gelen birisine, yeni yapay zeka destekli yazılım dünyasının sunduğu imkânları anlatmak da çok […]

Yapay Zeka Çok Daha İyi ve Çok Daha Hızlı Buğfix Yapabilir

Bir programcının hataları anlama (root cause analizi) ve bugfix yapma hızını düşünün. Programcıların takılıp, kaldığı en belirgin alanlar bunlardır: troubshooting, root cause analizi ve bugfix. Bunun nedeni nedir? Programcıların yapay zekaya kıyasla sahip oldukları bağlam kapasitesi. Ben yapay zekaya milyon satırllık logları bir seferde yükleyip, ana root cause analiz yap diyebilirim. Bu onun 5 dakikasını […]

Yapay Zeka Karşıtı Argümanlar Yetmez Oldu

Yavaş yavaş yapay zeka karşıtı savunmalar runtime’a doğru kaymaya başladı. İlk zamanlar kod yazmaya gerek yok dediğimizde, “olur mu öyle şey, kod yazabilmek her zaman önemlidir ve yapay zeka bir yere kadar yazabilir” karşılığı veriliyordu. Sonra kod yazmama olayı kabul gördü bu argüman cephesi kod review tarafına çekildi. Review yapmak hala şarttı ve bunu insanlar […]

Kompozisyon ve Soyutlama

Şimdi çok komplike olan bir sürecin nasıl bir komut ile halledilir hale geldiğinden yani kompozisyon ve soyutlamanın nelere kadir olduğundan bahsetmek istiyorum. Bir ürün için release ve deployment sürecini düşünün. Sürüm için bir ürüne, deployment için bir altyapıya ihtiyacınız var. Siz sadece release.sh komutu ile bir sürüm oluşturup, deploy.sh ile bunu altyapınıza deploy ediyorsunuz. Bu […]

Makinelerle Olan Münasebetimiz

Programcılığın kısa bir geçmişine bakalım: Delikli kartlar → Assembly → yüksek seviyeli diller → framework’ler → low-code/no-code → yapay zekâ ile doğal dil Neden makineler ile münasebetimizi doğal dillere kadar taşıdık? Doğal dille programlama aslında aniden ortaya çıkmış bir devrim olmayabilir. 70-80 yıldır ilerlediğimiz yönün mantıksal sonucu olabilir. İnsan doğası gereği etrafını düşündüğü kadar, kullandığı […]

Yazılımcının Yapay Zeka İle Geçirdiği Evreler

Yapay zeka ile çalışmaya başlayan birisinin tipik dönüşüm evreleri: 1.) Hiçbir yapay zeka aracı kullanmadan önceki evre: “Sadece bir hype, cok gördük.” 2.) İlk temas: “OMG.” 3.) Yapay zeka araçları ile ilk ciddi çalışma: “Bu benim işlerimi gerçekten hızlandırıyor.” 4.) Günlük kullanım: “Bunu daha önce nasıl yapıyordum?” 5.) İş yapış biçiminin değişmesi: Artık yapay zekayı […]

Yapay Zeka İle ürün Geliştirme Yöntemleri

Yapay zeka ile ürün geliştirken iki yöntem kullanıyorum.  Bunlar: 1. Tuval yöntemi 2. Finetuning yöntemi Tuval yönteminde uygulamayı nasıl bir ürün istediğinden tam emin olmadığımda, kervan yolda dizilir mantığı ile adım adım şekillendiriyorum. Uygulama bir resmi tuval üzerinde çizermişcesine görsel olarak şekillenmeye başlıyor. Fırça darbeleri yani promptlar ile tuvalde resim çizer gibi uygulamanın oluşmasını seyrediyorum. […]

Yeni ve Eski Refactoring Yöntemleri

Çok az yapıldığına şahit olmakla birlikte, eskiden nasıl refactoring yapılırdı? Testler yoksa zaten refactoring diye bir şey söz konusu olamazdı. Testler olsa bile çok büyük çapta refactoringler yapıldığına şahit olmadım. Genelde bir sınıf ya da metot bazında refactoring işlemleri yapılırdı, çünkü oluşacak yan etkilerin tespit edileceğinin garantisini kimse veremezdi. Oysaki yıllarca SRP, OCP, DIP yani […]

Build vs Buy

Eskiden projelerimizde birçok açık kaynaklı ürünü kullanırdık: Bunların yerine geçecek uygulamaları kendimiz geliştirmek aklımızın ucundan bile geçmezdi. Neden geçsin ki? Bu ürünleri kullanarak ciddi anlamda zamandan tasarruf ediyorduk. Bunun karşılığında ise kendimizi bu ürünlerin sunduğu yapının içine sokuyor; kurulum, konfigürasyon, güncelleme, migration ve özellikle security açıklarıyla sürekli ilgilenmek zorunda kalıyorduk. Hatta Mattermost, Gitea ve benzeri […]

Yazılım Fabrikaları ve Loop Engineering

Eskiden girişimcilikte limitleyici tek faktör sermaye idi. Ne kadar sermayeniz varsa, o kadar ürün geliştirebiliyordunuz. Bu sınırlayıcı etken ortadan kalkmış durumda. Yine de geniş kapsamlı bir uygulama geliştirmek aylarınızı alabilir. Bunun önüne geçmek için kesinlikle prompt engineering kullanmamanız gerekiyor. Bunun yerine loop engineering ile otonom çalışan ajanlar ile uygulamaları geliştirmelisiniz. Benim örneğimde bu yazıyı kalema […]

İkinci Bir Bretton Woods Vakası

Şimdi olaya biraz da olumlu tarafından bakalım. Biraz önce modellerin birlikte otonom çalışabilmeleri için Gpt’ye bir orkestratör python script yazdırdım. Script o kadar karmaşık ki benim onu yazmam muhtemelen 2 günümü alırdı. Burada muazzam bir verimlilik artışı var. Günümüze kadar bilgiye dayalı üretim kapasitesi büyük ölçüde insan emeğine bağımlıydı ve ölçeklenmesi ek işgücü gerektiriyordu. Yapay zekâ […]

Yapay Zeka İle Çalışırken Dikkat Edilmesi Gereken İndikatörler

Yapay zeka ile çalışırken dikkat edilmesi gereken üç indikatör var. 1. Test kapsama alanı (test coverage) 2. Prompt sadelliği (prompt simplicity) 3. Bağlam zenginliği (context maturity) Yapay zeka destekli yazılım geliştirmede sistemin olgunluğunu yalnızca üretilen kod miktarıyla değil, test kapsamının artması ve promptların sadeleşmesiyle de ölçebiliriz. İlk iki indikatör birbirini tamamlar. Birincisi sistemin güvenilirliğini, ikincisi ise […]

Yapay Zeka İle Api Tasarımında Dikkat Edilmesi Gerekenler

Yapay zeka ile api tasarımı yaparken ya da kör bir şekilde yapay zekanın api tasarımı yapmasına izin verirken dikkat edilmesi gereken iki önemli bir husus var. Öncelikle hangi rollerin hangi haklar ile bu apilere erişilebileceğinin tayin edilmesi gerekiyor. Herkesin herşeyi yapabildiği apiler sistem için çok tehlikeli apilerdir. Apiye girişlerin mutlaka öncelikle api ismi, daha sonra […]

Tam Otonom Yazılım Nasıl Yapılır?

En basit hali ile loop engineering nasıl yapılır? Aşağıdaki örnekte Gpt Sol analiz ve review, Opus ise implementasyonu üstleniyor. Sadece Opus ya da Sol kullanarak çalışılabilir, ama ortaya çıkacak sonuç çok sağlıklı ya da beklenir tipte olmayabilir. Atılması gereken adımlar: 1. Gpt ile domain (alan) analizi yap ve iş paketlerini oluştur. İş paketleri ile uygulama […]

Asıl Mevzu

Benim yazilima bakis ve yazilimi uygulayis tarzimi tamamen extreme programming (https://lnkd.in/d-EdTKsU) sekillendirdi. Extreme Programming ile test güdümlü yazilimin ve refactoring yapma kabiliyetinin bir yazilim icin ve onu sekillendirme sürecinde ne anlama geldiklerini bu sekilde ögrendim. Yazilimda cevik olmanin temelinde uygulamayi bir hamur gibi yogurabilme yetisi yatiyor (https://lnkd.in/eh53s4Kr). Her yeni müsteri gereksinimi ile uygulanin hamur gibi […]

Yapay Zeka Destekl Adım Adım Proje Nasıl Geliştirlir?

Nasil ki tribünden futbol maci seyrederek iyi bir futbolcu olunamiyorsa, uzaktan yapay zeka gelismelerini takip ederek de bu konuda iyi bir yazilimci olunamaz. Bu konuda ciddi iseniz, icine girmeniz yani oyunu oynamak icin sahaya inmeniz gerekiyor. Sahaya nasil inersiniz? Hemen bugün yapay zeka destegi ile bir proje yapmaya baslayarak. Adim adim yapilmasi gerekenleri anlatiyorum. 1.) […]

Clean Prompt

Benim yazilima bakis ve yazilimi uygulayis tarzimi tamamen extreme programming (https://pratikprogramci.com/wp-content/downloads/pratik-agile-ozcan-acar.pdf) sekillendirdi. Extreme Programming ile test güdümlü yazilimin ve refactoring yapma kabiliyetinin bir yazilim icin ve onu sekillendirme sürecinde ne anlama geldiklerini bu sekilde ögrendim. Yazilimda cevik olmanin temelinde uygulamayi bir hamur gibi yogurabilme yetisi yatiyor (https://kurumsaljava.com/2012/04/05/cevikligin-boylesi/). Her yeni müsteri gereksinimi ile uygulanin hamur gibi […]

Neden Gpt Modelleri ile Yazılım Yapılamaz

OpenAI modellerinde haftalık limitler var ve yeni modeller Sol ve Astra ile birkaç gün içinde harcanacak token kalmıyor. Bu sorunu aşmak için ben 3 pro hesabı ile çalışıyorum. Bunun yanı sıra görev tipine göre değişik model türleri kullanmaya başladım. Buradaki amaç fazla token yakmadan basit işleri ucuz modellere yaptırabilmek. Buna rağmen her zaman Codex ile […]

Yapay Zeka ve Trunk Başed Calışma

Yapay zeka ile çalışırken feature branch bazlı mı yoksa trunk based mi yani sadece develop ya da main branch içinde mi çalışılmalı? Önce ben nasıl çalışıyorum, ona değineyim. Ben trunk based calışıyorum. Birden fazla opus develop branch üzerinde değişik feature setleri üzerinde çalışıyorlar. Arada bir test ve derleme problemleri çıksada, birbirlerini bekleyip, devam edebiliyorlar. Buna karşıllık […]