
LLM’leri Nasıl Kullanıyorum?
Yazılım mühendisleri veya sadece yazılım mühendisleri deyip sınırlandırmayım, büyük dil modelleri (LLM’ler) konusunda ikiye bölünmüş durumda. Bazıları, bu modellerin sektöre giren en dönüştürücü teknoloji olduğuna inanıyor. Diğerleri ise bunların yalnızca bir dizi abartılı ürünün en yenisi olduğunu düşünüyor: Düşünmesi heyecan verici ama ciddi işlerle uğraşan profesyoneller için nihayetinde faydasız.
Şahsen, yapay zekadan oldukça fazla fayda sağladığımı düşünüyorum. Bu şekilde düşünmeyen birçok kişinin de LLM’leri “yanlış kullandığını” düşünüyorum, yani dil modellerini en faydalı olacak şekilde kullanmıyorlar. Bu yazıda, bir kıdemli mühendis olarak günlük iş akışımda yapay zekayı nasıl kullandığımı anlatacağım.
Üretim Kodları Yazarken
Kod yazarken Copilot veya benzeri otomatik tamamlama araçlarını sürekli kullanıyorum. Kabul ettiğim neredeyse tüm tamamlamalar tamamen şablon niteliğinde (örneğin, fonksiyon parametrelerini veya türleri doldurmak). İş mantığını doğrudan LLM’nin yazmasına nadiren izin veriyorum.
Örneğin, Python’da uzmanım ve bu alanlarda LLM’nin üretebileceğinden daha iyi kod yazabileceğime eminim. Ancak, LLM’leri gelişmiş bir otomatik tamamlama aracı olarak kullanıyorum ve özellikle boilerplate kodları yazarken oldukça faydalı oluyor.
Ancak her zaman uzmanlık alanımda çalışmıyorum. Bazen Go veya Rust gibi daha az aşina olduğum veya yeni tanıştığım alanlarda küçük taktiksel değişiklikler yapmam gerekiyor. Sözdizimini biliyorum ve bu dillerde kişisel projeler yazdım, ancak neyin “idiomatik” (o dilin en iyi pratiği) olduğunu bilmiyorum. Bu gibi durumlarda, LLM’ye daha fazla güveniyorum.
Genellikle LLM sohbet özelliğini kullanarak kodumu yapıştırıyor ve doğrudan
“Bu idiomatik Rust kodu mu?” diye soruyorum. Bu kodu yazarken yaptığım hataları göster. diye soruyorum
Bu şekilde LLM’lere güvenmek riskli, çünkü gözden kaçırdığım şeyleri bilemiyorum. Ancak, bana her konuda “akıllı bir stajyer” düzeyinde çalışma imkânı sunuyor. Tabii ki, akıllı bir stajyer gibi davranmam ve uzman birinin yaptığım değişiklikleri gözden geçirdiğinden emin olmam gerekiyor. Yine de, bu tür taktiksel değişiklikleri hızla yapabilmek oldukça verimli.
Geçici Kod Yazarken
LLM’leri en özgür şekilde kullandığım alan, asla üretime girmeyecek kodlar yazmak.
Örneğin, yakın zamanda kamuya açık bir API’den veri çekmem, bu verileri sınıflandırmam ve ardından bu sınıflandırmayı hızlıca bazı regex’lerle (düzenli ifadelerle) modellemem gerekti.
Bu kodların tamamı yalnızca kendi bilgisayarımda çalıştı ve LLM’leri şu amaçlarla kullandım:
- Python ile API’den veri çekme kodu yazmak
- Ayrı bir LLM kullanarak sınıflandırma kodu oluşturmak
- Verileri tokenize etmek ve frekans ölçümleri yapmak
- Regex kullanarak metin işlemleri yapmak
LLM’ler, yalnızca bir kez çalıştırılacak ve asla bakımı yapılmayacak kodları yazmada mükemmel. Üretim dışı, yalnızca araştırma için kullanılan kodlar için ideal. Bu süreçte LLM’leri kullanmamın işimi 2 ila 4 kat daha hızlı tamamlamamı sağladığını söyleyebilirim.
Yeni Alanları Öğrenirken
LLM’leri en çok öğrenme asistanı olarak kullanıyorum.
Örneğin, geçen hafta sonu Spring Boot ile mikro servis geliştirmeyi öğreniyordum ve bunu yaparken ChatGPT-4o’ya yoğun bir şekilde başvurdum.
LLM’lerle öğrenmenin büyüsü, soru sorabilmenizdir.
- Yalnızca “Java’da Spring Boot nasıl çalışır?” değil, aynı zamanda “Spring Boot, Node.js ile kıyaslandığında hangi avantajlara sahiptir?” gibi takip soruları da sorabiliyorum.
- Daha da önemlisi, “Bu doğru mu?” diye sorarak öğrendiğim şeyi modele doğrulatabiliyorum.
Yeni bir şey öğrenirken bol bol not alıyorum. Notlarımı kopyalayıp LLM’ye yapıştırarak doğru anlayıp anlamadığımı kontrol ettirmek müthiş bir avantaj sağlıyor.
Son Çare Olarak Hata Ayıklama
Bunu sık yapmıyorum ama bazen bir hata üzerinde gerçekten sıkışıp kalırsam, Copilot sohbetine tüm dosyayı veya ilgili dosyaları ekleyip hata mesajını yapıştırıyor ve doğrudan
“Bana yardımcı olabilir misin?” diye soruyorum.
Ancak, şu an için hata ayıklama konusunda LLM’lerden daha iyi olduğumu düşünüyorum. Çoğu zaman Copilot veya Claude sadece kafa karıştırıcı yanıtlar veriyor.
Yine de, çok az zaman alıyor, bir kere denemeye değer. Birkaç kez, çok ince bir hatayı yakalayarak bana zaman kazandırdığı oldu.
Ancak, LLM’ler hata ayıklama konusunda henüz iyi olmadığından, onları “zorlamıyorum”. Sadece bir kez deniyor ve çalışmazsa zaman kaybetmeden kendi yöntemlerime geri dönüyorum.
İngilizce Yazıları Gözden Geçirme
Teknik dokümanları, teknik özetler, iç paylaşımlar vb. gibi bolca İngilizce doküman okuyorum.
LLM’lerin benim yerime bunları okuyup özet çıkarmasına asla izin vermem. Bunun iki sebebi var:
- Benim yazım tarzımın daha net olması: LLM’lerin ürettiği metinlerin benim tarzım kadar açık ve öz olmadığını düşünüyorum.
- ChatGPT’nin metin üretim tarzından hoşlanmamam: Yapay zeka tarafından üretilen yazıların belirli bir tonu var ve bu bana çok mekanik geliyor.
Ancak bazen taslaklarımı LLM’ye verip geri bildirim isteyebiliyorum.
LLM’ler imla hatalarını yakalamakta ve bazen ilginç bir öneri sunarak taslağımı geliştirmeme yardımcı olabiliyor.
Özet
LLM’leri şu işlerde kullanıyorum:
✅ Akıllı otomatik tamamlama (Copilot, Python, Java)
✅ Bildiklerimin dışındaki küçük değişiklikler (uzman kontrolüyle)
✅ Tek seferlik araştırma kodları yazmak
✅ Yeni konular öğrenmek için bolca soru sormak (Spring Boot, AI konuları vs.)
✅ Son çare olarak hata ayıklama (belki hemen çözüm bulur diye)
✅ Uzun İngilizce metinlerde genel gözden geçirme
LLM’leri şimdilik şu işlerde kullanmıyorum:
❌ Bildiklerim için komple PR’leri (kod incelemeleri) yazmak
❌ Teknik belgeleri, karar dökümanlarını benim adıma yazmak
❌ Büyük kod tabanlarında araştırma yapıp “Bu nasıl çalışıyor?” sorusuna yanıt almak
Sonuç olarak, LLM’ler benim için çok değerli bir araç, ama onları nasıl kullandığınız önemli. Eğer doğru şekilde kullanırsanız, iş verimliliğinizi artırabilir ve sizi daha güçlü bir mühendis haline getirebilirler. 🚀