Bölüm 02
Uzmanlık Alanlarım
Teknoloji isimlerinden oluşan bir liste yerine on ayrı kayıt: karşılaşılan problem, izlenen yaklaşım, kullanılan teknolojiler, örnek proje, ortaya çıkan sonuç ve o çalışmadan kalan ders.
Görüntü İşleme ve Bilgisayarlı Görü
Sahadaki görüntü, laboratuvardaki görüntü değildir.
Karşılaşılan problem
Bir su sayacının endeksini insan gözü yarım saniyede okur; kamera okuyamaz. Camda buğu, kadranda kir, bodrumda ışık yok, açı her seferinde farklı. Aynı sorun tarımda da var: bir marul yaprağındaki lekenin hastalık mı yoksa gölge mi olduğunu ayırmak, modelden önce veriyi anlamayı gerektiriyor.
Yaklaşımım
Modeli en son yazıyorum. Önce veriyi topluyor, ön işleme adımlarını (gri tonlama, eşikleme, gürültü azaltma, perspektif düzeltme) tek tek görselleştiriyor ve hangi adımın neyi kazandırdığını ölçüyorum. Sınıflandırma ancak girdi kararlı hâle geldikten sonra anlamlı oluyor. Gerçek zamanlı analizde ise doğruluk kadar kare başına süre de bir kısıt olarak masada duruyor.
Kullanılan teknolojiler
- Python
- OpenCV
- Görüntü ön işleme
- Sınıflandırma
- Model eğitimi
- Veri etiketleme
Örnek proje
Su Sayacı Otomatik Okuma PrototipiOrtaya çıkan sonuç
ASKİ stajı sırasında su sayacı okuma için yapay zekâ destekli bir prototip geliştirdim. Ardından MarulVision marul analiz platformu ve balık türü tanıma çalışmaları geldi.
Bu çalışmadan kalan
Görüntü işlemede başarıyı belirleyen şey model mimarisi değil, girdi kalitesi. Sahada çalışacak bir sistem tasarlıyorsanız veri toplama protokolünü modelden önce yazmanız gerekiyor.
Gömülü Sistemler
Kodun doğru olması yetmez; sensörün doğru olması gerekir.
Karşılaşılan problem
Pronova Hydroponics tarafında sistem, pH ve EC değerlerine bakarak pompa çalıştırıyor ve besin dozajlıyordu. Yani yazılımın verdiği karar doğrudan fiziksel bir sonuç üretiyordu. Kalibre edilmemiş bir sensörün ürettiği "makul görünen" veri, panelde hiçbir uyarı vermeden yanlış dozajlamaya dönüşebiliyordu.
Yaklaşımım
Ölçüm zincirini tek parça olarak ele aldım: sensör → kalibrasyon → ESP32 firmware → eşik kuralları → röle/pompa → log. Dozajlama kararlarını koda gömmek yerine kural hâline getirdim, böylece saha koşulu değiştiğinde firmware yeniden yazılmadan eşik ayarlanabildi. Her karar loglandı — bir pompanın neden çalıştığı sonradan sorulabilir olmalıydı.
Kullanılan teknolojiler
- ESP32
- C/C++ (Arduino)
- pH / EC / sıcaklık / nem sensörleri
- Röle ve pompa kontrolü
- Saha kalibrasyonu
- Devreye alma
- Loglama
Örnek proje
Pronova Hydroponics — IoT İzleme ve Dozajlama SistemiOrtaya çıkan sonuç
ESP32 tabanlı gömülü yazılım, sensör entegrasyonu, pompa/röle kontrolü ve dozajlama kuralları uçtan uca geliştirildi; saha kalibrasyonu ve devreye alma süreçleri yürütüldü.
Bu çalışmadan kalan
Gömülü sistemde "çalıştı" ile "güvenilir" arasında kalibrasyon, loglama ve devreye alma prosedürü vardır. Bunlar olmadan sistem laboratuvarda doğru, sahada tahmindir.
Robotik ve IoT
Fiziksel dünyaya müdahale eden yazılımın hata bütçesi sıfırdır.
Karşılaşılan problem
Bir web uygulamasında hata mesajı gösterirsiniz; bir röleyi yanlış tetiklediğinizde pompa çalışır. IoT tarafında asıl problem veri toplamak değil, kesintiye ve yanlış ölçüme rağmen doğru davranmaktır: bağlantı kopunca cihaz ne yapacak, sensör saçmalarsa hangi değer güvenli kabul edilecek?
Yaklaşımım
Cihazı merkeze bağımlı bırakmıyorum. Karar kuralları cihaz üzerinde çalışır, merkez yalnızca izler ve eşik günceller. Bağlantı koptuğunda cihaz bilinen son güvenli duruma geçer, veriyi yerel olarak tutar ve bağlantı gelince gönderir. Bu, saha mobil uygulamalarındaki çevrimdışı kuyruk mantığıyla birebir aynı mühendislik problemidir.
Kullanılan teknolojiler
- ESP32
- Sensör ağı
- Röle / aktüatör kontrolü
- MQTT & API entegrasyonu
- RF / W-MBus (değerlendirme)
- Modbus / M-Bus (değerlendirme)
- Gateway mimarisi
Örnek proje
Kablosuz Sayaç Okuma ve Gateway Mimarisi DeğerlendirmesiOrtaya çıkan sonuç
Pronova Hydroponics tarafında sensör-aktüatör kontrol döngüsü sahada devreye alındı. ASKİ tarafında RF Gateway, W-MBus ve Modbus tabanlı kablosuz sayaç okuma mimarisi teknik olarak değerlendirilerek pilot uygulama önerisi ve tedarikçi şartname soruları hazırlandı.
Bu çalışmadan kalan
Kablosuz her zaman daha iyi değildir. Kapsama, pil ömrü, gateway bağımlılığı ve açık protokol garantisi hesaba katılmazsa kurulum kolaylığı, yıllar süren bir tedarikçi bağımlılığına dönüşür.
Mobil Uygulama Geliştirme
Uygulamayı bodrumda, eldivenle ve tek elle kullanan biri için tasarlıyorum.
Karşılaşılan problem
Saha personeli ofis kullanıcısı değil. Telefonu güneşin altında, eldivenle, çoğu zaman şebekesiz bir bodrumda kullanıyor. Ekranda dört fotoğraf çekmesi, endeks girmesi, stoktan doğru sayacı seçmesi ve işi kapatması gerekiyor — hepsi bağlantı olmadan.
Yaklaşımım
Büyük dokunma alanları, net durum rozetleri ve Türkçe-anlaşılır hata mesajları. Katmanları ayırıyorum: app (tema, yönlendirme), core (ağ, konum, fotoğraf, senkron, depolama), features (görev, form, stok, senkron) ve shared bileşenler. Kritik akışta zorunlu alan doğrulaması kullanıcıyı ilk eksik alana kaydırıyor; form tamamlama tek bir veritabanı işlemi içinde kapanıyor, aksi hâlde görev tamamlanıp kaydın kuyruğa girmemesi mümkün.
Kullanılan teknolojiler
- Flutter
- Dart
- SQLite / Drift
- Dio
- Kamera & çoklu fotoğraf
- GPS / konum
- Bluetooth termal yazıcı
- Riverpod
- flutter_test
Örnek proje
Mekanik Sayaç Saha Takip SistemiOrtaya çıkan sonuç
ASKİ bünyesinde beş ayrı saha operasyon uygulamasında mobil taraf geliştirildi; üçü tamamlanıp kullanımda, ikisi canlı entegrasyon aşamasında.
Bu çalışmadan kalan
Mobil saha uygulamasında en tehlikeli hata çökme değil, sessiz başarıdır. Gönderilmemiş bir kaydın "gönderildi" görünmesi, kullanıcının sisteme olan güvenini tek seferde bitirir — ve bu güven geri gelmez.
Web ve Backend Sistemleri
API, mobil ile veritabanı arasındaki sözleşmedir; sözleşme belirsizse sistem belirsizdir.
Karşılaşılan problem
Saha uygulamasının arkasında görev çekme, stok çekme, form gönderme, fotoğraf yükleme ve token yenileme akışlarının hepsinin tutarlı davranması gerekiyor. Bir uçtaki hata diğerinde veri kaybı olarak görünüyor.
Yaklaşımım
Katmanlı ve okunabilir bir yapı: API katmanında sürümleme, kimlik doğrulama ve yapılandırılmış log; Data katmanında hafif bir ORM ile açıkça yazılmış SQL. Sorguları repository katmanında topluyorum ki veritabanı tarafındaki bir değişiklik uygulamanın her yerine dağılmasın. Her uç için Postman koleksiyonu tutuluyor — dokümantasyon çalıştırılabilir olmalı.
Kullanılan teknolojiler
- ASP.NET Core (.NET 10)
- C#
- REST API
- JWT kimlik doğrulama
- API sürümleme
- Dapper
- Serilog
- PHP
- MySQL / MariaDB
- JavaScript
- HTML / CSS
- Postman
Örnek proje
ASKİ Saha API KatmanıOrtaya çıkan sonuç
Saha uygulamalarını besleyen ASP.NET Core API katmanında JWT tabanlı kimlik doğrulama, sürümlenmiş uçlar ve yapılandırılmış loglama ile çalışan uçlar geliştirildi. Kişisel tarafta ise framework ve CDN kullanmayan, tamamen yerel çalışan bir PHP/MySQL stok uygulaması yazıldı.
Bu çalışmadan kalan
Bir API'nin kalitesi mutlu yolda değil, hata yolunda belli olur. Doğru cevabı vermek kolaydır; hatayı doğru sınıflandırmak ve istemcinin ne yapacağını söylemek zordur.
Kurumsal Yazılım ve Entegrasyon
Kurumda hiçbir sistem yalnız yaşamaz.
Karşılaşılan problem
Bir saha uygulaması tek başına hiçbir işe yaramıyor. Personel kimliği kurumsal sicilden, abone bilgisi abone sisteminden, adres UAVT'den, fotoğraf ayrı bir dosya servisinden, yetki E-Portal üzerinden geliyor. Dış tarafta ise Başkent 153 üzerinden vatandaş başvuruları düşüyor ve doğru birime yönlendirilmesi gerekiyor.
Yaklaşımım
Dış sistemi doğrudan istemciye açmıyorum. Araya bir katman koyuyorum: dış API anahtarı yalnızca sunucuda kalıyor, kurum içi istemciler sadeleştirilmiş uçları kendi iç anahtarlarıyla kullanıyor. Sınıflandırma gibi belirsiz işlerde ise iki katmanlı bir yaklaşım: yapay zekâ önerir, kural motoru yedeklidir ve karar her zaman insana bırakılabilir.
Kullanılan teknolojiler
- ASP.NET Core
- REST / SOAP entegrasyonu
- JWT & kurumsal sicil
- E-Portal entegrasyonu
- UAVT / adres verisi
- Dosya ve fotoğraf servisleri
- Kurumsal proxy
- CORS & iç anahtar
Örnek proje
Başkent 153 Arıza Yönlendirme OtomasyonuOrtaya çıkan sonuç
Dış başvuru sisteminden gelen arıza kayıtlarını kurum içinde güvenli biçimde alan, sınıflandıran ve ilgili birime yönlendiren bir ara katman ile operasyon paneli geliştirildi.
Bu çalışmadan kalan
Entegrasyonda asıl risk teknik değil, sahiplik sınırıdır. Hangi hatanın kimin tarafında olduğu baştan tanımlanmazsa her arıza bir sorumluluk tartışmasına dönüşür.
Oracle ve PL/SQL
İşlem sınırını kim çiziyorsa sistemi o kontrol eder.
Karşılaşılan problem
Mekanik Sayaç projesinde sahadan gelen tamamlanmış işler sürekli hata veriyordu. Mobil taraf "gönderilemedi" diyor, oysa Oracle tarafında iş çoktan kalıcı olarak kaydedilmişti. Tekrar denemeler ise "kayıt artık bekleyen listede yok" hatasına düşüyordu.
Yaklaşımım
Suçu istemcide aramak yerine işlem sınırlarını izledim. Kök neden şuydu: veritabanı prosedürü kendi içinde commit ediyor, API ise atamayı ayrı bir transaction ile yönetiyordu. Prosedür commit ettikten sonra API'nin telafi adımı asıl işlemi geri alamıyordu. Bulguyu canlı kayıt kanıtıyla (mobil kayıt, başvuru durumu, takılan sayaç ve tarih) belgeleyip sorumlu katmanı net şekilde raporladım — üzerinde tek bir INSERT/UPDATE çalıştırmadan, yalnızca SELECT ile.
Kullanılan teknolojiler
- Oracle
- PL/SQL
- Stored procedure
- View & metadata analizi
- Transaction sınırları
- Idempotency
- Oracle Forms (analiz)
- Dapper / ODP.NET
Örnek proje
Mekanik Sayaç Saha Takip SistemiOrtaya çıkan sonuç
Pilotu bloke eden hatanın kök nedeni prosedür içi commit ile API telafi tasarımının çakışması olarak tespit edildi ve API ekibine somut değişiklik talebi olarak iletildi.
Bu çalışmadan kalan
Dağıtık bir sistemde en pahalı hata, iki katmanın da kendi içinde doğru olup birlikte yanlış olmasıdır. Prosedür içindeki tek bir commit, üstündeki bütün telafi mantığını sessizce geçersiz kılar.
CBS, Harita ve Saha Operasyonları
Konum bir veri alanı değil, bir kanıttır.
Karşılaşılan problem
Bir işin yapıldığını nasıl kanıtlarsınız? Asfalt yamada serilen alan, kazı kaydında koordinat, sayaç değişiminde adres — hepsi sonradan itiraz edilebilir. Üstelik GPS sahada her zaman çalışmıyor: bodrumda fix gelmiyor, açık alanda hassasiyet metrelerce değişiyor.
Yaklaşımım
Konumu tek başına değil; zaman damgası, personel sicili, cihaz kimliği ve fotoğrafla birlikte tek bir kanıt paketi olarak kaydediyorum. GPS beklemesini süresiz bırakmıyorum — zaman aşımı, hassasiyet değeri ve kullanıcıya görünür bir durum göstergesi olmalı. Rota hesabı çevrimdışıyken de bilinen bir referans noktasıyla çalışmaya devam ediyor.
Kullanılan teknolojiler
- GPS / konum servisleri
- Harita ve navigasyon entegrasyonu
- Rota sıralama
- Koordinat & adres eşleme
- UAVT
- Fotoğraf-konum kanıt zinciri
Örnek proje
ASKİ Asfalt Bölge ve Saha Takip SistemiOrtaya çıkan sonuç
Asfalt, sayaç ve su-kanal operasyonlarında kazı/iş kayıtları koordinat, ölçü ve öncesi-sonrası fotoğrafla ilişkilendirilerek uçtan uca izlenebilir hâle getirildi.
Bu çalışmadan kalan
Saha yazılımında konum alanını "opsiyonel" yapmak, sistemin kanıt değerini sıfırlar. Ama zorunlu yapıp GPS gelmediğinde kullanıcıyı kilitlemek de sahayı durdurur — aradaki dengeyi kurmak asıl tasarım problemidir.
DevOps, CI/CD ve Yazılım Altyapısı
Elle yapılan her yayın, bir gün yanlış yapılacak yayındır.
Karşılaşılan problem
Kurumsal ortamda mobil ve API tarafının aynı anda ilerlemesi, sürüm takibinin ve geliştirme-canlı geçişinin kontrollü olmasını gerektiriyor. Sahada çalışan bir uygulamada yanlış sürüm, veri uyumsuzluğu demek.
Yaklaşımım
Yayın öncesi doğrulamayı otomatik ve tekrarlanabilir tutuyorum: statik analiz, birim testleri ve release derlemesi her teslimden önce çalışıyor. Mekanik Saha Takip pilotunda teslim kriteri buydu — `flutter analyze` temiz, 44/44 test başarılı, release APK ve API derlemesi 0 hata 0 uyarı.
Kullanılan teknolojiler
- Azure DevOps
- YAML pipeline
- Git
- flutter analyze / flutter test
- Release APK derleme
- .NET release build
- Serilog
- IIS yayın
Örnek proje
Mekanik Sayaç Saha Takip SistemiOrtaya çıkan sonuç
Teslim öncesi otomatik doğrulama zinciri işletildi; pilot raporunda statik analiz, test ve release derleme sonuçları kanıt olarak belgelendi.
Bu çalışmadan kalan
CI/CD'nin değeri hız değil, tekrarlanabilirlik. Aynı komutla aynı çıktıyı üretemiyorsanız, canlıya çıkan şeyin ne olduğunu gerçekten bilmiyorsunuz demektir.
Yapay Zekâ ve Otomasyon
Yapay zekâ karar vermez; öneri üretir ve kararı hızlandırır.
Karşılaşılan problem
Başkent 153 üzerinden ASKİ'ye düşen başvurular serbest metin. Bir kayıt kartlı sayaç mı, kaçak su mu, fatura itirazı mı yoksa kanal arızası mı — bunu insan okuyup ayırıyordu. Hacim büyüdükçe ayrıştırma tek başına bir iş yüküne dönüşüyordu.
Yaklaşımım
Sınıflandırmayı öneri katmanı olarak kurguladım, karar katmanı olarak değil. Model bir birim öneriyor, güven skoru veriyor ve gerekçesini yazıyor; düşük güvenli kayıtlar insana bırakılıyor. Model anahtarı yoksa kural motoru devreye giriyor — sistem yapay zekâ olmadan da çalışmaya devam ediyor. Toplu aktarma, derin tarama ve otomatik mod operatörün hızını artırıyor ama son sözü elinden almıyor.
Kullanılan teknolojiler
- Claude API (sınıflandırma)
- Kural motoru (yedek)
- Güven skoru & eşik
- Python
- OpenCV
- Model eğitimi
- Otomatik raporlama
Örnek proje
Başkent 153 Arıza Yönlendirme OtomasyonuOrtaya çıkan sonuç
Başvuru kayıtları on iki kurumsal birime otomatik sınıflandırılıyor; operasyon panelinde güven filtresi, toplu aktarma ve "insana bırakılanlar" görünümü ile insan denetimi süreçte tutuluyor.
Bu çalışmadan kalan
Otomasyonun kabul görmesi doğruluk oranından çok geri alınabilirlikle ilgili. Kullanıcı sistemin önerisini düzeltebildiğini gördüğü anda güvenmeye başlıyor.