Yapay zeka beni aptallaştırıyor
(jpain.io)- Yapay zekayla yazmak, makale, kod ve doküman yazımında güçlü bir cazibe sunuyor; ancak doğrudan yazma ve düşünme becerisinin azaldığı kaygısını büyütüyor
- Yapay zekanın ürettiği çıktılar yeniden okunduğunda “tam bir yapay zeka işi gibi” bir his veriyor ve kişinin kendi üslubunu ya da niyetini tam olarak yansıtamıyor
- Son 1-2 yılda kodlamada yapay zekaya büyük ölçüde bağımlı kalıp neredeyse yalnızca prompt yazdığı, doğrudan nasıl kod yazıldığını unutmuş gibi hissettiği bir kayıp duygusu büyüyor
- Artık yeniden elle kod yazmayı öğrenmeye çalışıyor ve kod okuyup yazabilen insanların yapay zeka sonrasında da gerekli olmaya devam edeceğini düşünüyor
- Yazısını Claude'a yapıştırıp kontrol ettirme dürtüsünün kendisi bir öz güvensizlik ve yapay zekanın yaslandığı kaygıyla mücadele edilmesi gereken şey haline geliyor
Yapay zeka kullanımının yazma ve kodlama becerilerini zayıflattığı kaygısı
- Yapay zekayla yazmak, makale, kod ve doküman yazımında çok cazip; ancak doğrudan yazma becerisini azalttığı hissini veriyor
- Eskiden yazı yazma ya da yazılım geliştirmede olağanüstü olmasa da belli bir yetkinliği olduğunu düşünürken, yapay zeka kullanımı arttıkça kendi becerilerinin kötüleştiği hissi büyüyor
- Yapay zekayla yazılmış sonuçlar yeniden okunduğunda “tam bir yapay zeka işi gibi” bir izlenim bırakıyor; kişinin kendi üslubuyla ya da niyetiyle uyuşmuyor ve aslında söylemek istediklerini tam olarak taşımıyor
- Bu kaygı, öz güvensizliği ve imposter sendromunu büyütüyor; hatta gerçekten o çıktıyı kendi başına üretip üretemeyeceğini bile sorgulatıyor
Kodlamayı yeniden elle öğrenmek istemesinin nedeni
- Son 1-2 yıl boyunca kodlamada yapay zekayı neredeyse tamamen kullandı, neredeyse sadece prompt yazdı ve doğrudan tek satır kod bile yazmadığını hissediyor
- Sonuç olarak kodlamayı nasıl yapacağını büyük ölçüde unutmuş gibi ve bir zamanlar hayatının merkezinde olan kodlamayı kaybetmiş olmanın hüznü ve bunalımı ağır geliyor
- Şimdi yeniden elle kod yazmayı kendi kendine öğreniyor
- Yapay zeka olsa da yazılım geliştirme becerisinin tamamen ortadan kalkmayacağını düşünüyor
- Kodu okuyup yazabilen insanlara hâlâ ihtiyaç var
- Böyle insanların sayısına duyulan ihtiyaç azalabilir, ama bu insanların kendisi yine de gerekli
- Yapay zekanın, son 20-30 yıldır süren yazılım geliştiricilere aşırı talep eğilimini tersine çevirebilmesini umuyor
- Robert Martin'in (Uncle Bob) derslerinde söylediği gibi, bilgisayar bilimi bir meslek haline gelmeden önce programlamayı fizikçiler, matematikçiler ve akademisyenler gibi uzmanlar yapıyordu
- Yazılım geliştiricilere olan talep patlayınca uzmanlığın bulanıklaştığını düşünüyor
- Yazıyı yapay zeka olmadan yazmış olsa bile, içerikte tuhaf ya da eksik bir yer var mı diye endişelenip Claude'a yapıştırarak kontrol etme dürtüsü hissediyor
- Bu dürtünün kendisi, yapay zekanın beslendiği öz güvensizlik ve mücadele edilmesi gereken bir şey olarak kalıyor
1 yorum
Hacker News yorumları
Bu iddiaya çok da katılmıyorum. AI ile her kod yazdığımda, AI’ın yaptıklarının tamamını baştan sona gözden geçirip kendi kodumla tamamlamam ya da düzeltmem gerektiğine dair içimi kemiren bir hisle sürekli mücadele ediyorum
Birkaç dakikada vibe coding ile çalışan bir uygulama elde etmenin dopamini var, ama o huzursuzluk bunu dengeliyor ve kısa vadede de kaybolacak gibi görünmüyor
Sanırım bunun nedeni deneyim sahibi olmam; junior ya da mid-level bir geliştirici olsaydım ben de buna rahatlıkla kapılabilirdim. Kariyerimin başlarında bilgili mentorların code review’larında hırpalanarak edindiğim yaralar olmasaydı, muhtemelen o his de olmazdı
Claude’un ürettiklerini çok dikkatli code review’dan geçirmek gerekiyor; yoksa kod tabanı sürekli büyürken teknik borca %100 yakınsar
Claude çıktılarının hepsini gözden geçiriyorum ve bunların %90-95’i şu noktaya geliyor: “Vay, çalışıyor. Ama kod çok fazla. Şimdi artık çıkaracak bir şey kalmayana kadar 3 saat el ele verip bunu sadeleştirelim”
Ajanlarla daha iyi işbirliği yolları bulmamız gerekiyor. İnsanın görmesi gereken önemli kısımları gözden geçirip geri kalanını “taşerona” verirsen, bizzat programlama yaptığında ulaştığın şekilde çalışan kod ve tasarıma daha hızlı ulaşabilirsin
Ben de ajanların yazdığı kodun yaklaşık %90’ını gözden geçiriyorum ama on binlerce karakteri kendim yazıp dosyalar arasında gidip gelmektense birkaç prompt yazmak ya da söylemek çok daha keyifli. Belki de sadece yazı yazmaktan yoruldum
Ama çok zaman alan, sıkıcı angarya işler için net bir mimari tasarladıktan sonra uygulamayı AI’a bırakıyorum. Yine de sonradan dönüp saçma bir şey yapıp yapmadığını kontrol etmek gerekiyor
Yakın zamanda iyi bir örnek olarak, Godot ile yaptığım bir oyunda Codex zaten Area2D’nin sunduğu davranışı sıfırdan yeniden uygulamaya çalıştı
AI’a anlamlı bir iş verdiğinde ortalık mayın ve garip tercihlerle doluyor. Yüzlerce dolarlık token harcasam farklı olabilir ama ayda 10 dolar harcayan biri olarak bu baş ağrısına değmiyor
Üstelik projem hobi amaçlı ve kod yazmak hâlâ eğlenceli. Save/load, veri dosyası ayrıştırma, ayar menüsü gibi sıkıcı kısımları AI’a bırakıyor, insan muhakemesi gerektiren yerlerde ise uzak tutuyorum
Ben olsam ajanları daha derine inmek ve daha hızlı öğrenmek için kullandığımı düşünmek isterim. Eskiden Stack Overflow, çeşitli IRC kanalları, Reddit vb. kaynakları birleştirerek çözüm oluşturmak epey zordu
Ama üniversitedeyken ödev de kopyaladım ve cevapları düzgün incelemedim, o yüzden emin değilim. Yine de sadece diploma almak için değil, ilgi duyduğum için programlama yapıyordum; o yüzden farklı olabilirdi
Her hâlükârda LLM çağından önce bol bol deneyim ve başarısızlık yaşamış olmama seviniyorum
Claude ya da GPT’den her seferinde benim bizzat yazdığım kod daha iyi oluyor
Bir keresinde zaten yazmış olduğum bir projeden spesifikasyon çıkarıp LLM’e sadece o spesifikasyona bakarak yeniden uygulatmıştım; kodları karşılaştırınca LLM sürümü kusmuk gibiydi
Bir geliştirici olarak bütün bunlar bir noktaya kadar iş güvencesi gibi hissettiriyor
LLM’leri bir süredir kullanıyorum; epey iyiler ve kullanmayı da seviyorum. Birkaç uygulamayı vibe coding ile yaptım; fikirlerin anında canlanması ciddi dopamin veriyor
Ama benim deneyimime göre körü körüne güvenirsen kesin çarpılırsın. Vibe coding ile yaptığım projelerde bile istemediğim “özellikleri” durmadan ekliyor
Kişisel projede nihai sonuç beklediğim gibiyse çok umursamıyorum ama şirketler bu kadar esnek olmayacaktır. Müşteriler de her düzeltme ya da güncellemede özelliklerin değişmesinden veya eklenmesinden hoşlanmaz sanırım
Bugünkü tabloyu özetlersek, birçok şirket bu yöne gidiyor ve doğru düzgün mühendislik olmadan AI daha fazla kod yazıp uygulamaları istenmeden değiştirebiliyor
AI korkusu ve işe alımların azalması nedeniyle piyasaya giren junior mühendis sayısı düşecek
AI kullanımı kritik eşiğe ulaştığında çok büyük değişiklikler olacak ve bunları “prompt” eden insanlar bunun altında ezilmeye başlayabilir
Zihinde tutulması gereken özellik sayısı artacak. LLM’e %100 güvenilemeyeceği için geliştiricinin uygulamanın tam olarak ne yaptığını yine de bilmesi gerekiyor
Sonunda bol bol bug çıkacak ve geliştiriciler ek insan gücü gerektiğinden şikâyet edecek. Sonra işe alımlar yeniden başlayacak
Şu anda en zor konum yeni geliştiricilerinki, en iyi konum da zaten piyasada olanlarınki gibi görünüyor
Başarılı olmak için neredeyse hiç hazırlık yapmadılar; en ucuz seçeneği körlemesine tuttular, belirsiz gereksinimler verdiler ve sürekli teknik inceleme ya da denetim neredeyse hiç yapmadılar
Gidişat senin anlattığına benziyordu. Başta akla gelebilecek en dağınık kodla prototipler hızla çıkıyor ve bu bir başarı gibi görünüyordu; ama zamanla teknik borç ve kötü kararlar giderek daha büyük bir sürtünmeye dönüştü, ilerleme yavaşladı ve sonunda proje durdu ya da öldü
Bu sefer farklı olabilir ama ilk işlerimin önemli bir kısmı bu tarz projeleri temizlemekti. Keşke yükselen yeni geliştiriciler de aynı fırsatı bulabilse
Her şeyden önce verimlilik artışı muazzam. Herhangi bir fiyat seviyesindeki herhangi bir araçtan daha büyük. Şirketimizde ana ürün bir web app ve son birkaç yıldır onu yeniden yazıyoruz
Bir öğleden sonra istediğim stack ile yeni bir proje kurup, birkaç saat içinde üzerinde çalıştığımız ürünün MVP’sini vibe coding ile ortaya çıkarabildim
Kusursuz değildi ama özellikleri tek tek küçük prompt’larla istedim ve her biri 5-10 dakika sürdü. Oldukça profesyonel görünüyordu ve her ölçüte göre “yeterince iyiydi”
Biraz daha zaman versem, küçük bir geliştirici ekibinin birkaç yılda yaptığı şeyi tek başıma çıkarıp sürdürebilirmişim gibi geldi. Ne yazık ki bu, verimliliği artıran bir araçtan çok ucuz bir “tüm takımın yerine geçecek ikame” gibi
Bir de teknik olmayan CEO’ların AI coşkusu var. Bizim CEO ve yöneticiler Claude’un ajan araç setini tamamen benimsedi; her gün mockup, app ve tool chain ortaya çıkarıyorlar
Bağımlı oldukları belli ve faydayı bizzat hissediyorlar. Henüz olmadı ama CEO’nun geliştirme ekibinin çoğunu işten çıkarıp birkaç kıdemli geliştiriciyle tüm uygulamayı vibe coding ile yaptırmasına şaşırmam
Şu an “AI bir ikame değil, çarpan!” diyorlar ama aynı cümlede “Bununla önümüzdeki birkaç yıl işe alım yapmamıza gerek kalmazsa bu bir zaferdir!” de diyorlar
Neden tüm uygulamayı vibe coding ile yapamayacağımız sorusu bana doğrudan soruldu ve açıkçası sağlam bir cevabım yoktu. “Uygulamayı nasıl bakım yapacağımızı bilemeyiz” gibi kulağa mantıklı gelen düşünceler var ama Claude tek bir geliştiricinin elinde bile epey iş çıkarabiliyor
“AI uygulamayı istenmeden değiştirip bug ekleyebilir” deniyor ama uygun gözlemlenebilirlik, test ve ek prompt’larla bunlar birkaç dakikadan birkaç saate düzeltilebilir
Açık konuşayım, şirketin tüm geliştirme ekibini olduğu gibi tutması artık pek mantıklı görünmüyor. Ne kadar çok proje başlatıp inisiyatif yürütsek de backlog hızla küçülüyor ve geliştirici başına çıktı miktarı absürt seviyeye çıkıyor
Teknik olmayan CEO’lar teknik borçla, bilişsel borçla, kötü yazılım tasarım pratikleriyle, kodlamayı öğrenmekle, geliştiricileri zinde tutmakla, problem çözmenin keyfiyle, iyi algoritma ya da mimarinin sanat yönüyle ilgilenmiyor
Onların istediği şey şöyle böyle çalışan, değer üreten, para etmeye değer olan ve mümkün olduğunca düşük yatırımla piyasaya çıkan ürünler. Ne yazık ki AI neredeyse her açıdan buna uyuyor
Yeni üretilen yazılım miktarındaki devasa artışın talebi yükseltmesini umuyorum ama AI’ın getirdiği büyük üretim kapasitesi artışını dengelemeye yetmeyeceğinden korkuyorum
Gelecek ay TypeScript öğrenmek için zaman ayırdım. Bu süreçte AI’ı tamamen dışarıda bırakmayı düşünmüyorum
Planım kitabı baştan sona okumak, ardından kod yazmak. Sanırım bu yöntemi bir podcast’te Mitchell Hashimoto’dan duymuştum
Orijinal yazıdaki gibi prompt coding’e çok zaman harcadığım için hem heyecanlıyım hem de korkuyorum
Kodu elle yazmamak insanı daha aptal yapamaz. Eğer yapabilseydi, tatile her çıktığında daha aptal olman gerekirdi
Bir chatbot’la konuşmak beynindeki sinir bağlantılarını öldürmez
Aslında olan şey, son derece teknik bir beceriye bir süre ara vermen. Dünyadaki herkes, bir beceriyi bir süre kullanmayınca onun bir kısmını “unutur”
Ama bilgi yok olmaz; sadece daha alakalı bilgiler tarafından geri plana itilir. Kısa bir gözden geçirmeyle geri gelir
AI öncesinde de birçok dil arasından birinde tam bir program yazmamın arasında aylar geçtiği olurdu. Fonksiyon tanımına nasıl başlanacağı gibi basit şeyleri bile unutur olurdum
Ama gerçekten unutmuş olmazdım; mevcut fonksiyonlardan birine kısaca bakınca, fonksiyon tanımındaki diğer olası sözdizimlerini de hemen hatırlardım. Panik yapmaya gerek yok, beynin normal çalışıyor
Okulda AI’ın risklerinden çok bahsediliyor ama aynı riskler her türlü öğrenme ortamı için de geçerli
Kısa süre önce yeni bir işe başladım ve AI yüzünden onboarding çok daha zorlaşıyor. AI’ı daha az kullanan iş arkadaşlarıma göre role adapte olmam çok daha yavaş
Alışık olmadığım bir dilde kod yazıyorum, bu yüzden vibe coding’in cazibesi daha güçlü. Yine de Claude saçma ya da gereksiz yere uzun cevaplar verdiğinde bunu fark edecek kadar bilgim var
Ama Claude’a ne kadar çok kod yazdırırsam, bu işin gerektirdiği yetenekleri geliştirdiğim hissi o kadar azalıyor. PR açarken de kendi yaptığım işe güven duymadığım için iyi hissetmiyorum
Açıkçası bir başka yanı da şu: insanlara sormam gereken soruları Claude’a Slack ve dokümanlar içinde aratıyorum
AI benim sosyal kaygımı besliyor; hem anlamaya hem de temel sosyal etkileşim için gerekli olan insan temasından kaçınmamı cazip hâle getiriyor
Bu sorumluluktan kaçıyormuşum gibi gelebilir ama belli teknolojilerin belirli tip insanlar için özellikle bağımlılık yapıcı olup onları olumsuz davranış döngülerine hapsedebileceğini belirtmek gerek
Eğer AI bağımlılığını şimdi ertelersem, ileride doğrulaması kolay ve tekrarlı işleri AI’a devredebilecek kadar beceri geliştirmiş olurum gibi geliyor. Zor ama gerekli
Böylece süreç içinde öğrenirsin. Bir arama motoru gibi kullanmana gerek yok; o anda bilmen gerekeni sorarsan token zincirini sallayıp özellikle dile yeni başlayanlar için faydalı bir şey çıkarıyor
Bu şekilde önce beceri geliştirip sonra devretmeye başlama planını uygulayabilirsin
Ben böyle yapıyorum ve benim için iyi bir denge. Değerlendirmeyi bilmediğim kodu Claude’a yazdırmak bana delilik gibi geliyor ama sanırım bu görüş azınlıkta
Açıkçası vibe coding dışında karşılaştığım az sayıdaki gerçek kullanım örneğinden biri buydu
AI’ı düşünmeyi ortadan kaldırmak için değil, tekrarlı ve sıkıcı kod yazımından kurtulmak için kullanıyorum. Prototip ortaya çıktıktan sonra AI kod yazma konusunda yeterince yetkin oluyor
İlk kavram kanıtı için kaba saba prototipi ben yazıyorum. Yorum yok, değişkenler hardcode, bu tarz şeyler. Sonra AI bunu ürün seviyesine parlatıyor
Böylece iş ahlakı, beceri ve yüksek kod kalitesini koruma yeteneği birbirinden çok farklı insanları yönetmek yerine bir ajan ekibini yönlendirebiliyorum
AI çoğu zaman codebase içindeki mevcut kalıpları korumakta ya da sektördeki en iyi pratiklere uymakta da oldukça başarılı
AI kullanınca programlama dillerinde artık eskisi kadar çok yazmıyorsun. İngilizce ya da LLM’le konuştuğun dil, ana dilin hâline gelecek
Bu günlerde günümün büyük kısmı kod üreten robotun yarattığı kusurları düzeltmekle geçiyor
Tabii ben bir prototipi cilalamıyorum; 8 yılı aşkın süredir yaşayan kritik bir ürünü bakım yapıyor, geliştiriyor ve modernize ediyorum
Hangi projede o kadar fazla sıkıcı tekrarlı kod oluyor ki?
İnce düşünülmüş prompt’lar gerektiği için temel framework’ü ve dili gerçekten anlaman gerekiyor. Aksi hâlde her şey korkunç bir keşmekeşe dönüyor
Birden fazla ajanı nasıl idare edeceğimi de bilmiyorum. Genelde oldukça hızlı bitiyorlar. Çalıştırmalar arasında başka bir şey yapamıyorsun. Sürekli “bir dakika daha, az kaldı” hâli oluyor
Bitince de çıktıyı değerlendirmek gerekiyor. Dolayısıyla “çalışırken” derin düşünme de yapamıyorsun. Desen sosyal medyaya benziyor: sürekli dikkat, neredeyse anlık ödül
Sonunda dikkat süren giderek mahvoluyor; hem de ciddi şekilde
Sorun şu ki bu planlar birkaç saat içinde uçup gidiyor, sonra da çıktıyı analiz edip yineleyerek aptalca kısımları ayıklaman gerekiyor
Birden fazla ajanın çıktısıyla uğraşmak sürekli bağlam değişimi demek. Uzun vadede başarılar dilerim
Ajanları başıboş bırakıp canlarının istediğini yapmalarına izin verirsen ortaya çıkan çıktı neredeyse kesinlikle korkunç bir keşmekeş olur. Nokta
Mevcut projede her gün Java, Ruby ve JavaScript ile kod yazıyorum. Eskiden basit bir Google aramasıyla hallettiğim dil farklarını doğrulamak için çok token harcıyorum
Ruby ile JavaScript’in null-safe operatörü farkı ya da Ruby ile Java’daki continue/break ifadeleri gibi şeyleri sürekli karıştırıyorum
Claude benden en karmaşık olarak eski Java döngülerini daha modern stream’lere refactor etmesini istediğim için muhtemelen oldukça hayal kırıklığına uğrardı. O tür kodları bir insanın anında yazması neredeyse imkânsız olabilir
Kendi collector’ını yazarsan ya da standart kütüphanenin daha obscure bölümlerini kullanırsan bonus puan
Bunun tersine örnekler de var. /plan modunda AI ile fikir alışverişi yapmak, benim AI’ın yanlış varsayımlarını yakalamam ve gerektiğinde AI’ın bilgi boşluklarını açıkça anlatması süreci entelektüel olarak oldukça uyarıcı ve beni daha iyi bir mühendis yapıyor gibi geliyor
Kilit nokta, AI’a Sokratik bir yaklaşımla gitmek, önerdiği her şeyi dikkatle düşünmek ve kendinden emin üslubuyla kusursuz yapılandırılmış mantığının hipnozuna kapılmamak
Ben tam tersini yaşıyorum. Muhtemelen nedeni, bulunduğum alanda kodun/yazılımın ürün değil araç olması
Çok daha hızlı ve çok daha fazla şey öğreniyorum. Mesela şu sıralar Raman, NMR gibi spektroskopi donanımlarıyla çalışıyorum ve Claude’a cihazla donanım seviyesinde arayüz kuran kod yazdırdım
Datasheet karıştırıp bir sürü wrapper kod yazmak yerine bunu Claude yaptı
Claude’la çeşitli teknikleri tartışıp uygulayıp test ederek çok daha hızlı ilerleyebiliyorum. Eskiden bu döngü 5-10 kat daha uzun sürerdi
Sonuç görmek için önemsiz kodlar yazmaya zihinsel çaba harcamak zorunda kalmadığım için bu cihazlar, teknikler ve veriler hakkında çok daha fazla şey öğreniyorum
10 yılı aşkın süredir geliştirici olarak çalışıyorum. Artık kodu sürekli bir ürün olarak üretmek yerine bir araç olarak kullanabildiğim bir dünyaya geçiyor gibi olmak beni mutlu ediyor
Elle kod yazmaya zaman ayırma ayrıcalığına sahip insan çok olmayacak gibi geliyor
Gerçekte yazdığımız koda bakarsak, benim durumumda bunun büyük kısmı yeni ya da havalı şeyler değil; hep aynı “X için backend yap”, basit bug düzeltmeleri, mid-level ile senior programcılara ufak işler
Daha zor işler genelde kodun üstündeki mimari kararlar ve ben de LLM’in özellik geliştirmede raydan çıkmamasını sağlayacak sistemleri nasıl kurabileceğimizi düşünüyorum
Demek istediğim şu: bugün elle kod yazmak kabul edilebilir olabilir ama gelecekte hissedarlar ya da üst yönetim LLM yardımıyla özellikleri daha hızlı çıkarıp bug’ları daha hızlı düzeltmemizi isteyecek
Bu hızda teslim edemezsen performansın düşük sayılacak. Sonuçta önemli olan bizim ne istediğimiz değil, hissedarın ne istediği
Tabii tükenmiyorsan boş zamanında elle kod yazabilirsin. Karamsar biri gibi gelmek istemem ama bunun yakında oldukça gerçek olacağını düşünüyorum