Bir önceki yazıda stajın ilk günlerinden, GitHub’a adapte olmaktan bahsetmiştim. Ama dürüst olayım; işin asıl zor kısmı araçlara alışmak değilmiş. Asıl mesele, "Şimdi burada nasıl bir yol izlemeliyim?" dediğim o karar anlarıymış.

Bu yazıda stajda kafamı en çok yoran, ama çözerken de en çok şey öğrendiğim iki teknik olaydan bahsetmek istiyorum.

1. "Her şeyi yapay zekaya mı yaptırsak?" tuzağı

Geliştirdiğimiz projede sürekli şöyle bir düşünceye kapılıyordum: "Aman ne uğraşacağım, bunu da yapay zekaya sordurur hallederiz."

Mesela bir görevin gecikme riskini hesaplamak ya da haftalık gidişatı özetlemek... İlk başta hepsini direkt yapay zekaya attırıp arkama yaslanmak çok pratik geldi. Ama test ettikçe fark ettim ki yapay zeka bazen olmayan şeyleri uydurabiliyor ya da aynı soruya her defasında bambaşka kafada cevaplar verebiliyor.

Bir kullanıcıya "Bu iş gecikebilir" diyorsak, bunun arkasında tutarlı bir mantık olması gerekiyordu. Yapay zekanın o anki ruh haline kalmamalıydı.

Sonra oturup olayı ikiye böldüm: Sayısal ve net hesapları ben kendi yazdığım kodlarla yapacaktım. Mesela bir işin bitmesine kaç gün kalmış, matematiksel olarak riski ne; bunlara ben karar veriyorum. Yapay zekaya ise sadece "Bak elimizde şöyle net bir sonuç var, bunu kullanıcıya güzelce açıkla" görevini verdim.

Yani hesabı ben yapıyorum, açıklamayı o yapıyor. Bu ayrımı yapınca hem sonuçlar saçmalamayı bıraktı hem de sistem gerçekten güvenilir oldu.

2. Ekranda beliren o kırmızı yazı: Merge Conflict

Diğer olay da iki çalışma dalının (branch) birbirine girmesiyle oldu. Açtığım PR’ları incelerken bir günün merge edilmediğini gördüm. Sebebine baktığımda karşıma tek bir kelime çıktı: Conflict.

O güne kadar "merge conflict" olayını hep teoride duymuştum, ilk defa canlı canlı başıma geliyordu. İlk an bir "Ne yapacağım şimdi?" diye düşünmedim değil.

Sonra durup ne olduğuna baktım. Meğer ben kendi tarafımda çalışırken ana dala başka güncellemeler gelmiş ve benim dokunduğum dosyalar orada da değişmiş. İki taraf da birbirinden habersiz aynı yerleri değiştirince Git haklı olarak "Hangisi doğru?" diye bana sormuş.

Burada da çakışan dosyaları inceleyip yapay zekadan da fikir alarak, gözümde devasa ve zor görünen bu sorunu adım adım çözüme kavuşturdum.

Sonuç olarak

Bu iki olay bana şunu gösterdi: Yazılımda karşılaştığımız teknik zorluklar genelde imkansız şeyler değil. Sadece o an doğru açıdan bakamıyoruz.

Panik yapmadan sorunu ufak parçalara bölünce ve "Ben burada tam olarak ne yapmaya çalışıyorum?" diye sorunca iş bir şekilde çözülüyor.