(Sabah kalkıp tekrar bakınca mevcut yazıda biçimlendirme hataları olduğunu ve ayrıca çok uzun yazdığımı fark ettim; bu yüzden özet sürümü yeniden paylaşıyorum)
ChatGPT’ye yeni başlayanların, ChatGPT ile ‘karmaşık problemleri’ çözmeye çalışırken sıkça 3 hata yaptığını gördüm
- ChatGPT’nin ‘doğru cevabı’ tek seferde vereceğini beklemek
- ChatGPT’nin doğru cevabı ‘hemen’ vereceğini beklemek
- Bu beklenti kolayca karşılanmayınca hayal kırıklığına uğrayıp ChatGPT’yi yalnızca basit problemler için kullanmak, sadece pasif biçimde kullanmak ya da tamamen bırakmak
Sonuç olarak yapay zeka ile üretkenliği artırma fırsatlarının çoğunu kaçırıyorlar
Birkaç ay öncesine kadar ben de tam olarak böyleydim
- Uygulamanın ilk yükleme hızı yavaştı; bu yüzden bundle boyutu analizi yaptım ve karşıma aşırı büyük bir JS dosyası çıktı. 18.500 satırlık bu dosyanın büyük kısmını silebileceğimi fark ettim
- İlk başta gözle bakıp elle silmeye başladım ama çok sıkıcıydı ve sürekli hata yapıyordum
- ChatGPT ile çalışmaya başladım. İlerledikçe benim de yeni başlayanlar gibi ‘doğru cevabı tek seferde’ bekleyerek çalıştığımı fark ettim
- Bunu fark ettikten sonra ‘üç taraflı iş birliği stratejisi’ni kullandım ve çok hızlı şekilde büyük ilerleme yaşadım
Çalışmanın ilerleyişi
Benim yerime biraz refaktör eder misin
- Bir fonksiyon verip istediğim yaklaşımı anlattım ve refaktör etmesini istedim → başarısız. Derleme bile olmadı
- Kodun yapısını anlayarak değiştirmek yerine, satır satır aşağı inip silme yöntemi uyguluyordu
Refaktör eden kodu yaz
- Doğrudan kendisi yapmak yerine, JS ile refaktör eden kod yazmasını istedim → başarısız. Bu da yine satır satır aşağı inip silme yaklaşımıydı
- Düşününce, ChatGPT muhtemelen böyle büyük ölçekli refaktörleri yeterince öğrenmemişti
AST ile refaktör eden kodu yaz
- Ben satır satır değil, bloklar hâlinde silmek istiyordum. Yani kodun sözdizimsel olarak anlaşılması gerekiyordu; bu yüzden AST kullanmanın uygun olacağını düşündüm
- ChatGPT’ye ESLint geliştirme deneyimi olan bir mühendisin rolünü verdim ve AST kullanarak yazmasını istedim; ortaya harika bir babel tabanlı boilerplate çıktı. Büyük bir ilerleme
- babel deneyimim olmadığı için ChatGPT ile birlikte öğrenerek mantığı eklemeye devam ettim ama sonunda zorlukla karşılaştım. Karmaşık mantığı ele almak zordu
AST ile ben bunu denedim. Bu kısım iyi çalışmıyor; sen olsan buna nasıl yaklaşırdın?
- Yine doğru cevabı tek seferde almaya çalıştığımı fark edip stratejiyi değiştirdim. traverse işlemini sadece 1 kez yapmam gerekmediğini düşününce işler akmaya başladı
- Basitçe bir kez çalıştırıp sonucu görerek mantığı katman katman inşa etme yöntemiyle hızlı ilerledim
- Parça parça iyi çalışmayan yerlerde, o spesifik amacı nasıl gerçekleştirebileceğimi ChatGPT’ye sorarak ilerledim
- En sonda kurala dönüştürmesi zor olan kısımları gözle ve elle tamamladım. O noktada kod miktarı zaten çok azalmıştı, bu yüzden mümkündü
Sonuç
- 18.500 satırlık kod 1.335 satıra indi ve ana chunk bundle boyutu yaklaşık %7,8 azaldı
- İlk yükleme için gereken JS dosya boyutu ve mantık azaldığı için ilk yükleme hızı da bir miktar iyileşti
- Uzun ve karmaşık legacy kodu AST ile refaktör etme deneyimi ve özgüveni kazandım
- Karmaşık problemlerin çoğunu yapay zeka + kod + insan şeklindeki üçlü iş birliğiyle etkili biçimde çözebileceğime dair güven kazandım
Yapay zeka ile karmaşık problemleri etkili şekilde çözmek için zihinsel model
- Yapay zekanın iyi yaptığı işleri, kodun iyi yaptığı işleri ve insanın iyi yaptığı işleri anlamak.
- Çözmek istediğim problemi analiz edip yapay zeka/kod/insanın güçlü olduğu alanları ayırmak.
- Yapay zekanın ilk kodu iyi üretebilmesine yardımcı olmak, o kodu küçük parçalar hâlinde çalıştırıp yapay zeka ile birlikte geliştirmek ve süreç içinde + en sonda insanın daha kolay yapacağı işleri doğrudan kendim yapmak.
2 yorum
Güzel bir yazıydı, keyifle okudum.
Yinelenen yazı silinmiştir.