Tüm Yazılara Geri Dön

Vasat Bilge & Pair Programming

Vasat Bilge & Pair Programming

İlk yazımda LLM'lerin mesleğimizi tehdit ettiğine dair toplumdaki genel kanıdan ve benim bu konudaki duruşumdan bahsetmiştim. Bugün, bu bloğun geliştirilme sürecini -ki tamamen LLM ile pair programming yaparak ilerledim- bir vaka analizi olarak ele alıp; gözlemlediğim artıları, eksileri ve vardığım sonucu beyan etmek isterim. Arz ederim.

Öncelikle aranızda free cloud kaynağı kovalayan arkadaşlar varsa onlara bir hitap etmek isterim. Oracle, yatırım yaptığı Arm tabanlı işlemciler için ciddi bir kampanya yürütüyor. İşlemciyi kendi mi üretiyor, işin neresinde bilmiyorum; çok da önemli değil ama bayağı PR'ını yapıyorlar. Normalde çoğu cloud sağlayıcı, ilk üyelikte belirli bir süre kullanabileceğiniz birkaç yüz dolarlık kredi verir ve biter. Oracle'da ise durum biraz farklı: Arm işlemcileri kullandığınız sürece, 4 OCPU (yaklaşık 8 vCPU) ve 24GB RAM'e kadar kaynak havuzunu, 200GB depolama alanıyla birlikte "Always Free" olarak sunuyorlar. Tek şartları, kaynakları aktif kullanmanız; atıl kalırsa geri alacaklarını belirtiyorlar.

Bu bilgi bende yoktu. Blog yapmaya karar verince LLM'e ucuz servis sağlayıcısı sordum, amacım birkaç dolara güvenilir bir sunucu almaktı. Bu opsiyonu öğrenince her şeyi bırakıp buna odaklandım. Dürüst olayım; kampanya stoklarla sınırlı gibi bir durum var, bölgeye göre kaynak bulmak her zaman kolay değil ama imkansız da değil, ben bir günde hallettim. İlgilenenler oraclecloud.com adresine bakabilir. Sadece sunucu değil; yine always free kapsamında database, object storage ve DNS gibi hizmetleri de mevcut.

Gelelim implementasyon sürecine.

Projeye başladığımda Twitter'da her gün "Gemini 3 ile mükemmel web siteleri yaptım" temalı paylaşımlar görüyordum. Backend konusunda yetkinim ama bu sefer işe tersten, yani Frontend'den başlamak istedim. Sıradan bir blog sitesini manuel yapacak bilgim elbette var ancak beni engelleyen üç konu vardı:

  1. Estetik olarak çok zayıfım. UI/UX alışkanlıkları hakkında söyleyebileceğim hiçbir şey yok.
  2. Zaman maliyeti. Elim Frontend tarafında çok hızlı değil. Sürekli konfor alanından çıkıp, öğrenme ve deneme süreçlerini yaşayacağım bir süreç olur.
  3. Javascript ve tüm türevlerinden nefret ediyorum :) Böyle de çok ağır oldu ama sevmiyorum diyelim.

Bu sebeplerden dolayı, "Önyüzü tamamen LLM yapacak, pair programming bile yapmayacağım, bu bir workshop olsun" dedim. O Twitter'da gördüğüm aşırı yakışıklı arayüzlerden istiyordum ama gördüğüm şeyi nasıl ifade edeceğimi bilemiyordum. İnsanlar promptlarını da paylaşmamıştı; paylaşanlarınki ise destan gibiydi, onlarla güreşip vakit harcamak istemedim. Ve parmaklarımdan şu kelimeler dökülüverdi:

"Bana güzel gözüken, modern, minimalist bir kişisel blog web sitesi yap."

İşte tam bu aşamada mesleğimin bir süre daha benimle kalacağını anladım. Evet, çalışan bir uygulama çıkarttı ama sonuç ne güzel gözüküyordu ne de moderndi. Çok sade ve ruhsuz olduğu için, özellikle sayfanın üstünden başlayıp aşağılara doğru giden şu işlemci/kablo animasyonlarını yaptırmak istedim. Çok vaktimi aldı ama bir noktada kabul edebileceğim seviyeye geldi. Belki de ilk seferde çok iyi bir sonuç alsaydık, sabrım tükenmemiş olacağı için daha fazlasını arardım. Daha sonra anasayfadaki kartları beğenmeyip onları adam etmeye çalıştım. En son yine boş kalınca sayfanın en altına uyuyan Pikachu ve Fenerbahçe formalı Link karakterini koydurttum.
Backend'e geçmeden şunu da ekleyeyim: İlk başta "site yap" dediğim zaman doğal olarak statik bir web sayfası yaptı. İçerikleri uydurmuş, bir JSON dosyasına gömmüştü. Bunun ne anlama geldiğini bilmeyen birisi, "Şimdi ben buraya yeni yazıyı nasıl gireceğim?" diye sorsa konu nereye giderdi? Projeyi Server-Side bir yapıya çevirmesi gerektiğini, veritabanı ihtiyacını, canlıya almak için bir sunucu gerektiğini kullanıcıya ne noktada, nasıl anlatırdı? Benim için bunlar büyük soru işareti.

Açıkçası bütün süreç çok sıkıcıydı ve projeden vazgeçmeyi düşündüğüm zamanlar oldu. Olumlu taraflarına bakacak olursak; ne zaman ki teknik detay verdim, ne istediğimden emin bir şekilde yönlendirdim, işte o zaman iş iplik söküğü gibi açılmaya başladı. Şunu rahatlıkla diyebilirim: Yaratıcılık, LLM'in şu safhasında hala insanın çok daha önde olduğu bir alan.

Teknik olarak LLM'lerin birer dil modeli olduğunu, eğitim setinin ortalamasını yansıtan istatistiksel modeller olduklarını kavradığımızda bu iddiam daha iyi anlaşılacaktır. Bu sistemleri supervised eğitmiyorlar. Çok büyük miktarda 'metin' veriyorlar ve model, bir sonraki kelimeyi tahmin ederek çıktı üretiyor. Bu, aslında tam olarak vasatlığın tanımı. Ortalama. Ancak siz konuyu teknik detaylarla, doğru bağlamla beslediğinizde; bu kez o teknik detaylara sahip metinlerin ortalamasını çıktı olarak alıyorsunuz ve sonuç tatmin edici oluyor.
Yani, "Yazılım elden gidiyor mu?" sorusuna gelirsek: Kaliteli çıktı almak için teknik bağlam verebilme yetisi, konunun hakimine, yani profesyonellere kalıyor. Annem babam, Gemini 3 ile modern bir web sitesi yapamaz. Bilgisayarla haşir neşir ama kodlamadan anlamayan birisi, ne kadar modern olursa olsun, orijinal ya da güzel bir şey çıkartamaz. Başka şeylere benzetebilir ama detaylarda boğulur. Son tahlilde cilalı bir uygulamaya erişemez. Gibi geliyor bana :)

Backend ise zaten hakim olduğum alan. Çok net bir-iki prompt ile elimde istediğim yapıda bir Spring Boot projesi vardı. O kadar nettim ki, koda ve prompta baksanız koddan çok benim yönlendirmemden etkilenirdiniz. Ayrıca bir CI/CD pipeline'ı kurmak istedim. Github Actions ve Ubuntu sunucu kullanacağımı söyleyince yarım saatte pipeline'ı da kurdurdu. Bunu yapabilmesi harika ve işimizi elimizden alan bir şey değil; aksine etkileşimli bir tutorial vermiş oldu. İnternette arasam bulurdum ama harcayacağım süreyi minimize ettiği bir gerçek.
Özetle, LLM'ler devrimsel. Şu an vasat bir junior yazılımcının yaptığı neredeyse her şeyi yapıp, üstüne doğru soruları sorduğunuzda mimari seviyede kaliteli cevaplar verebiliyorlar. Ama yine de 3 kritik konu var:

  1. Sorumluluk Prensibi: Bilgisayarlar sorumlu tutulamaz, hesap vermeleri istenemez. Yazdığı kod prodüksiyon ortamında patladığında, gece yarısı uyanıp o bug'ı düzeltecek olan yine benim, AI değil. "Code ownership", kodu yazmaktan ziyade sonuçlarına katlanmakla ilgilidir. Bu yüzden kısa-orta vadede insansız bir yazılım geliştirme süreci hayal edemiyorum.
  2. Bağlam ve Halüsinasyon: Doğru soruları sormak ve doğru bağlamı sağlamak hayati. Bunları yapsanız bile modelin halüsinasyon görme ihtimali var. Bunu fark edecek yetkinlikte ve odakta olmanız şart.
  3. Teknolojik Sınırlar: Bütün yorumlarım şu an kullanabildiğimiz LLM'lerin güncel versiyonları üzerine. Bu meretler çok hızlı geliştiler geçtiğimiz yıllarda. Bu devam ederse ne olacak peki? Bir kaç yıl önce eldeki parmakları sayamıyordu bu cihazlar sonuçta. Bunun için de yine detayına girmeyeceğim teknolojinin sınırları argümanını kullanmak istiyorum. Bu bir dil modeli ve çok büyük bir verisetiyle eğitiliyor hali hazırda. Benchmarklar artık verisetinin artışıyla alınan skorların korelasyonunun bozulduğunu söylüyor bize. Yani ne kadar ekmek o kadar köfte dönemini de geçmiş bulunuyoruz. Biraz daha iyisi için çok daha fazla yatırım gerekiyor. Ayrıca insan çıktısı dijital içeriklerin de sonuna geldik. Şurada eğitim setine girmeyen neredeyse bir benim bu blog kaldı :) Ki birçok hukuki dava var, yazarlar, IP sahipleri LLM'lerden kendi çıktılarını eğitim setinde kullanmamalarını istiyor, davalar devam ediyor. Tabi bir de acaba finansal bir balon mu var konusu da gündemde. Demem o ki LLM'ler kısa orta vadede artık çok daha akıllanmayabilirler. Grafikte bir platoya denk gelmiş olabiliriz.

Saat 12:15. Daha fazla uzatmak istemiyorum. Konu ister istemez "Hadi benim yazığım kodu yazdı, Muse'den Plugin in Baby'i de yaratabilecek mi ki ? "ye geliyor sürekli. Bu konuları konuşmayı seviyorum; tartışmak isterseniz bana ulaşmaktan çekinmeyin.
Saygılarımla.

Yorumlar (0)

Henüz yorum yapılmamış. İlk yorumu sen yap!

Yorum yapmak için giriş yapmalısınız.

Giriş yaptıktan sonra bu yazıya yorum bırakabilirsiniz.

Link
Pikachu