- Vibe coding yükselirken buna eşlik eden "artık geliştiriciye gerek yok" vs "yine de daha çok erken" tartışması da hararetli şekilde sürüyor
- İki tarafın da haklı olduğu noktalar var. Yapay zekadaki gelişmeleri izlerken ve product engineer olarak çalışırken düşündüklerimi toparladım
- Ama ben bir yapay zeka uzmanı değilim, sadece bir geliştiriciyim. Vibe coding deneyimim de az. Yine de başkalarının görüşlerini duymak istediğim ve kaygı duyan junior geliştiricilere yardımcı olmasını umduğum için bu yazıyı yazdım
Bizzat deneyimlediğim Vibe: Bu kadar ileri mi, yoksa ancak bu kadar mı?
Hafta sonu vibe coding ile bir misket oyunu yaptım. 7 yaşındaki kızımla birlikte oynamak için hazırladım. Kodlamanın %90'ı yalnızca promptlarla ilerledi, uygulama süresi dramatik biçimde kısaldı (4 saat içinde fena olmayan bir kalitede tamamlandı)
Bu süreçte bir yandan "Böyle basit bir şeyi de mi yapamıyorsun?" diye hayal kırıklığı yaşadım, bir yandan da "Sadece bu seviyedeki gereksinimlerle bile bunu bu kadar iyi mi yapıyorsun?" diye şaşırdım. Özellikle ilki ağır bastı; çünkü yapay zekanın "benim dediğimi yapmasını" sağlamak kolay değildi
Ama sonuçta promptları iyileştirip teknoloji daha da gelişirse, "şaşkınlık" tarafının çok daha ağır basacağını ve bunun junior geliştirici alımlarında belirgin bir düşüşe yol açacağını düşünüyorum
Bu hissi Pareto ilkesi ve ürün olgunluğu kavramıyla anlatmaya çalışacağım
Karanlık tablo: Kodun %96'sını yapay zeka yazabilir
Ürün olgunluğunu 3 aşamada (zero-to-one, one-to-ten, sonrası) düşünürsek, zero-to-one seviyesindeki kodlamanın büyük bölümünün yapay zekayla ikame edilebilir hale gelmesi beni gerçekten sarstı
Pareto ilkesine göre bakarsak, bir geliştiricinin ürün geliştirmek için ürettiği kodun %80'i aslında bu zero-to-one için ortaya çıkan çıktı değil miydi diye düşünüyorum.
- Fikrin hayata geçirilmesi ve PMF aranması sürecinde çıkan kodlar. Ayrıca vibe coding ile geliştirici olmayanların da kolayca üretebildiği kodlar.
Buna ek olarak, one-to-ten aşamasında gereken %80'in iyi tanımlanıp parçalara ayrılarak zero-to-one seviyesinde ele alınabileceğini varsayarsak...
- Aşırı uçta, üretilen kodun yaklaşık %96'sı (= 0.8 + 0.2 * 0.8) yapay zeka tarafından ikame edilebilir gibi geliyor
- Vibe coding'i tanıtan Y Combinator videosunda da bazı kurucuların "ürünün kod tabanının %95'ini yapay zeka yazdı" dediği söyleniyordu; rakamlar tuhaf biçimde birbirini tutuyor
Bunun, geliştirici yetkinliğine dair beklentiyi ve MVP düzeyindeki ürünlere dair beklentiyi genel olarak yukarı çekeceğini düşünüyorum.
- Bootstrap ve TailwindCSS sonrasında frontend geliştiriciler için "makul düzeyde UI stil verme" becerisinin temel bir yeterlilik haline gelmesine benzer
Öyleyse, eskiden zero-to-one aşamasında ürün çıkarabilme becerisiyle bile saygı görebilecek geliştiricilere ayrılan işe alım kontenjanlarının azalması gayet doğal görünüyor. Bu yüzden "artık geliştiriciye gerek yok" sözü tamamen abartı sayılmaz....
...Peki gerçekten öyle mi?
Umutlu tablo: Yine de geliştiricilerin yapacağı çok iş var
1) Pazar çok daha büyüyecek, dolayısıyla yapılacak iş de artacak
Vibe coding'in en büyük anlamı, ürün geliştirmenin giriş bariyerini düşürmesinde yatıyor
- Eskiden zero-to-one için geliştiricilerin elle yapmak zorunda kaldığı işlerin büyük kısmını, kodlama ajanları son derece düşük maliyetle (zaman/para/insan) ikame ediyor.
- Yani geliştirici olmadan da fikir yürütme-doğrulama döngüsünü hızla çevirmek mümkün hale geliyor
Bunun sonucunda, eskiden ortaya çıkamayan zero-to-one (hatta onun da altı) seviyesindeki ürünler patlama yaşarcasına çoğalacak ve "ben de fikrimi hayata geçirmek istiyorum" diyen insanların sayısı da çok artacak.
Bütün bunlar, "geliştiricilerin para kazanabileceği" pazarın büyümesine yol açacak. Eskiden geliştiricilerin müşterisi olmayan insanlar yeni bir müşteri kitlesine dönüşecek. Örneğin:
- Geliştirici olmayanlar, PM'ler ve tasarımcıların kendi fikirlerini hayata geçirmesini sağlayan vibe coding eğitimleri
- Cursor ile ürünün %90'ını yapmış ama bitirememiş kişilere ürünü tamamlamada yardımcı olan kısa süreli freelance işler
- Bir şekilde yapılmış ürünü gerçekten işletip sürdürülebilir gelir elde etmeye bağlayan danışmanlık
- Vibe coding'i daha iyi ve daha kolay yapmaya yardımcı çeşitli ücretli araçların geliştirilmesi
İster şirket dışında bu işlerden ek gelir elde edilsin, ister bu işleri yapan şirketler ortaya çıksın, pazar değişiminin en büyük faydasını geliştiricilerin göreceğini düşünüyorum
2) Geliştiricilerin kodlama dışında da yapabileceği ve yapması gereken çok şey var
Yapay zeka "kodlamanın" %90'ını ikame ediyor diye geliştiricilerin %90'ını işten çıkarmak mümkün değil
- Çünkü kodlamanın ürün geliştirme içindeki, hatta daha geniş anlamda product engineering içindeki payı sanıldığı kadar büyük değil
Bir ürüne tek bir özellik eklenene kadar kabaca nasıl bir süreçten geçildiğine bakmak bile ne kadar çok adım olduğunu gösteriyor.
- Problemin fark edilmesi
- Çözüm fikrinin çıkarılması
- Beklenen etki ve maliyetin tahmin edilmesi, geliştirme önceliğinin belirlenmesi
- Bunun ürüne bir özellik olarak işlenmesi için planlama yapılması
- UI/UX tasarımı
- Mimari tasarım
- Backend + frontend + altyapı implementasyonu
- Kod inceleme, otomasyon testleri, QA
- Dağıtım, izleme, özelliğin tanıtımı, A/B testleri
- Kullanıcı geri bildirimi toplama, operasyon, iyileştirme
Vibe coding burada yalnızca 7. adımı ve 8. adımın bir kısmını üstleniyor.
- Gerçekten üstün bir product engineer ise tüm bu adımların her birine belirli bir seviyenin üzerinde dahil olmalıdır
- Kodlamayı yapay zeka üstlendikçe, geriye kalan işleri iyi yapan insanların değeri aslında daha da artıyor
3) Sadece kodlamaya baksak bile hâlâ anlamlı ölçüde iş var
Product engineering tarafına hiç girmesek bile yapılacak iş çok
- One-to-ten kodlamasının son birkaç yüzdesini tamamlama işi çok olacak
- Geliştiriciler spesifikasyon tasarımı, yapı tasarımı, işin parçalara ayrılması gibi konularda yardımcı olursa vibe coding'in maliyeti de düşecek
Ayrıca one-to-ten sonrası ürünlerde vibe coding'in birçok sınırı var
- Kod tabanı büyür -> sınırlı context window
- Yüksek güvenlik seviyesini korumak ve performansı artırmak için uzmanın doğrudan müdahalesi gerekir
- Yapay zekanın iyi öğrenmemiş olabileceği kütüphane veya dillerle kodlama yapılırken de durum aynı
- https://tr.news.hada.io/topic?id=19923 da benzer sorunlardan söz ediyor
Peki junior geliştiriciler şimdi ne yapmalı?
Dünya ister karanlık tabloya gitsin ister umutlu tabloya, çok hızlı değiştiği kesin. Özellikle işe alım kapısının keskin biçimde daraldığı bir ortamda, junior'lar nasıl öğrenmeli ve büyümeli?
<Üstün geliştiriciyi ne yaratır?> makalesini okuyup, üstün geliştiricinin 5 temel yetkinliğini şöyle tanımladım
- İyi kod yazar
- Kanıta dayalı karar vermeyi uygular
- Ekip arkadaşlarının etkili karar vermesine yardımcı olur
- Yaptığı işin mevcut değerini maksimize eder
- Etkili ve sürdürülebilir biçimde öğrenir
Bunlar yapay zeka çağında da hâlâ önemli. Bunu umutlu tabloyla ilişkilendirebiliriz
1) Büyüyen pazardan aktif biçimde yararlanmak
Ben olsam şunları denerdim
- Prompt engineering çalışmak
- Yeni çıkan AI uygulamalarını tek tek kurcalamak
- Kodlama ajanlarının gereksinimlerimi daha iyi anlaması için işi nasıl parçalara ayırmak gerektiğini öğrenmek ve denemek
- Kendi küçük problemlerimi çözen bir uygulamayı vibe coding ile yapıp yayına almak
- Geliştirici olmayan bir tanıdık vibe coding yapmak isterse ona (ücretli olarak) özel ders vermek
- Tanıdıkların implementasyonu bitirip yayına almasına ve işletmesine de (yine ücretli olarak) yardımcı olmak
2) Product engineer olarak yetkinlik kazanmak
Ben olsam şunları denerdim
- Problem fark etme, fikir üretme, planlama, tasarım, test, operasyon gibi ürünün tamamına ilgi duymak
- Tek başına kurucu gibi uygulama yapıp işletmek, product engineering yetkinliğini doğal olarak büyütür
- Ekip içinde iş birliğiyle ürünü iyileştirmeye çalışarak hem iş birliği hem product engineering becerilerini geliştirmeye çalışmak
Ben geliştirici işe alıp offer letter yazarken her zaman "Senden mini bir CTO gibi düşünerek çalışmanı bekliyorum" anlamına gelen bir ifade eklerdim
- En azından sana emanet edilen projede teknik kararların nihai sorumlusu sensin
- O projeyi başarılı kılmak için gereken tüm aşamalara dahil ol
- Teknik ya da teknik olmayan fark etmeksizin, ekip arkadaşlarının etkili kararlar almasına ve harekete geçmesine yardım et
3) Tek tek teknolojileri derinlemesine anlamak ve kodlama sezgisi geliştirmek
Tek tek teknolojileri derinlemesine anlayan geliştiricilere sürekli talep var. Çünkü PMF'nin ötesine geçip unicorn/decacorn şirkete dönüşmek için Make it Right & Fast şart.
Bunun kestirme yolu yok. (Yapay zekadan yardım alarak da olsa) zaman yatırıp emek vermek gerekiyor.
- Framework/kütüphane iç yapısını incelemek, tarihsel bağlamı anlamak, open source'a katkı vermek, doğrudan kütüphane geliştirmek, bug izleme/düzeltme, web standartları/performans iyileştirmeleri gibi
Aynı zamanda iyi koda dair kendi ölçütlerini oluşturmak ve iyi kodu ayırt eden bir "kodlama sezgisi" geliştirmek çok daha önemli hale gelecek. Çünkü yapay zekanın yanlış vibe'ını fark etmek, durdurmak ve müdahale etmek gerekecek.
Kodlama sezgisi geliştirmek için bilinçli pratik şart. Burada da zaman ve emek vermek gerekiyor
- Çok sayıda iyi kod görmek, kendi yazdığın kod için ister yapay zekadan ister kıdemli geliştiricilerden bol bol geri bildirim almak, yapay zeka ya da ekip arkadaşlarının yazdığı koda bakıp "böyle giderse ne tür sorunlar çıkar" diye tahmin yürütmek ve bunu gerçekle karşılaştırmak
11 yorum
Her hâlükârda yazılım mühendisliğindeki pratik işler büyük ölçüde değişecek. Sadece kod üreten makinelerin rekabet gücü düşecek, ama ben gerçekten bir ürünü uçtan uca geliştirebilen mühendislerin ayakta kalacağına bahse giriyorum.
Klavye yazma işi azaldı ama yapay zekanın ürettiği tuzak kodları bulma işi eklendi.
Gerçekten çok anlamlı ve güzel bir yazı, teşekkürler!
Bir yazım hatası yapmışım. TT
Özellikle ikincisi için bunun büyük bir nedeni, yapay zekayı 'dediklerimi takip ettirmenin' kolay olmamasıydı -> birincisi
Startup’ların ihtiyaç duyduğu product engineering alanını derinlemesine anlamak elbette iyi bir şey, ancak bence bunun yerine teknolojiyi en uç noktaya kadar takip edip sürekli bileyleyen bir yol da hâlâ anlamlı. Basit web uygulamaları geliştirme işi yapay zeka tarafından ikame edilecek olsa da, birilerinin Kubernetes’i tasarlaması ve ElasticSearch’ü dizayn etmesi gerektiğini düşünüyorum.
Böyle çekirdek bileşen tasarımcılarının sayısı sınırlı olduğundan, sonuçta "geliştirici" olarak adlandırılan mesleğe olan talebin azalacağı görüşüne katılıyorum.
Yorum yazdıkça, yazıda ifade etmek istediğim mesajın kafamda netleştiğini fark ediyorum.
Bana göre tek tek şirketler düzeyinde geliştirici talebi her hâlükârda azalacak gibi görünüyor; ancak 'geliştirme işi'ne ihtiyaç duyan şirketlerin ya da buna benzer işletme/sahısların sayısı çok daha fazla artacağı için, geliştiricilerin yapacak işi yine de çok olacak.
Elbette bunların da yerini AI alabilir ama iş o noktaya gelirse zaten yerini AI'nın alamayacağı pek bir meslek kalmaz herhâlde...
Çok yerinde sözler!
Katılıyorum. Bundan sonra işlerin AI coding ile yapılacak kısmı ile insanların yapacağı tasarım ve inceleme kısmı diye ayrılacak gibi görünüyor; proje bütününü anlayan bir yapay zeka ortaya çıkana kadar da birlikte var olacaklar gibi.
Katılıyorum! Elbette orada da yapay zeka yardımcı olur ama sadece vibe ile zor olur diye düşünüyorum.
Bu arada, vibe coding ile yapılmış oyun bu: https://www.stdy.blog/vibe-go-stone/