Canlı ve Bugfixing

Bir production bug’ın çözülmesi günler, hatta haftalar alabilir. Çünkü bug’ın kendisini düzeltmek, sürecin sadece küçük bir parçasıdır. Önce problemin fark edilmesi gerekir. Sonra anlaşılması ve kategorize edilmesi. Ardından önceliğinin belirlenmesi, bir ticket’a dönüştürülmesi ve bir yazılımcıya atanması gerekir. Yazılımcı problemi yeniden analiz eder, ilgili kodu bulur, çözümü geliştirir, test eder ve deployment süreci başlar. Yani […]

Solo Founder

Ben şahsen startup ekosisteminde venture capital ve gidişatı para ile hızlandırma işine sıcak bakanlardan değilim. Nedenlerini daha önceki yazılarımda paylaşmıştım. Bu yazımda başka bir konuya değinmek istiyorum. Melek yatırımcılar ve VC’ler genelde solo girişimcilere mesafeli yaklaşırlar. Bunun temel gerekçelerinden biri, tek bir insanın bir startup’ın bütün yükünün altından kalkamayacağı düşüncesidir. Durum böyleyken bazen 5-10 kişinin, […]

Yazılımcı Mülakatları Bitmiştir

Bugün bir yazılımcı ile iş görüşmesi yapsam, kendisine neredeyse hiçbir şey sormazdım. Önüne bir bilgisayar koyardım. Bilgisayarda Codex ve Claude Code hazır olurdu. Bunun yanı sıra uygulamalarımızın kaynak kodlarına da erişimi olurdu. Sonra: “Canlıda şöyle bir problem çıktı. Düzeltin lütfen” der ve sadece yaptıklarını seyrederdim. Ardından Jira’dan gerçekçi bir ticket açardım: “Bunu implemente edin lütfen.” […]

Kutsal Sürümler

Gelelim başka bir kutsal akdin demistifiye edilmesine: “Sadece ürünün gelişmiş ve stabil hali sürüm olarak canlıya alınır. Onu stabilize etmek için her şey mübahtır.” Yanlış! Yazılım geliştirmek çok maliyetli olduğu için, sürüm oluşturmak ve canlıya almak da bu maliyet dünyasının bir parçasıydı. Bir değişikliği üretmek pahalıydı. Test etmek pahalıydı. Hataları bulmak ve düzeltmek pahalıydı. Release […]

Native AI Olmak

Eskiden büyük şirketler küçük şirketleri yutardı. Sonra teknoloji gelişti. Küçük şirketler, büyük şirketler için ciddi birer tehdit olmaya başladı. Şimdi yapay zeka geldi. Yeni dönem bence daha farklı olacak: AI-native şirketler, AI-native olmayan şirketleri zorlayacak. Neden? Çünkü AI-native bir şirket sadece yapay zeka kullanan şirket değildir. Ürün geliştirmesini, operasyonlarını, pazarlamasını, müşteri hizmetlerini, analizlerini ve karar […]

Devops Devri Kapanıyor mu?

Kod yazma, okuma devri kapandı dedik. Tepkiler gecikmedi. Lakin hakikatler kendini kısa sürede gösteriyor. Yazılımcıların bilimum çalışma yöntemleri tepe taklak olmuş durumda. Bu yazılım mühendisliğinin sonu değil. Tam tersine, artık daha fazla mühendislik söz konusu, çünkü yazılımcılar sistemler inşa etmeye odaklanacaklar. Bunun için de mühendislik yetileri gerekiyor. Tabi yapay zekadan tek nasibini alan sadece yazılımcılar […]

Kim Yapay Zeka Ile Bir Ürün Geliştirip, Canlıya Alamaz?

Canlı tecrübesi olmayanlar! Daha önce sürüm yapıp, canlı deployment’i, bir canlı problemi için kök neden analizi, thead ya da ya heapdump ya da memory leak analizi yapmamış ve gerekli monitoring ve tracing altyapısını kurmamış birisi süper bir uygulama da geliştirse, onu canlıda işletemeyeceği için bu alandaki faaliyetlerinin hiçbir anlamı yoktur. Lokalde çalışıyor söylemine başvuranlara selamlar.

Canlıda Patlayan Uygulamalar

Evet, yeni ortaya çıkan bir yapay zeka söylemini de demistifiye edelim. Söylem şöyle: “Yapay zeka ile geliştirilmiş uygulamalar canlıda patlar ve sen ne yaptığını bilmiyorsan başın büyük beladadır.” Doğru. Ama insan tarafından geliştirilmiş uygulamalar da canlıda patlar. Bu yüzden onlarca yıldır yazılım mühendisliğinde şu mekanizmaları oluşturuyoruz: – Automated tests – E2E tests – Static analysis […]

Tam Otonom Yazılım İçin Gerekli Şartlar

Tam otonom yazılım yani kod yazmadan, okumadan ajanların software factory tarzı ve loop engineering ile ürün çıkardikarı bir ortam için gerekli olan şeyler: 1. Tecrübeli ve gidişata hükmedip, yönetebilecek bir senior yazılımcı 2. Bu şahsın ne istediğini ya da müşterinin ne istediğini çok iyi bilmesi 3. İyi gereksinim analizi ve code review yapabilen bir llm […]

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 […]