YG

C# masaüstü otomasyonlardan mobil oyunlara: öğretmenlik, destek ve yapay zekâ

14 Ekim 2026·4 dk okuma·Yusuf GÜNER

Yazılıma C# ve MS Access ile yazdığım masaüstü otomasyonlarla başladım. Sonra bir buçuk dönem bilişim öğretmenliği yaptım, NarPOS'ta stajyer olarak girip teknik destek ekip lideri olarak ayrıldım. Bugün React Native ile mobil oyunlar, Next.js ile web siteleri geliştiriyorum ve işin büyük kısmını yapay zekâ ajanlarıyla birlikte yapıyorum.

Bu yolun düz bir çizgi olmadığını biliyorum. Geliştirmeden desteğe geçmek, sınıftan sektöre dönmek dışarıdan karışık görünüyor. Bana her biri farklı bir şey öğretti ve bugün kullandığım alışkanlıkların çoğu oradan geliyor.

İlk programlar: formlar, tablolar, raporlar

Lisede bilişim bölümündeydim, ardından bilgisayar programcılığı önlisansı okudum. İlk yıllarda yazdığım projelerin çoğu aynı iskeleti taşıyordu. Bir veritabanı, birkaç tablo, kayıt ekleme, silme, arama ve rapor ekranı.

Oto galeri otomasyonu araç alım satımını ve müşteri kayıtlarını, galerideki stokla birlikte tutuyordu. İki sürümünü yaptım ve V2'de arayüzü baştan tasarladım, çünkü ilk sürümü kullanmak zordu. Eczane ve kütüphane takip uygulamaları MS Access üzerindeydi. Stok takip sistemini MS SQL Server ile yazdım; ürün giriş çıkışlarını ve kritik stok uyarılarını yönetiyor, raporlama sorguları birden çok tabloyu birleştiriyordu.

Bir de Windows Forms ile Flappy Bird yazdım.

İlk oyunumdu. Çarpışma tespitini, skoru, oyun döngüsünü, hepsini sıfırdan yazdım. Yıllar sonra Stack the World'ün kule simülasyonunu yazarken aynı soruyla karşılaştım: kare hızı değişirse oyun hızı da değişir mi? Cevabı bu kez sabit adımlı bir döngüyle verdim, ama sorunun kendisini ilk kez o küçük oyunda görmüştüm.

Sınıfta öğrendiklerim

Bilişim öğretmeni olarak C# programlama, SQL ve veritabanı yönetimi, robotik ve görsel tasarım dersleri verdim. Robotikte mBlock5 ve Arduino kullandık.

Öğretmek, bildiğini sandığın şeyin sınırını gösteriyor. Bir JOIN'i ya da bir döngüyü tahtada anlatırken adımlardan birini atlarsan, karşındaki onu hemen yakalıyor.

Bir konuyu parçalara bölmeyi, her parçayı tek başına anlaşılır hâle getirmeyi orada öğrendim.

Bunun bugünkü işime doğrudan bir karşılığı var. Bir yapay zekâ ajanına iş verirken de aynı şeyi yapıyorum: görevi sınırları belli, sonucu kontrol edilebilir küçük parçalara bölüyorum. Belirsiz anlatılan bir görevi ajan da öğrenci de kendi kafasına göre tamamlıyor.

NarPOS: stajyerlikten ekip liderliğine

NarPOS'ta iki yılı aşkın bir süre çalıştım ve dört farklı rolde bulundum.

Stajyerken masaüstü uygulamaların bakımına ve testlerine, Android ve iOS sürüm güncellemelerine katıldım. Git ile çalışmayı ve code review sürecini burada düzenli olarak yaşadım. Ardından yazılım geliştirici olarak C# ile çok katmanlı otomasyonlar, SQL Server üzerinde veritabanı tasarımı ve sorgu optimizasyonu, Angular ile tek sayfa uygulamalar ve C# Web API ile REST servisleri yazdım.

Sonra teknik destek tarafına geçtim. Önce destek uzmanı olarak Jira üzerinden ticket ve planlama takibi, POS kurulumları ve güncellemeleri, veritabanı işlemleri ve entegrasyonlarla uğraştım. Eylül 2025'ten Temmuz 2026'ya kadar da teknik destek ekibini yönettim; LVL3 destek, hata log analizi, entegrasyon kurguları, TCP/IP ve DNS yapılandırması, Postman ile API doğrulama bu dönemin işiydi.

Geliştiriciden desteğe geçmek kâğıt üzerinde bir yana kayma gibi duruyor. Bana yazdığım kodun sahada nasıl kırıldığını gösterdi. Bir hata kullanıcıya her zaman genel bir mesajla görünüyor, gerçek sebep ise log'da yazıyor.

Log'a bakmayı orada alışkanlık hâline getirdim.

Faydasını sonradan çok gördüm bu alışkanlığın. Stack the World'ün kapalı testinde Google ile giriş Play'den kuran herkeste "bağlantı kurulamadı" diyordu. Ekrandaki mesaj hiçbir şey söylemiyordu; logcat ise uygulamanın OAuth için kayıtlı olmadığını açıkça yazıyordu.

Sebep yanlış bir imza parmak iziydi ve doğrusu eklenince sorun hemen kapandı.

Yapay zekâ destekli geliştirmeye geçiş

Bugün Claude Code ve Codex ile, birden çok yapay zekâ ajanını aynı anda çalıştırarak geliştiriyorum. Kod yazma hızı çok arttı, çünkü bir ajan oyunun ses katmanıyla uğraşırken bir diğeri performans ölçümü yapabiliyor, ben de ikisinin çıktısını sırayla inceleyip hangisinin ana dala gireceğine karar veriyorum. Benim işimin tanımı da değişti. Artık zamanımın çoğu ne yapılacağını tarif etmeye, çıkan sonucu doğrulamaya ve hangi yolun seçileceğine karar vermeye gidiyor.

Bu düzeni birkaç kurala bağladım. Her işe önce bir tasarım dokümanıyla başlıyorum; Stack the World'ün dil altyapısı, performans işi ve mağaza süreci için ayrı ayrı tasarım ve plan dosyaları var. Bir repoda aynı anda yalnız bir ajan kod yazıyor, diğerleri okuyor. Paralel işler ayrı git worktree'lerinde yürüyor. Bunu paralel çalışırken öğrendim; iki ajan aynı config dosyasını değiştirince biri diğerinin değişikliğini sessizce ezebiliyor.

C#'ı da bırakmadım. Bu ay bir B2B sipariş sistemini .NET 9 Web API, EF Core ve SQL Server ile yazdım, ürün aramasını Elasticsearch ve Redis üzerine kurdum. TypeScript'in tip sistemi ve sözdizimi C#'a çok yakın; iki dili de Anders Hejlsberg tasarladı.

Testler bu düzenin kapısı. Stack the World'de 7.000'i aşan Jest testi var ve hiçbir değişiklik tsc temiz çıkmadan, testlerin tamamı geçmeden ana dala girmiyor. Ajan "bitti" dediğinde testlerin çıktısına bakmadan bunu kabul etmiyorum.

Ölçüm de aynı şekilde. Performans işinde bir ajanın önerisi, ikonları resme çevirmek gibi, mantıklı görünse bile ölçünce durumu kötüleştirebiliyor. Karşılaştırmaları iki yapılandırmayı birbirinin arasına serpiştirerek ve birkaç tur çalıştırarak yapıyorum. Az turla alınan bir fark çoğu zaman gürültü çıkıyor.

Bu yoldan çıkardığım pratik dersler

Benzer bir yolda olan biri için işe yarayacağını düşündüğüm birkaç şey:

  • Küçük CRUD projelerini küçümseme. Veri modeli ile arama ekranı, bugün bir B2B sipariş sisteminde Elasticsearch ile çözdüğüm problemin ilk hâli.
  • Log okumayı erken öğren. Kullanıcının gördüğü hata mesajı nadiren gerçek sebebi söylüyor.
  • Bir konuyu birine anlatmayı dene. Anlatırken takıldığın yer genelde eksik bildiğin yer oluyor; ajanlara iş verirken de aynı beceriyi kullanıyorsun.
  • Yapay zekânın çıktısını testle ve ölçümle kabul et. Hızlı yazılan kodun doğruluğunu hız kanıtlamıyor.
  • Destek ya da öğretmenlik gibi "yan" görünen işleri saklama. Sahadaki hatayı ve insanın nasıl öğrendiğini başka bir yerde bu kadar yakından göremezsin.

Şu an Stack the World mağaza onaylarını bekliyor, bir sonraki oyun ise rafta sırasını bekliyor. İlk Flappy Bird'den bu yana en çok keyif aldığım şey hâlâ aynı, kendi kurduğum bir şeyin ekranda çalıştığını görmek.

kariyerC#.NETyapay zekâReact Native

Diğer yazılar