Kod yazmak kolaylaşıyor. Asıl zor olan, neyi neden geliştirdiğini bilmek.

Bir yazılımcının bilgisayar başında geçirdiği zamanı düşünelim.

Saatlerce kod yazar, hata ayıklar, dokümantasyon inceler, testler hazırlar ve geliştirdiği özelliklerin çalışıp çalışmadığını kontrol ederdi. Bir özelliğin tamamlanması bazen günler sürerdi.

Bugün ise aynı yazılımcı, yapay zeka desteğiyle bu işlerin önemli bir bölümünü çok daha kısa sürede tamamlayabiliyor.

Bir API oluşturabiliyor, veritabanı sorguları yazdırabiliyor, test senaryoları hazırlatabiliyor, hatta mevcut bir uygulamanın önemli bölümlerini yeniden geliştirebiliyor.

Bu gerçekten büyük bir değişim.

Ancak bu değişimle birlikte gözden kaçırdığımız önemli bir soru var:

Yapay zeka bizim yerimize kod yazmaya başladığında, biz yazılımcılar olarak ne yapmalıyız?

İlk akla gelen cevap genellikle daha fazla iş yapmak oluyor.

Daha fazla özellik geliştirmek, daha fazla proje üstlenmek, daha fazla görev tamamlamak…

Bence asıl fırsatı tam da burada kaçırıyoruz.

Çünkü yazılım geliştirmenin değeri hiçbir zaman yalnızca yazılan kod miktarı olmadı.

Kod yazmak artık tek başına bir rekabet avantajı değil

Yapay zeka araçları geliştikçe kod üretmenin önündeki engeller azalıyor.

Eskiden bir teknolojiyi öğrenmek, doğru kullanım örneklerini bulmak ve çalışan bir çözüm oluşturmak için ciddi zaman harcamamız gerekiyordu.

Şimdi doğru soruları sorarak başlangıç noktasına çok daha hızlı ulaşabiliyoruz.

Bu durum yazılımcılık mesleğini ortadan kaldırmıyor. Ancak yazılımcıdan beklenen becerilerin ağırlık merkezini değiştiriyor.

Artık sadece kod yazabilmek yeterli değil.

Bir ihtiyacı doğru anlayabilmek, uygun teknolojiyi seçebilmek, sistemin bütününü değerlendirebilmek ve ortaya çıkan çözümün gerçekten işe yarayıp yaramadığını anlayabilmek çok daha önemli hale geliyor.

Örneğin yapay zekaya bir kullanıcı yönetim modülü geliştirmesini söyleyebilirsiniz.

Ancak şu soruların cevaplarını kim verecek?

  1. Kullanıcının hangi yetkilere ihtiyacı var?
  2. Yetkilendirme sistemi mevcut mimariyle uyumlu mu?
  3. Güvenlik açıkları oluşabilir mi?
  4. Bu özellik ileride nasıl genişletilecek?
  5. Gerçekten böyle bir özelliğe ihtiyaç var mı?

Yapay zeka bu soruların cevaplarını bulmanıza yardımcı olabilir. Fakat doğru soruları sormak ve verilen cevapları değerlendirmek sizin sorumluluğunuzdadır.

Gelecekte fark yaratacak yazılımcı, en hızlı kod yazan değil, doğru problemi en iyi anlayan kişi olacak.

1. Yapay zekaya iş vermeden önce problemi anlamaya zaman ayırın

Yazılım projelerinde en sık karşılaştığımız sorunlardan biri yanlış ihtiyaca doğru çözüm geliştirmektir.

Bazen müşteri bir özellik ister, ekip bu özelliği geliştirir ama ortaya çıkan sonuç gerçek problemi çözmez.

Yapay zeka bu süreci daha da hızlandırabilir.

Yanlış bir isteği çok hızlı şekilde çalışan bir yazılıma dönüştürebiliriz.

Bu nedenle geliştirmeye başlamadan önce problemi anlamaya daha fazla zaman ayırmalıyız.

Kullanıcı ne istiyor? Asıl ihtiyacı ne? Mevcut sistemde hangi sorun yaşanıyor? Bu geliştirme gerçekten değer katacak mı?

Bunları anlamadan yapay zekaya görev vermek, yanlış yöne çok hızlı ilerlemekten başka bir şey değil.

Bence yeni dönemde yazılımcının en önemli becerilerinden biri teknik çözüm üretmeden önce doğru soruları sorabilmek olacak.

2. Kod üretmekten çok, üretilen kodun sorumluluğunu alın

Yapay zeka tarafından oluşturulan bir kodun çalışması, onun doğru olduğu anlamına gelmez.

Kod derlenebilir, testlerden geçebilir ve beklenen sonucu üretebilir. Ancak bu, güvenli, sürdürülebilir ve doğru tasarlanmış olduğu anlamına gelmez.

Özellikle büyük ve uzun ömürlü yazılım projelerinde bu konu çok önemli.

Bir yazılım geliştirici olarak sadece kodun çalışmasına değil, sistemin geri kalanıyla nasıl etkileşime girdiğine de bakmalıyız.

  1. Veritabanı işlemleri doğru mu?
  2. Hata yönetimi yeterli mi?
  3. Yetkilendirme kontrolleri doğru uygulanmış mı?
  4. Performans açısından sorun oluşturabilecek noktalar var mı?
  5. Kodun bakımı ileride kolay olacak mı?

Yapay zeka tarafından hazırlanan bir Pull Request’i incelemek, yalnızca satır satır kod okumak değildir. Yapılan değişikliğin sistem üzerindeki etkisini değerlendirmektir.

Bence burada önemli bir ayrım var:

Kodu yapay zeka yazabilir. Ancak o kodun sorumluluğunu yazılımcı üstlenmelidir.

3. Kazandığınız zamanı sürekli yeni görevlerle doldurmayın

Yapay zeka sayesinde bir işi eskisinden çok daha kısa sürede tamamladığınızı düşünün.

Önünüzde iki seçenek var.

İlk seçenek, kazandığınız zamanı yeni görevler alarak doldurmak.

İkinci seçenek ise bu zamanı kendinizi geliştirmek, mevcut sistemi iyileştirmek ve daha iyi çözümler üretmek için kullanmak.

Çoğu zaman ilk seçeneği tercih ediyoruz.

Çünkü yoğun çalışmayı üretkenlikle karıştırmaya alıştık.

Takvimimiz doluysa, görev listemiz uzunsa ve sürekli bir şeyler geliştiriyorsak verimli olduğumuzu düşünüyoruz.

Oysa bazen en üretken olduğumuz an, bilgisayar başında yeni bir görev tamamlamadığımız andır.

Bir sistemin mimarisini incelemek, teknik borçları belirlemek veya gelecekte sorun oluşturabilecek bir tasarım kararını yeniden değerlendirmek de üretkenliktir.

Yapay zeka bize zaman kazandırıyorsa bu zamanı sadece daha fazla iş yapmak için kullanmak zorunda değiliz.

Boş kalan zamanı yeni işlerle değil, daha iyi kararlarla değerlendirebiliriz.

4. Teknik bilginizi geliştirmeyi bırakmayın

Yapay zeka araçları bir teknolojiyi kullanmayı kolaylaştırabilir. Ancak o teknolojiyi gerçekten anlamak hala önemli.

Bir yazılımcı olarak kullandığınız programlama dilinin, veritabanının, mimari yaklaşımın veya geliştirme aracının çalışma mantığını bilmeniz gerekir.

Aksi halde yapay zekanın ürettiği çözümleri değerlendirmek yerine yalnızca kabul eden bir kullanıcıya dönüşebilirsiniz.

Bu nedenle yapay zeka kod yazarken kendinize de yatırım yapın.

  1. Yeni bir teknoloji öğrenin.
  2. Teknik dokümantasyon okuyun.
  3. Daha önce anlamadığınız bir konuyu araştırın.
  4. Mevcut sisteminizde neden belirli mimari kararların alındığını inceleyin.

Farklı çözüm yaklaşımlarını karşılaştırın.

Bir de önemli bir nokta var: Yapay zekaya her şeyi yaptırabilmek, her şeyi bilmeniz gerektiği anlamına gelmez. Ancak neyi bilmediğinizi fark edebilmeniz ve doğru yerde derinleşebilmeniz gerekir.

Çünkü araçlar değişir, modeller gelişir, kullanılan teknolojiler yenilenir.

Fakat öğrenme becerisi kalıcı bir avantajdır.

5. Ekip arkadaşlarınızla daha fazla iletişim kurun

Yapay zeka ile bireysel çalışma kapasitemiz artıyor.

Bir yazılımcı artık eskiden birkaç kişinin birlikte yaptığı bazı işleri tek başına gerçekleştirebiliyor.

Bu durum ekip içindeki iletişimin önemini azaltmamalı.

Tam tersine, birlikte düşünmeye daha fazla zaman ayırmamızı sağlamalı.

Bir çalışma arkadaşınızla teknik bir konuyu tartışmak, farklı bir bakış açısı kazanmak veya bir mimari kararın artılarını ve eksilerini değerlendirmek hala çok değerli.

Bazen bir problemi çözmek için yeni bir yapay zeka oturumu açmak yerine deneyimli bir çalışma arkadaşınıza danışmak çok daha doğru bir tercih olabilir.

Ayrıca bilgi paylaşımı yalnızca sorun çözmek için yapılmaz.

Ekip arkadaşlarımıza bir konuyu anlatmak, onların deneyimlerinden faydalanmak ve birlikte öğrenmek ekiplerin teknik kapasitesini artırır.

Teknoloji ne kadar gelişirse gelişsin, güvene dayalı ekip çalışmasının yerini tamamen doldurabilecek bir araç olduğunu düşünmüyorum.

6. Sadece yazılım geliştirmeyin, yazılımın neden geliştirildiğini sorgulayın

Yazılım geliştiriciler olarak çoğu zaman teknik konulara odaklanıyoruz.

Hangi teknoloji kullanılacak? Hangi mimari tercih edilecek? Nasıl daha hızlı geliştirebiliriz?

Bunlar önemli sorular.

Ancak bazen daha temel bir soruyu unutuyoruz:

Geliştirdiğimiz yazılım kimin hangi problemini çözüyor?

Bir uygulamaya yeni bir özellik eklemek kolaylaşabilir. Ancak bu özelliğin kullanıcıya gerçekten fayda sağlayıp sağlamadığını anlamak farklı bir konu.

Kullanıcı deneyimini incelemek, geri bildirimleri değerlendirmek, iş süreçlerini anlamak ve ürünün geleceğini düşünmek de yazılımcının katkı sağlayabileceği alanlar.

Yapay zeka sayesinde teknik uygulama süreçlerine daha az zaman ayırdığımızda ürünün kendisine daha fazla odaklanabiliriz.

Belki de yazılım geliştirmenin geleceğindeki en önemli değişim bu olacak.

Kod yazmak için harcadığımız zaman azalırken, neyi neden geliştirdiğimizi düşünmek için daha fazla fırsatımız olacak.

Geleceğin yazılımcısı nasıl biri olacak?

Yapay zeka yazılım geliştirme alışkanlıklarımızı değiştiriyor. Bu değişime direnmek yerine onu doğru anlamamız gerekiyor.

Ancak yapay zeka kullanmayı öğrenmek tek başına yeterli değil.

Daha iyi problem analiz etmeli, teknik bilgimizi geliştirmeli, üretilen kodun sorumluluğunu almalı, ekip arkadaşlarımızla iletişim kurmalı ve kullanıcıya gerçek değer sunmaya odaklanmalıyız.

Bence önümüzdeki dönemde yazılımcılar arasında önemli bir fark oluşacak.

Bir grup, yapay zeka ile daha fazla kod üretmeye ve daha fazla görev tamamlamaya odaklanacak.

Diğer grup ise kazandığı zamanı daha iyi öğrenmek, daha doğru kararlar vermek ve daha kaliteli yazılımlar geliştirmek için kullanacak.

Ben ikinci yaklaşımın çok daha sürdürülebilir olduğuna inanıyorum.

Çünkü yazılım geliştirmek hiçbir zaman sadece kod yazmak olmadı.

Kod, bir problemi çözmek için kullandığımız araçlardan biri.

Asıl değer ise problemi anlamakta, doğru çözümü tasarlamakta ve ortaya çıkan ürünün insanlara sağladığı faydada.

Yapay zeka sizin yerinize kod yazabilir. Ama nasıl bir yazılımcı olmak istediğinize siz karar vermelisiniz.

Belki de artık kendimize şu soruyu sormanın zamanı geldi:

Yapay zeka sayesinde daha fazla kod mu üretiyoruz, yoksa daha iyi yazılımlar geliştirmek için gerçekten kendimize zaman ayırabiliyor muyuz?