Davranış Mimarlığı

Umarım tasarım prensiplerini hatırlıyorsunuzdur, hatta onları kullanmaya gayret ediyorsunuzdur. Detaylar için bu konuda yazdığım makalelere bakabilirsiniz: Tasarım prensipleri kod seviyesinde, yapıları doğru şekilde oturtmak için kullandığımız mekanizmalardı. Örneğin SRP ile tek sorumluluğu olan sınıflar ya da metotlar tasarladık, OCP ile modüler yapılar inşa ettik, DIP ile bağımlılıkların tanımlı soyut yapılar üzerinden koda enjekte edilmesini sağladık […]

Reuse Olmuştur, Yaşasın Reuse

Şirket içi süreçleri yönetmek için altı değişik uygulama tasarladım. Birkaç tanesi de pipelilne’da. Çoğunda takvim, talep yönetimi (ticket) ve WhatsApp vari chat özelliği var. Ama bu ortak özelliklerin hiçbirisini modül olarak tasarlamadım. Yani yıllardır bize öğretilen: “Bir kere yaz, her yerde kullan.” felsefesini terk ettim. Neden? Yazılımda tekrar kullanım önemli değil miydi? Bizlerden yazılımcı olarak […]

Invariant Driven Development

Yapay zeka ile sağlıklı ve istediğimiz yapıda uygulamalar geliştirebilmek için kullanabileceğimiz iki yöntemden bahsetmek istiyorum: 1.) Spec Driven Development 2.) Invariant Driven Development Bir sonraki yazımda Spec Driven Development nedir ve nasıl yapılır konusuna değineceğim. Bu yazının konusu ise IDD: Invariant Driven Development. Testlerden başlayalım. Özellikle de birim (unit) testlerinden. Klasik birim testlerinde test edilen […]

Müfredat Değişmek Zorunda

Yapay zeka gerçekleri tam anlamıyla kabul gördüğünde, yazılımcıların eğitim ve gelişimleri de radikal bir şekilde değişikliğe uğrayacak. Ağırlık artık teknik yetkinlikte olmayacak. Bir programlama dilini ne kadar iyi bildiğiniz, bir framework’ün API’lerine ne kadar hakim olduğunuz ya da ne kadar hızlı kod yazabildiğiniz giderek önemini kaybedecek. Bunların yerine başka yetkinlikler ön plana çıkacak: – Bir […]

Devri Biten Şeyler

Nerede durduğumuzu daha iyi anlamak için nelerin bittiğini ve devrinin kapandığını özetleyelim. 1.) Kod yazmak Bunda hemfikir olduğumuzu düşünüyorum. Tartışmaya açık olmayan bir konu. 2.) Kod okumak Hala itirazlar gelmiyor değil, kod okumanın gereksiz olduğunu söylediğimizde. Neden kod okumanın gereksiz olduğunu gösteren birkaç güçlü argüman var. Birincisi, yapay zeka çok iyi kod yazıyor. İkincisi, yapay […]

Artik Kitap Okumuyorum

Her gün bir kitap okuyorum gibi. Eskiden kod yazarken çoğu şeyi zihnimden geliyordu. Arada takıldığım yerlerde stackoverflow gibi yerlerde çözümler arardım ya da çalışma arkadaşlarıma danışırdım. Boş vakitlerimde de beni ilgilendiren yazılım konularında kitaplar okurdum. Şimdi durum değişti. Çözmem gereken teknik problemler %90 oranında azaldı. Stackoverflow gibi sitelere gitmeyeli 5 sene olmuştur. Artık teknik kitaplar […]

Testlere Gerek Kaldı mı?

Kod yazma ve okuma devri bitti dedik. Peki testler ne olacak? İyi niyet taşıyarak ajanların her kod parçası için test yazmaya başlamaları çok büyük problemlerin habercisi olabilir. Bunlar: – CI/CD süreçlerinin uzaması. – Ajanların kapsama alanı geniş (code coverage) testleri her defasında okumalarının gereksiz token harcamalarını tetiklemesi. – Testlerin mevcut implementasyona çok sıkı bağlanarak refactoring’i […]

Hayaller Nasıl Gerçekleşir?

Ok, biraz da vizyon ve hayallerin nasıl gerçekleştirilebileceğinden bahsedlim. Bunun için karanlık oda prensibine deyinmek gerekiyor. Önce evrenden başlayalım. Evren genişliyor. Üstelik çok uzak mesafelerde bu genişleme öyle boyutlara ulaşabiliyor ki, bugün bazı galaksilerden yayılan ışık gelecekte bize hiçbir zaman ulaşamayacak. Burada ışığın uzay içerisinde ışık hızından daha hızlı hareket etmesinden değil, uzayın kendisinin genişlemesinden […]

Sosyal Sorumluluk Kültürü

Yönetim kültürü ve şirket kültüründen bahsettik. Bir şirketi ayakta tutabilecek, faaliyetlerini anlamlı kılacak, çalışanlarında aidiyet hissi oluşturacak ve onları tatmin edecek üçüncü bir ayaktan bahsetmek istiyorum. Sosyal sorumluluk kültürü. Bir şirket ekonomik kazanç oluşturmak için kurulur. Bu kazanç çok küçük bir oranda şirketin çalışanlarına yansırken, büyük bir kısmı şirket sahiplerinin ceplerinde kaybolur. Bu sebeple şirket […]

Şirket Kültürü Hakkında

Yönetim kültüründen bahsettikten sonra, şirketin çalışanları için oluşturacağı ortamın temeli olan şirket kültüründen bahsedelim. İnsanlar arasındaki ilişkiler kültürleri seviyesinde şekillenir. Kültür, öğrenilmiş birlikte yaşama kurallarını da ihtiva eder. Bir toplumda insanların birbirleriyle nasıl konuşacağı, birbirlerine nasıl davranacağı, neyin kabul edilebilir, neyin kabul edilemez olduğu büyük ölçüde o toplumun kültürü tarafından belirlenir. Şirketler de aslında küçük […]

Holokrasi İle Yeni Bir Yönetim Kültürü Oluşturmak

Yeni bir yönetim kültürü modeli olan holokrasiye, en azından bizim yeni oluşturduğumuz startup bünyesinde bunu nasıl implemente etmek istediğimize değinmek istiyorum. Abdullah Kiğılı’nın bir sözü var: “Çalışanlar müdüre başka, patrona başka davranırlar. Türkiye’de patron işin başında olmadığı sürece o iş yürümez.” Haklı! Ama bunun sebebi, yanlış yönetim kültürünün bizzat patron tarafından bu şekilde inşa edilmiş […]

Yapay Zeka ve Refactoring

Ben yazılımcıların severek ne test yazdıklarını ne de refactoring yaptıklarını gördüm. Halbuki her ikisi de sağlıklı ve uzun ömürlü bir uygulama oluşturmak için elzem. Testler olmadığı için kimse refactoring yapmaya cesaret edemiyor. Ya “bana ne” diyor ya da bunun için gerekli zamanı bulamıyor. Yapay zeka ile yazılım geliştirme döngüsü ise test etme ve refaçtoring üzerine […]

Ajan Skill’leri Değişen Kültür

Agent skill’leri hakkında konuşalım. Ben Claude Code bünyesinde hiçbir SKILL dosyası kullanmıyorum. Açıkçası kullanmayı da tavsiye ve tasvip etmiyorum. Neden? Bu, sizin çocuğunuzu başka birisinin terbiye etmesi gibi bir şey. Yapılacak işin tüm kurallarını bir skill set tanımlıyor. Siz ajana bir iş veriyorsunuz, skill ise ona bu işi nasıl yapması gerektiğini söylüyor. Ama benim tam […]

Yazılım Üretim Hattı

Fikirden canlı ürüne nasıl geliyoruz, 10 adımda anlatalım (uçtan uca üretim modeli) 1. Güzel bir fikir buluyoruz. Başka kimsede bu fikrin olmaması lazım ;-) 2. Sonra Gpt ile geniş kapsamlı, saatler süren analiz seansları yapıyoruz. 3. Daha önce bolca bahsettiğim gibi loop engineering yapabilmek için gerekli iş paketlerini Gpt’ye hazırlattırıyoruz. 4. Akabinde loop.sh ile döngüyü başlatıyoruz […]

Yoruldum

Ben eskiden kod yazarken bu kadar zihinsel yorulmuyordum. Spesifik bir şeye odaklanıp, saatlerce onunla uğraşabiliyordum. Şimdi durum değişti. Kod yazmıyorum. Kodu yazdırıyorum. Kodu da artık okumuyorum. Ama eski çalışma sistemime göre bir değişim söz konusu. Artık herşeyi en ince detayına kadar anlayıp, yapay zeka ajanlarını yönlendirmem ve yönetmem gerekiyor. Paralelde 2-3 değişik proje ve onlarca […]

Token ve Üretim Kapasitesi İlişkisi

Oh, oh! Gpt haftalık limitim full, üzerinde birde bedava fulleme kredisi vermişler. Etti mi %200. Claude codex de aynı şekilde full. Orada da bir resetleme kredisi var. Toplamda %400 yapay zeka sermayem var. Şimdi bu %400’ün yani yapay zeka sermayesinin ne anlama geldiğini somut bir örnek ile açıklayayım. Ben burada harcayabileceğim token görmüyorum. Ben burada […]

Yapay Zeka İle TDD

Daha önce TDD (Test Driven Development) yaptınız mı? TDD’de çalışma mekanizması kabaca şöyle işler: Önce bir test yazarsınız. Test çalışmaz, çünkü henüz kodda karşılığı yoktur. Sonra testi çalışır hale getirene kadar implementasyonu yaparsınız. Ardından yeni bir test yazarsınız. O da çalışmaz. Onu çalışır hale getirecek kodu yazarsınız. Böylece sürekli çalışmayan testler yeni kodu doğurur. Testler […]

Macroservice Event Driven Domain Based Monolith Architecture

Microservice mimarileri bence yanlış anlaşıldı. SRP’den (Single Responsibility Principle) yola çıkılarak sadece tek bir iş yapan, kendi içinde koherent minnak servisler oluşturuldu. Sonra bütün bu servisleri HTTP üzerinden birbirine bağlayıp ortaya dağıtık bir cümbüş çıkardılar. Aklı başında kimse bir sisteme microservice mimarisi ile başlamaz. SRP yerine domain bazlı düşünmek lazım. Oluşturulan uygulama kendi domainine tam […]

Yapay Zeka Daha İyi Kod Yazıyor

Yazılımcıların yapay zeka araçlarının yaptığı işlere karşı tereddüt etmesinin bence temel bir sebebi var: Yazılımcılar, yazılımın ne kadar kırılgan olduğunu biliyorlar. Mutlaka düşünülmemiş bir edge case vardır. Mutlaka hesaba katılmamış bir yan etki vardır. Bir yeri düzeltirsin, başka bir yer bozulur. Hop, sistem yamulur. :) Zaten yazılımcılar yıllardır tam da bu nedenle regresyonu önleyecek mekanizmalar […]