AI kod üretiminin sınırları ve insan sezgisinin kaybına dair kişisel bir vaka incelemesi
(github.com/jackdoe)- RP2350 RISC-V çekirdeğini hata ayıklamak için kullanılan bir SWD protokolü uygulama kütüphanesi; yapı, Raspberry Pi Pico2 kullanarak başka bir Pico’yu prob olarak çalıştırıyor
- Kodun yaklaşık %80’i AI (Claude) tarafından üretildi; yazar osiloskop ve belgelerle temel prototipi oluşturduktan sonra AI’nın kodu genişletmesini sağladı
- Proje sırasında AI kodunun anlamsız token yapısı, bağlam kaybı, kod sahipliği hissinin yitimi gibi nedenlerle güçlü bir tiksinti ve kuşku yaşadı
- Buna karşılık, AI’yı belge analizi, veri çözümleme ve yapı oluşturma gibi yardımcı bir araç olarak kullandığında olumlu deneyimler elde etti
- Bu vaka, AI kod üretiminde kalite, sezgi ve sahiplik sorunlarını ortaya koyarken programlamanın özü ve insanın rolü hakkında temel sorular gündeme getiriyor
0. VIBE CODE WARNING
- Tüm kodun yaklaşık %80’i AI üretimi (vibe coded) ve README’nin büyük kısmı da otomatik oluşturulmuş
- Yazar; osiloskop ve belgeleri referans alarak SBA, register okuma/yazma, soyut komutlar, PROGBUF gibi bölümleri kendisi uyguladıktan sonra kütüphaneleştirme işini AI’ya bırakmış
- Kod 1.000 satırdan 4.000 satıra çıkarken kod yapısını ve anlamını tamamen kaybetmiş, artık kendi yazdığı kod gibi hissettirmemiş
- AI,
dap_read_mem32işlevini yanlış yorumlayarak protokol hataları ve mantıksız kodun büyük ölçekte ortaya çıkmasına yol açmış - Sonuçta yaklaşık 10.000 satırlık kod 10 saatte tamamlanmış olsa da, hiçbir başarı ya da gelişim hissi oluşmamış
AI kodu ile insan kodu arasındaki fark
- İnsan tarafından yazılan kod, niyet ve amaç taşıyan token’lardan oluştuğu için anlaşılabilirken, AI kodundaki token’lar anlamsız birleşimler gibi okunuyor
- AI kodunun bazı bölümleri insandan daha yüksek kalite gösterebilirken, hemen alt satırda yalnızca görünüşte makul duran hatalı kod bulunabiliyor
- Bu tür düzensizlik ve sezgisel güven kaybı, programcının yargı gücünü felç ediyor
- Kod büyüdükçe “iyi kod mu kötü kod mu olduğunu hissetme sezgisi (taste)” kayboluyor ve zihinsel model ile sahiplik duygusu çöküyor
İnsani duygular ve kuşku
- Yazar, “Bu programlama mı?” sorusunu sorarken tiksinti ve utanç hislerini dile getiriyor
- AI’nın kodu insanın yerine yazdığı bir çağda, insanın ne üretmesi ve nereye kadar müdahil olması gerektiğine dair varoluşsal bir karmaşa ifade ediyor
- Sadece “kod yazmamak”ın ilerleme olup olmadığına ya da “problemi modellememek”in verimlilik sayılıp sayılmayacağına bile artık emin değil
- Hâlâ bir şeyleri bizzat üretmek istediğini, ancak AI merkezli geliştirme ortamında bunun anlamının bulanıklaştığını söylüyor
AI’nın olumlu kullanım deneyimleri
- AI’yı belge analizi, osiloskop verisi çözümleme, C struct’larının otomatik oluşturulması gibi işlerde kullandığında verimli ve tatmin edici bulduğunu belirtiyor
- Özellikle ilk register’ı okuyup SBA üzerinden belleğe eriştiği anda gerçek bir başarı hissi yaşadığını söylüyor
- Yani AI’yı kod yazarı değil yardımcı olarak kullandığında olumlu bir deneyim mümkün olabiliyor
Sonuç niteliğinde değerlendirme
- AI kod üretimi hızlı olsa da, anlam, sezgi ve sahiplik kaybına yol açıyor
- İnsanın hissettiği “iyi kodun tadı (taste)” ortadan kalktığında, programlamanın özü de sarsılıyor
- Yazar, bunun geçici bir ara dönem olmasını umarak, “daha iyi programlama”nın ne olduğunu kendisinin de artık bilmediğini söyleyerek bitiriyor
Orijinal metinden sonraki teknik bölümler (1~20), RP2350 RISC-V debug protokolünün ayrıntılı uygulama dokümantasyonu olup SWD katman yapısı, DAP/DAPC register’ları, PROGBUF yürütmesi, SBA erişimi, hart kontrolü, tracing, reset, dual-hart yapısı gibi tüm debug yığınının eksiksiz teknik tanımını içeriyor.
Ancak ana tema, AI’nın ürettiği kod ile insan sezgisi arasındaki kopuşa dair kişisel bir vaka incelemesi (Vibe Code Warning).
1 yorum
Hacker News görüşleri
“Yapay zeka programlamanın eğlencesini elimden aldı” diyen insanların duygusuna katılıyorum ama ben ‘yapmaktan’ çok ‘tamamlamanın’ daha önemli olduğunu düşünüyorum
Eskiden gaz lambalarını yakan insanlar elektrik yüzünden işlerini kaybetti ama sonuçta önemli olan şehirde ışığı sağlamaktı
Benim için yapay zeka, fikirleri hayata geçirip sonuç üretmeye yarayan bir araç. Hâlâ “gerçek programcılar” kadar zaman ve emek harcıyorum ama odağım problem tanımlama, modülerleştirme, test, hata düzeltme ve yinelemeli iyileştirme üzerinde
İnsanların anlam, onur ve keyif hissedebildiği bir dünya kurmak önemli.
Eğer lezzetli bir yemek yiyeceksem ama onu yapan insanlar acı çektiyse ya da kötü niyetli bir güç bunu robotlarla ürettiyse, bunu istemem.
Toplum insanlar içindir; sadece verimlilikten ibaret bir kontrol listesi değildir
Kişisel projelerde sorun olmayabilir ama müşteri, kullanıcı ya da hissedarların olduğu ortamlarda kanıtlanabilir sonuçlar gerekir
Gaz lambası benzetmesi uygun değil. Yapay zeka, elektrik gibi fiziksel bir sistem değil; yazılım.
Sonuçta önemli olan problem çözmek. Çözemiyorsa bu sadece emektir
Birçok insan sadece faydalı yazılım üretmek için değil, üretmenin verdiği keyif için de kod yazar
“Gerçek programcılar” da aynı şekilde düşünmeye, tanımlamaya, test etmeye ve düzeltmeye zaman harcıyor
‘Akıllı diş ipi dağıtıcısı’, otomatik tuvalet kâğıdı satın alma cihazı ya da Clippy benzeri botlar zaman ve enerji israfı
Sadece sonuca ulaşmaktan çok, öğrenme ve anlama sürecinden gelen tatmin büyük
Hayatta kalma kitabı Adrift, 76 Days at Sea'yi okurken derin bilginin yaşamla ölüm arasındaki farkı yaratabildiğini hissettim
Bu, verini kendin mi barındıracaksın yoksa merkezi bir hizmete mi bırakacaksın sorusuna da benziyor
İnternette düşüncelerimi kusursuz biçimde ifade eden bir yazı görünce gerçekten teselli bulmuş gibi hissediyorum
“Prompt'u şöyle ayarla” gürültüsü yerine insani deneyimden bahsettiğin için teşekkürler
Bu durumdan çıkmak için bir gece iyi uyumam gerekiyor
Neredeyse doğru cevaplar veriyor ama psikolojik olarak bir kumar makinesiyle benzer bağımlılık etkisi taşıyor
Birisi “Yapay zekayla 10 bin satır kodu 10 saatte yazdım ama berbat oldu” demişti; ama bu deneyim yaklaşım biçimine göre tamamen değişiyor
Prompt yapılandırması, planlama, gözden geçirme, test, hız kontrolü gibi tüm unsurlar kişiden kişiye farklı
Birçok acemi geliştirici, 'vibe coding' denilen doğaçlama yaklaşımı deneyip başarısız oluyor
Yorgunluk arttığı için kısa bir ara verdim; bir gün kendi ajanımı yapmayı planlıyorum
OpenAI, Microsoft, Anthropic gibi büyük teknoloji şirketlerine bunu bırakmak riskli geliyor
Sonuçta bunun içi boş bir moda söz olduğunu düşünüyorum
Yeni bir kütüphane öğrenmek istemeyip proje yönetimine kaçıyormuşum gibi geliyor
Bir dönem çok konuşulan “Just Talk to It” yazısı bile ayrıntı açısından zayıftı
Ne kadar doğaçlama davranırsan, o kadar sağlam planlama gerekir. Demek istediğin bu mu?
Yayınlanan kod artık her zaman insan yapımı olmuyor
Bu kod tekrar eğitim verisine girerse, dünya daha fazla anlamsız çıktı ile dolma riski taşıyor
Dil araştırmalarında da makine üretimi metinlerin fazlalığı yüzünden veri toplamanın anlamsızlaştığı örnekler zaten var
Çoğu durumda yönü hâlâ insanlar belirliyor
Tabii 12 yaşında biri “yolo 3d game now” yazarsa kaygılanırım ama aynı zamanda kulağa havalı da geliyor
vibe coding ile yazılmış kodu okumak, adeta “English as She is Spoke” okumak gibi
Grameri doğru ama insan dili gibi gelmeyen bir kod
Ben de benzer düşünüyorum
Normalde bir uygulama geliştirirken birkaç gün boyunca kafamda bir zihinsel model oluşur ve duşta bile yapıyı yeniden düşünürüm
Ama vibe coding yapınca bu içsel bağlam kayboluyor ve kodu okumak acı veriyor
Oysa kendi yazdığım kodu okumak keyifli
Sistemler arası bağlantıları ve veri akışını anlıyorum ama uygulama ayrıntıları bulanık kalıyor
Bende de benzer bir deneyim var. LLM'ler programlamanın eğlencesini azalttı
Şu anki rutin “prompt yaz → biraz bekle → tekrar et → kod incele” döngüsünden ibaret
Kodun yapısını anlıyorum ama elimle doğrudan uğraşmadığım için anlayış derinliği azalıyor
Doğru eğitimle mümkün olabilir ama ben henüz o aşamaya gelemedim
Test kodu üretiminde faydalı. Önce bir iyi test yazıyorum, kalanını yapay zekaya bırakarak zaman kazanıyorum
Böylece sınırlarını görüyor ve daha iyi bir sistem tasarımıyla yeniden yazıyorum
LLM'nin lafı dolandıran kodu bile geçmişte geliştiricilerin bıraktığı acayip kodlardan daha iyi gibi geliyor
Biraz abartılı bir yazı ama ben de katılıyorum
LLM'ler mevcut kodu anlama ve özetleme, otomatik tamamlama ve geliştirici olmayanlar için prototipleme açısından yararlı ama
production kodu yazmak için kesinlikle kullanılmamalı
Çözüm, modeli grounding etmek
Kod tarafında bunun yöntemi test güdümlü geliştirme (TDD)
Önce testleri yazıp başarısız olduğunu görmek, nedenini doğrulamak ve sonra kodu yazdırmak gerekiyor
Böylece kod için bir davranış şartnamesi oluşuyor; sonrasında insanlar ya da ajanlar için başvurulabilecek bir belge haline geliyor
GitHub'daki README'yi sonuna kadar okuyunca, yazarın kodun 3/4'ünün AI üretimi olduğunu kabul ederken aynı zamanda telif hakkı iddiasında bulunduğunu gördüm
İnsan tarafından üretilmemiş içeriklerin hukuken telif koruması alamayacağına dair emsal kararlar zaten var