Senior Developer

10+ yıl tecrübeli ve artık “dinozor” olarak görülen yazılımcılar ile çok az yazılım tecrübesi olan yazılımcıları aynı kefeye koymaya başlamışlar. Kod yazmanın ya da yazdırmanın yeterli olduğunu düşünüyorlar. Yapay zekanın kod yazıyor olması iki jenerasyon arasındaki farkı öyle kolay kolay kapatamaz. 10+ yıl tecrübeli bir senior yazılımcının ne anlama geldiğini bilmiyorlar sanırım. Açıklayalım. Yazılım da […]

Yeni Darboğaz CI / CD

Bir sonraki patlama CI/CD pipeline’larında yaşanacak. Yapay zeka deli gibi kod yazıyor. Ama koddan belki daha hızlı test yazıyor. Bunun sonucu kontrolsüz bir test enflasyonu. Ben şu anda bu problemle bizzat savaşıyorum. Bir backend sürümünün test, release ve deployment süresi 90 dakikaya dayanmış durumda. Asıl problem test sayısı da değil. Bu testlerin önemli bir bölümü […]

Yazılımcıları Vahşi Doğaya Salın

Yapay zekaya maruz kalan yazılımcıların bugün yaşadığı çok büyük bir problem var. Yapay zeka ile çalışan yazılımcılar, iş yerlerinde prompt engineering yaptıkları için uzun süre bilgisayarın başında pasif bir şekilde oturuyorlar. Bazen dakikalarca ekrana bakıyor, yapay zekanın işini bitirmesini bekliyorlar. Bunun ana sebeplerinden biri, prompt engineering yönteminin profesyonel yazılım geliştirme süreçleri için ölçeklenebilir bir çalışma […]

Yapay Zeka İle Sohbet

Yapay zeka ile çalışırken dikkat edilmesi gereken en önemli hususlardan birisi, onun birçok söylem ve eyleminin altında varsayımların yatmasıdır. İsteklerinizi yeterince keskin ifade etmezseniz, size kanatları olan ama uçamayan bir uçak teslim edebilir.  Uçak örneğinden devam edelim. Varsayımları ortadan kaldırmak için sadece “bir uçak yap” demek yetmez. “Bu uçak tamamlandığında uçabilmelidir” demeniz gerekir. İşte varsayımlara […]

Eskiden Girisimcilik – Simdi Girisimcilik

Eskiden girişimcilik: — Bir fikrim var ama emin değilim. Önce birkaç kişiye danışayım. — Fikir fena görünmüyor. Biraz pazar araştırması yapayım. — Galiba olabilir. Bir MVP geliştireyim. — Bunun için bir ekip ve bütçe lazım. — Birkaç ay sonra MVP hazır. Şimdi test edebiliriz. Şimdi girişimcilik: — Bir fikrim var. — Ürünü yaptım. — 2 […]

Holokrasi Nasıl Hayata Geçirilir?

Yönetim kültüründen daha önce bahsetmiştim. Biz şirket olarak holokrasi yönetim modelini benimsedik ve şirket içinde bu yönetim tarzını kullanacağız. Holokrasi ile hiçbir çalışanın doğrudan bir amiri olmayacak. Çalışanlar belirli bir alan için kurulmuş bir hücre içinde faal olacaklar. Her hücre içinde maksimum 7-9 çalışan olacak. Hücre içinde de doğrudan liderlik söz konusu değil. Şahıslar yerine […]

Yazılımcılar ve Zihinsel Modellerle Olan Sınavları

Gelelim yazılım mühendislerinin her daim sınavı olmuş şu zihinsel model oluşturma işine. Zihinsel modelin sadece kod bağlamında oluşabileceğine, koddan kopmakla birlikte bunun artık mümkün olmadığına dair garip bir inanış var. Yapay zekaya her şeyi devir ve delege ettiğimizde, yapılan iş hakkında zihinsel model oluşturmanın artık bir illüzyon olduğunu söylemlerini duymaya başladım. Genelde bu söylemlerin arkasında […]

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