Abilerim kardeşlerim selamlar. Fazla uzatmadan direkt konuya giriş yapayım diyorum.
Yapay zeka ile nasıl proje geliştiriyor, kod yazıyorsunuz? Bu zamana kadar hep bilgi almak amaçlı kullandım. Hiç direkt kod yazdırmadım ancak artık yapay zekaya direkt kod yazdırmaya ufaktan başlamam gerekiyor çünkü çalıştığım şirket -zorla olmasa da- kodu yapay zekaya yazdırmamı istiyor. Birkaç ay “temiz yazmıyor, bakımı zor kod yazıyor, saçma sapan buglar çıkıyor, olmayan paketleri kullanmaya çalışıyor” gibi gibi sebeplerle kod yazdırmamaya direttim. Bu sebeplere karşın her zaman “promptun iyi değil, iyi promptla her şeyi yaptırabilirsin” cevabını aldım. Şimdi soruyorum sizlere, bu yapay zekanın doğru kullanımı nedir? Siz nasıl kullanıyorsunuz? Ne yaparsam yapayım temiz kod yazdıramıyorum. Instructionlar, custom modeller, RAG’ler, hatta kendim LoRA bile eğittim ancak olmuyor, istediğim gibi yazamıyor. Asla içime sinen bir çıktı alamıyorum yapay zekadan. Herkes AI hypelarken ben geri kalmış gibi de hissediyorum aynı zamanda. Nedir bu işin oluru?
Merhaba. Ben de aynı şekilde düşünüyorum. Diğer türlü düşünenler belki de çok ayrıntıcı değiller ve yapay zekanın ürettiği koda ayrıntılı bakmıyorlar. Yapay zekaya büyük bir kod bloğunu yazdırmak bence pek mantıklı değil. Doğru bile yazmış olsa en iyi yol olmayabilir.
Bence "vibe coding"den uzak da durmamalı. Çünkü her ne kadar ortaya çıkan sonuç “profesyonel” olmasa da herkes bunu kullanıyor ve diğerlerinden geri kalmak bir süre sonra sektörden uzaklaşmanıza neden olabilir.
Yine bence yapılması gereken bu araçlarla kodlama yapmak ancak büyük kod bloklarını yazdırmaktan kaçınmak. Yazdırsanız bile yapay zekanın çıktısına hakim olmanız gerek. Mesela bir dizide filtreleme yapacaksınız diyelim, öncesinde hangi algoritmanın hızlı olduğunu araştırıp yapay zekaya bu algoritmayı kullanması gerektiğini söylemelisiniz. Her durumda üretilen kodun her satırını incelemelisiniz. Bazen bu süreç, kodu tamamiyle kendinizin yazmanızdan daha uzun sürebilir. Ama deneme-yanılma yoluyla yapay zeka “aracının” sizi daha verimli yapmasının bir yolunu eninde sonunda bulacaksınız. Burada önemli olan “komut (prompt) mühendisliği” yeteneğinizi keskinleştirmek. Kolay gelsin.
Genelde ne tür işlemler yaptınız ve ne ölçüde bir sonuç bekliyordunuz ki beklediğiniz çıktıyı alamadınız? Yani tüm işi birden verip halletmesini mi istediniz yoksa siz zaten işin belirli bir kısmını yaptıktan sonra kalan kısımlarından belirli bölümünü mü yazmasını istediniz? Hangi yapay zeka ajanlarını kullandınız? Eğer genele hitap eden ChatGPT, Gemini gibi araçları kullanarak kod yazdırma işlemi yaptıysanız bir noktadan sonra yetersiz kalabiliyorlar. Veya detaylara inmeden kod çıktısı verebiliyorlar. Ancak bu iş için özelleştirilmiş claude sonnet gibi ajanları kullanarak kod yazdırırsanız daha başarılı çıktılar verebiliyor. Ben şahsen Cursor aracılığyla üyelik alarak bir çok modelin bir arada kullanıldığı IDE ortamında kod yazdırmıştım. Çeşitli yapay zeka modellerinin modellenmesi ve koda dökülmesinde çok yardımı olmuştu.
Ben yapmak istediğim işi Gemini gibi daha genele hitap eden LLM ajanlarına anlatıyorum. İstediğim çıktıyı alabilmek için sırasıyla ne işlemler yapılması gerektiğini bana liste halinde döküyor, sonrasında da prompt haline getirerek çıktı veriyor. Ben bu prompt’u kod yazdırmak için kullandığım yapay zeka ajanına veriyorum ve adım adım giderek her aşamasında teyit ediyorum. Çünkü aynı zamanda ne yapıldığını anlamam lazım ve kendi ihtiyacıma göre gerekirse düzenleme yapmam gerekebiliyor. Hatta gidişatta yanlışlık olursa veya eksiklik varsa bunu bir sonraki aşamaya geçmeden düzelttiriyorum. To-Do list de diyebiliriz.
Benim kullanım amacım dediğim gibi yapay zeka modellerinin taslak halini oluşturmaktı. Büyük ölçekli bir iş olarak görülmeyebilir, ama katman yapılarının birbirine entegrasyonu ve rutin olan eğitim, doğrulama ve test aşamalarını bir çırpıda hazırlayabiliyor. Bir derin öğrenme mimarisini sıfırdan elle oluşturmak yerine makalesinden özet çıkararak yapay zeka ajanlarına tarif ediyordum ve bana modeli hazırlıyorlardı. Özellikle internet üzerinde yeterince kod örneği bulunmayan mimarilerin hazırlanmasında çok işimi gördü.
Yapay zeka ile kod yazdırma konusuna uzak kalamayız. Yazılımcıların yerini alacak diye düşünmek yerine, işleri çok çok kısaltacak diye düşünmek lazım. Tabi iyi açıklanmamış genel ifadelerle yazdırılmış bir kodu debug etmek zamandan tasarruf sağlamaz.
Claude veya cursor. Buyuk veya karmasik isler (normalde yazilim mimarina veya takima danisilmasi gereken seyler) planlama modunda, adim adim yaptiriliyor. (Brief prompt’u → mimari ve planlama → feedback → kod edit plani → (feedback → kod edit plani)*¹ → calistirma → commit)
Daha ufak isler dogrudan prompt ile. Commit’i agent’a yaptiran da var, chatgpt’ye IDE’den kod veya dosya kopyalayip sonucu geri paste eden de var.
Butun repo’yu AI agent’lariyla yoneten bir sirket biliyorum, ama ne nasil calistigini tam olarak biliyorum, ne de masrafini. Repoda 400’den fazla md dosyasi var, 10+ degisik personada calisan agent’lari yonlendiriyorlar.
Bir suru youtube tutorial’i vs. vardir diye tahmin ediyorum. Hatta su an AI’a akitilan parayi goz onunde bulundurursak, butun sirketler seni bu flow’a gecirmek icin yarisiyor olmalilar. Ozellikle hevesli veya becerikli biri olmaya gerek yok.
Bunu anlamiyorum. Yapay zekayi egitirken kendi calisanini koreltmek, sadece 4-5 tane sirketin isine yariyor. Bu 4-5 tane sirketin (milyarderin) reklam yapmalarini, ABD piyasasini baskilamalarini da anliyorum da, normal sirketlerin bu propagandaya dusmelerini anlayamiyorum.
Calisanlari AI ile degistireceklerini mi zannediyorlar? Olabilir de… Bunu calisanlarina AI kullandirtarak yapamazlar ki. Var mi daha parlak bir fikri olan? Neden butun kaynaklari disari akitiyoruz?
Subjektir bir soru. Kimin icin? Sirketlere sorarsan, calisanlarinin yerine koymaya calisiyorlar, cunku calisanlar, basitce, fazla insani. Buradaki temel sorun, AI kullanma karari alma seviyesindeki insanlar, yerlerine AI konulabilecek listesinde en tepedeki insanlar. Sahis icin, sahis ne istiyorsa o. Butun isini bir agent’a yaptirabiliyorsan, yaptir. Zevk almiyorsan, yaptirma.
AI firmalari icin nedir, o bilinmiyor. Dunyanin en buyuk yatirim bubble’i oldu. Yatirilan paranin kazanc saglamasina imkan yok; dunyada o kadar para yok. Satis yaparak kar saglayamayacaksa bu sirketler, ne yapiyorlar? Hic bir fikrim yok; ekonomi bilgimin siniri disinda. Uber ne yapiyor? Hem bilgimin sinirina dayandigim (aslinda cok once dayandim da, caktirmayin) hem de politiklesme tehlikesinde oldugum icin, burada kesiyorum.
“Sen nasil kullanmak istiyorsan odur, kardesim” diye ozetlesek olur mu?
Mevcut “AI” piyasasi, ve sana “%40 AI kullan²” diyen insanlar icin fazla ileridesin. Senden cok daha fazla zeka kapasitesine³ ve paraya/kaynaga sahip sirketlerin ortalama insanlar kullanabilsin diye hazirladiklari urunleri kullanmani istiyorlar. Bu kadar.
Ciktinin temiz olmasina, icine sinmesine gerek yok. Amac, bir ust seviyeye “%34 AI kullandim” gibi sacmasapan bir metrik iletebilmek. Bunun iyi bir sey oldugunu zannedecek kadar cahil olan insanlarin parayi yonettigi bir noktadayiz.
–
1: Parantezdeki kismin dongu oldugunu belirtmek icin Kleene yildizi kullandim
2: Japon bir siber guvenlik firmasina calisan arkadasima gelen brief. Parcalamaya neresinden baslayacagimi bilemiyorum.
3: Cok sayida insandan olustuklari icin; yanlis anlasilmasin
İlk deneyimim yukarıdaki uygulamayı yazarken olmuştu. Kodlarımı genel olarak Gemini’ye yazdırıyorum. Kısa kodlar yazarken kendisi de algoritma oluşturmaya katkıda bulunuyor. Ama proje büyümeye başlayınca değişkenlerin gerekli olup olmadığını kontrol etmiyor. Projeye başka bir özellik eklemesini istediğinde sadece ekliyor. Hangisinin gereksiz olduğunu anlamadığın bir sürü değişken kalıyor. Yani kod yazarken “garbage collection” yapmıyor.
Birkaç ufak projede daha birlikte çalıştıktan sonra iyice bağımlı olmaya başladım. Ben mecbur kalmadıkça kod yazmıyorum. Çünkü ben yazdığımda çok daha uzun sürüyor.
Bir noktada yazdığımız algoritmanın ne kadar optimize olduğunu da bilemiyorum. Bu durumdan rahatsızım. Eskiden kendim yazarken bir süre yazar bir süre de algoritma üzerine düşünürdüm. Daha iyi bir algoritma kurmak için araştırmalar yapardım. Gemini yazdığında sadece onun doğru dediği algoritmayla sınırlı kalıyorum.
Bir keresinde bir uygulamayı uzun uzun pygame ile geliştirdik. Pygame’in buildozer ile derlenebileceğine kesin gözüyle bakıyordu. Saatlerce uğraştım. Uygulamayı tamamladım. Windows sistemim üzerinde wsl vs. kuurp buildozer çalıştırdım. En sonunda olmadı. Artık bazı konularda daha temkinli davranmaya çalışıyorum.
Son yaptırdığım işle birlikte daha farklı bir kullanım alanı gördüm. Linkteki makalenin kodunu yazdırdım. Kodun yanına eklenmesi gereken şeyler zaten rutin işlemlerdi. Algoritmayı da zaten güvenilir bir makaleden almıştım.
Belki de en doğru yol budur. Yapay zekaya makaleyi buldur. Bulduğu makaleyi değerlendir ve koda dönüştürmesini iste.
Geçenlerde bir yapay zeka kursuna katıldım. Yapay zekanın halüsinasyon görmesi konusunda çok durdular. Bazen konu uzadığında haketten bağlamdan kopuyor, saçmalıyor.
Ben körelmemek adına elimden geldiğince kendim yazmaya çalışıyorum fakat dokümantasyon tarama gibi işlerde kullanıyorum. Bezen problemin çözümü için fikir istiyorum ve kendi aklıma gelenle kıyaslayorum. Tabi benim uğraşım sizinkinin yanında basit kalır, hobi işleri.
Sadece prompt ile baştan sona bir proje örneği yapmayı hiç denemedim. Dart/Flutter ile bazen bir widget için basit örnek istediğimde örneği ide ye koyduğumda IDE “bu artık kullanımdan kalktı” diyor. Yani çok güncel kütüphane kodlarını henüz ögrenmemiş olabiliyorlar.
Şunu da belirtmekte fayda var, Google’un geliştirdiği dil/kütüphanelerde Gemini gerçekten iyi. Android dokümanına çok hakim. TensorFlow/Keras gibi kütüphanelerle iyi iş çıkarıyor. Yani kullanilacak teknolojiye göre de AI seçmek lazım. Python’da ChatGPT daha faydalı olmuştu. Bugün iyi olan bir AI ileriki süreçte geride de kalabiliyor diğerlerine göre.
Birçok yerde Yapay Zeka insanın yerini aldı diye konuşuyorlar özellikle de yazılımcıların yerini. YouTube’da, çeşitli makalelerde, televizyondan sürekli bu tarz düşünce ve fikirler pompalanıyor. Bilgisayar mühendisliği, yazılım mühendisliği gibi bölümlerde okuyan gençler şimdiden tedirgin. “Bize gerçekten kimsenin ihtiyacı olmayacak mı?” sorusunun stresini yaşıyorlar.
Şunu düşünmeden edemiyorum, yazılım sektöründeki insanlar kodlama becerilerini kaybedip prompt uzmanı olduklarında, yapay zeka şirketleri fişi çekerse ne olacak?
Saman alevi gibi populerleşen şeylere çok kapılmadan ayarında kullanmak lazım. Bu ayar nasıl tutturulur bilmiyorum. Bir şekilde körelmeden kendimi gelistirmeye, AI’yı bazı işlerimde asistan gibi kullanarak zaman maliyetini azaltmaya çalışıyorum kendi çapımda.
Bu adamların ücretli yada ücretsiz olarak kamu ile paylaşmadıkları, askeri amaçlı kullandıkları yapay zeka ne seviyede neler yapabiliyor gerçekten merak ediyorum.
ChatGPT ve bir çok farklı araç da piyasada mevcut.
Farklı yöntemlerle deneyimledim.
Çözüm üretme konusunda çok farklı bakış açıları sunabiliyor.
Basitleştirebiliyor.
Evet projenin tamamını da oluşturabiliyor. Hatta kısıtlamalar koyup, tek dosya kod oluştur, modülleri farklı dosyalara ayır. Sınıf ve template leri bir dosyada topla gibi farklı düzenlemeleri de rahatlıkla yapıyor.
Ücretsiz sürümlerde parametreleri düşük olduğunda bazan bağlamdan kopup bazan doğru çalışan yerleri bozabiliyor ama ücretli sürümlerde parametreler daha tutarlı olduğundan daha iyi sonuçlar çıkarabiliyor.
Tam bir proje yada parça parça ( Burada parça, fonksiyon, sınıf , işlev vs) kodlatabilir kendiniz de birleştirebilirsiniz.
Kod okur yazarlığınız varsa zaten yazdığı kodu anlayabilirsiniz.
Proje oluştuktan sonra, hem kendiniz, debug yapabilir hem test toolları da kullanarak ayarlamalar yapabilirsiniz ve hatta bunu da yapay zekaya yaptırabilirsiniz.
Bu konuda gelenekçi olmamak lazım. YZ bir araç ve en iyi performansla adapte olmalısınız. C de sürekli açık bıraktığım parantezleri kapatacak bir editör derdine düştüğümüz yıllardan sonra hızlı kod yazmak suç değildir.
Yazın kullanın ama kod okur yazarlığınızı kaybetmemek için dil temel kurallarını hatırlayarak kodun kalbini olabildiğince okumaya devam edin.
Geri kalmadınız. Doğru toolları kullanın, sonuçları gözlemleyin, debug işine önem verin hız artışı sağlayacaktır.
Ücretsiz sürümler biraz sizi yoracaktır ama ücretli sürümlerde daha iyi sonuçlar sizi keyfilendirecektir.
Proje ve problemlerinizde böl ve yönet mantığını asla unutmayın kolay gelsin.
Ne yalan söyleyeyım ben yapay zekaya unit testlerimi yazdırıyorum, Çok fazla vakit kazandırıyor.
İlk case’i elle yazıyorum, sonraki caseler için ilk şablonu kullanarak yazmasını soyluyorum genelde sonuc tatmin edici oluyor. Çok ufak tweak gerektiriyor ama 15 - 20 dk yapılacak işi 1 dk da yapıyor o açıdan ekmeğini bolca yiyorum.
Onun dışında yapay zekaya kod yazdırılacaksa butun context’i vermek yerine yine unit bazlı ufak blocklar yazdırılabilir denemek lazım.
örnek olarak yazdığım bir kütüphanedeki memory leak tespit etmesini istedim ama bütün projeyi değiştirmeyi denedi hatta var olan yapıyı bozup daha berbat hale getirdi
pr halen açık duruyor; ne kadar çirkin kod yazdığına bakabilirsiniz.