UYGULAMA NASIL YAPILIR?
"Bir uygulama yapacağım" cümlesi söylendiğinde herkesin aklında farklı bir şey canlanır. Birinin kafasında telefondaki ikon, birininkinde tarayıcıda açılan bir panel, birininkinde Windows başlat menüsünden çalışan eski bir araç var. Hepsi haklı çünkü "uygulama" tek bir şey değil — en az üç farklı dünyaya ait, birbirine benzeyen ama temelde farklı şekillerde inşa edilen üç tip yazılım.
Aşağıda uygulama kavramının ne olduğunu, hangi tiplere ayrıldığını, hangisinin ne zaman tercih edildiğini ve genel anlamda bir uygulamanın nasıl ortaya çıktığını kavramsal düzeyde anlatacağız. Kavram olarak uygulama yazılımı kullanıcının doğrudan iş için kullandığı her programı kapsar; biz buradan başlayıp tipleri ayıracak, sonra üretim adımlarına ineceğiz.
Uygulama Tam Olarak Nedir?
Uygulama, kullanıcının belirli bir işi yapmak için doğrudan etkileşim kurduğu yazılım parçasıdır. İşletim sisteminin kendisi uygulama değildir; o uygulamaların üzerinde çalıştığı zemindir. Banka şubesi açan, fatura ödeyen, fotoğraf düzenleyen, sipariş alan, rapor hazırlayan her program birer uygulamadır.
Üç soru ile bir yazılımın "uygulama" olup olmadığını ayırt edersiniz. Birincisi: son kullanıcı için mi yazılmış? İkincisi: somut bir iş çıktısı mı üretiyor? Üçüncüsü: bir kullanıcı arayüzü var mı? Üçüne de evet diyebiliyorsanız o yazılım bir uygulamadır. Sistem altyapısı sağlayan bileşenler (driver, kütüphane, servis) uygulama sayılmaz.
Uygulama Tipleri Nelerdir?
Genel kabul gören üç ana tip vardır. Bu tipler birbirine kapı açar ama temel inşa mantıkları farklıdır.
- Web uygulaması: Tarayıcı üzerinden çalışır, kurulum gerektirmez. Sunucudan veri çekip ekrana basar. Gmail, Trello, internet bankacılığı paneli, kurum içi raporlama ekranları bu kategoriye girer.
- Mobil uygulama: Telefon veya tablet üzerine kurulur, mağazadan (Google Play, App Store) indirilir. Kameraya, konum servisine, bildirimlere doğrudan erişebilir. WhatsApp, Spotify, Yemeksepeti tipik örnekler.
- Masaüstü uygulama: Bilgisayara kurulur, işletim sistemiyle doğrudan konuşur. Yüksek performans ve donanım erişimi sunar. Photoshop, Excel, AutoCAD, VS Code bu sınıftandır.
Bu üç ana tipin arasında melez (hybrid) ve çapraz platform (cross-platform) çözümler vardır. Bir uygulamayı tek kod tabanıyla yazıp birden fazla platforma dağıtmaya çalışan yaklaşımlar bu ara bölgeyi oluşturur. PWA (Progressive Web App), React Native, Flutter, Electron gibi teknolojiler farklı ara modeller sunar — ama altta yatan üç tip değişmez.

Hangi Tip Hangi Durumda Tercih Edilir?
Doğru tip seçimi projenin tüm geleceğini etkiler. Yanlış başlanırsa altı ay sonra yeniden yazma gündeme gelir. Karar verirken sorulması gereken birkaç temel soru var.
- Kullanıcı uygulamayı hangi cihazdan açacak? Çoğunluk telefondaysa mobil; ofis çalışanıysa muhtemelen web; yoğun grafik veya hesap yapan uzmansa masaüstü doğru seçim.
- İnternet bağlantısı zorunlu mu? Sürekli çevrimiçi olunamayacak senaryolarda (saha, depo, atölye) mobil veya masaüstü tercih edilir. Sürekli bağlıysa web her durumda en kolay yol.
- Cihaz donanımına erişim gerekiyor mu? Kamera, GPS, bluetooth, NFC kullanılacaksa mobil; tarayıcı, mikrofon, hard disk yoğun kullanım için masaüstü; standart formlar ve raporlama için web yeterli.
- Hedef kitle ne kadar dağınık? Tek bir kurumun çalışanları için web; geniş tüketici kitlesi için mobil; uzmanlaşmış küçük profesyonel kitle için masaüstü mantıklıdır.
- Bütçe ve süre nasıl? En hızlı ve en az maliyetli yol genelde web uygulamasıdır çünkü tek kod tabanı, tek dağıtım kanalı. Mobil iki ayrı işletim sistemine yazılırsa maliyet ikiye katlanır.
Pratikte bir başlangıç ekibi sıkça şu yolu izler: önce web uygulaması olarak çıkar, kullanıcı talebine göre mobil ya da masaüstü versiyon eklenir. Tersine ilerleme (önce mobil sonra web) daha pahalı bir yoldur ama tüketici odaklı ürünlerde gereklidir.
Uygulama Yapmak İçin Hangi Diller Kullanılır?
Her tipin doğal dil/teknoloji havuzu vardır. Hepsini öğrenmek zorunda değilsiniz; bir tipe odaklanıp derinleşmek başlangıç için en hızlı yoldur.
Web uygulaması için üç temel dil yer altı zeminidir: HTML (yapı), CSS (görünüm), JavaScript (davranış). Bu üçü öğrenildikten sonra arayüz için React, Vue veya Angular gibi framework'lerden biri seçilir. Sunucu tarafında ise Node.js, Python (Django/Flask), Java (Spring), PHP (Laravel) veya C# (ASP.NET) yaygın tercihlerdir. Temel kavramlar için MDN Web Docs en geniş referans kütüphanesidir. Web tarafına başlamak isteyenler için JavaScript eğitim programı yapısal bir başlangıç noktası sağlar.
Mobil uygulama için iki ana yol vardır. Native yol: Android için Kotlin (eski projelerde Java), iOS için Swift. Çapraz platform yolu: Flutter (Dart dili), React Native (JavaScript), .NET MAUI (C#). Native daha yüksek performans verir, çapraz platform geliştirme süresini kısaltır. Native Android tarafıyla ilgilenenler Android Kotlin eğitimi kapsamında dilin tamamını ve mobil mimariyi adım adım öğrenebilir.
Masaüstü uygulama için platform bağımlılığı belirleyicidir. Windows için C# (.NET, WPF, WinUI) klasik tercih, C++ (Qt) ise yüksek performans gerektiren senaryolarda baskındır. Çapraz platform masaüstü için Electron (JavaScript), Tauri (Rust + Web) veya yine Qt yaygın çözümlerdir. Java tarafında ise eski JavaFX ve Swing hâlâ kurumsal araç geliştirmede karşımıza çıkar.
Bunların yanında veritabanı her tipte ortaktır: PostgreSQL, MySQL, SQL Server, MongoDB veya hafif senaryolar için SQLite. Uygulamanın türü ne olursa olsun arka tarafta veri yönetimi olmadan iş yapan uygulama neredeyse yoktur.
Uygulama Üretiminin Genel Aşamaları
Tip ne olursa olsun bir uygulamanın ortaya çıkışı belirli bir akışta ilerler. Bu akış küçük projelerde günler, kurumsal projelerde aylar sürebilir ama yapı aynıdır.
- Fikir ve gereksinim: Uygulama hangi problemi çözecek? Kim kullanacak? Hangi ekranlar olacak? Bu aşamada çıktı genellikle birkaç sayfalık bir gereksinim dokümanı ve kullanıcı akış şeması.
- Tasarım (UI/UX): Wireframe, mockup ve interaktif prototip üretilir. Figma, Adobe XD veya Sketch bu aşamada öne çıkar. Kod yazılmadan önce ekranların kâğıt üzerinde oturması zaman kazandırır.
- Mimari ve teknoloji kararı: Tip seçildikten sonra hangi framework, hangi veritabanı, hangi sunucu mimarisi kullanılacak belirlenir. Mikroservis mi monolitik mi, kimlik doğrulama nasıl yapılacak gibi temel kararlar burada alınır.
- Geliştirme: Asıl kod yazma aşaması. Çoğunlukla sprint'lere bölünür (1-2 haftalık döngüler), her sprint sonunda çalışan bir versiyon ortaya çıkar.
- Test: Birim testler, entegrasyon testleri, kullanıcı kabul testleri. İyi uygulamalarda test geliştirme ile paralel ilerler, sona bırakılmaz.
- Yayınlama: Web için sunucuya deploy, mobil için mağaza onayı, masaüstü için installer paketleme.
- Bakım ve güncelleme: Uygulama yayınlandığı anda biten bir şey değildir; asıl iş ondan sonra başlar.
Bu aşamaların hiçbiri tamamen lineer değil. Test sırasında geri dönüp tasarımı değiştirmek, yayından sonra mimariyi revize etmek olağan. Modern süreçler bu geri dönüşleri öngörerek planlanır.
Tasarım ve Kullanıcı Deneyimi Tarafı
Kod kısmı uygulamanın yarısı. Diğer yarı kullanıcının ekranı görüp ne yapacağını anlaması. Teknik olarak mükemmel ama kullanılmayan uygulamaların çoğu UX tarafında kaybeder.
İyi bir uygulama arayüzünün ortak özellikleri şunlardır: ana eylem tek bakışta görünür, ikincil seçenekler ikinci plana çekilir, geri bildirim anında verilir (yüklenme, başarı, hata), hata mesajları kullanıcıyı suçlamaz ve çıkış yolu gösterir. Bu kurallar tip fark etmez — web, mobil, masaüstü hepsi için geçerli.
Mobilde dokunma alanı en az 44 piksel, web'de form alanları arası en az 16 piksel boşluk, masaüstünde klavye kısayolları gibi tipe özel kurallar da var ama temel prensip değişmez: kullanıcı düşünmek zorunda kalmasın.

Yayınlama ve Dağıtım Modelleri
Uygulama yazılır, sonra ne olur? Tip başına dağıtım yolu çok farklıdır ve bu farkı önceden bilmek planlamayı doğrudan etkiler.
- Web uygulaması: Bir alan adına bağlanır, sunucuya yüklenir, URL ile herkes erişir. Güncelleme anlıktır — yeni versiyonu deploy edersiniz, bir sonraki kullanıcı zaten yeni hâli görür. Mağaza onay süreci yoktur.
- Mobil uygulama: Google Play ve App Store onay süreçleri vardır. Apple tarafı genellikle daha sıkı; ilk gönderim birkaç gün, sonraki güncellemeler 1-2 gün sürebilir. Kullanıcı yeni versiyonu indirmeden hâlâ eski sürümü kullanır.
- Masaüstü uygulama: İndirme linki, MSI/EXE installer, mağaza (Microsoft Store, Mac App Store) veya kurumsal dağıtım sistemleri (Intune, SCCM) ile yayılır. Otomatik güncelleme mekanizmasını kendiniz inşa etmek zorundasınız.
Bu farklar yalnızca teknik değil iş modeli kararıdır. Bir SaaS ürünü web tarafında abonelik bazlı satarken, mobil uygulama in-app purchase modeliyle, masaüstü yazılım klasik lisans + yıllık bakım sözleşmesiyle gelir üretir. Tip seçimi gelir modelini de şekillendirir.
Bakım, Güncelleme ve Yaşam Döngüsü
Yeni başlayanların gözden kaçırdığı en pahalı şey: bir uygulama yayınlandığı an iş bitmez. Asıl maliyet sonra başlar. Geliştirme süresi 3 ay sürmüş bir uygulamanın sonraki 3 yıllık bakımı genellikle ilk geliştirmenin iki katı emek gerektirir.
Bakımda karşılaşılan tipik kalemler:
- İşletim sistemi yeni versiyonları çıktığında uyum güncellemeleri (özellikle iOS ve Android her yıl önemli değişiklik getirir)
- Bağımlılıkların güvenlik açıkları için kütüphane güncellemeleri
- Yeni kullanıcı talepleri için küçük özellik eklemeleri
- Performans düşüşlerinin tespiti ve düzeltilmesi
- Veri büyüdükçe ortaya çıkan ölçeklenme sorunları
- Eski tarayıcı/cihaz desteğinin ne zaman kesileceği kararı
Bu noktada teknoloji seçiminin uzun vadeli yönü görünür hâle gelir. Popüler ve aktif bir teknoloji havuzu seçilmişse 5 yıl sonra geliştirici bulmak kolay; egzotik bir teknoloji seçilmişse her bakım turunda zorluk yaşanır. Bu yüzden başlangıçta seçilen dil ve framework, sadece bugün için değil 3-5 yıl sonrası düşünülerek seçilir.
Sık Sorulan Sorular
Uygulama yapmak için programlama bilmek şart mı?
Kod yazarak yapmak istiyorsanız evet. Ama no-code/low-code platformlar (Bubble, Glide, AppSheet, Adalo) basit uygulamaları kod yazmadan üretmeyi sağlar. Sınırı şudur: standart şablonlarla çözülen iş süreçleri no-code ile iyi sonuç verir, özel iş kuralları olan veya yüksek performans isteyen uygulamalar için klasik kodlama hâlâ tek yol.
Web, mobil ve masaüstü uygulama arasında en kolay yapılan hangisi?
Genellikle web uygulaması. Tek kod tabanı yeter, tarayıcılar standart, yayınlamak için mağaza onayı yok. Mobil iki ayrı platform, masaüstü farklı işletim sistemi davranışları içerdiği için daha çok emek ister. Yeni başlayanların ilk projesini web olarak yapması alışılmış bir yoldur.
Tek başına bir kişi uygulama yapabilir mi?
Evet, ama kapsam küçük tutulmalı. Tek kişi tasarım, frontend, backend, veritabanı ve DevOps'u yöneterek küçük-orta bir uygulamayı 2-6 ayda çıkarabilir. Büyük ölçekli ürünler için ekip şart olur çünkü tek kişinin haftada üretebileceği iş hacmi sınırlıdır ve teknik çeşitlilik arttıkça uzmanlık gerekir.
Bir uygulamayı yapmak ne kadar tutar?
Çok geniş bir aralık. Basit bir form-tabanlı iç kullanım web uygulaması birkaç bin lira ile başlayabilirken, çok kullanıcılı kurumsal bir mobil uygulama yüz binlerle ölçülür. Maliyeti belirleyen üç ana faktör: ekran sayısı, entegrasyon adedi (ödeme, harita, kimlik doğrulama vb.) ve istenen platform sayısı.
Hangi uygulama tipi en hızlı kazanca dönüştürülür?
Hedef kitleye göre değişir. Tüketici (B2C) ürününde mobil uygulama kullanıcı kazanımı için en hızlı yol; kurumsal (B2B) ürünlerde web uygulaması daha hızlı satışa döner çünkü demo göstermek kolay, kurulum gerektirmez. Masaüstü uygulamalar genelde belirli bir profesyonel niş için yüksek lisans bedeliyle satılır.
Çapraz platform mu yoksa native mi seçmeli?
Eğer iki platforma da çıkacaksanız ve performans çok kritik değilse Flutter veya React Native gibi çapraz platform çözümler maliyeti yarıya indirir. Yüksek grafik, ağır animasyon, donanım yoğun işlem (kamera filtreleme, AR, oyun) gerekiyorsa native daha iyi sonuç verir. Çoğu standart iş uygulaması için çapraz platform yeterlidir.
Uygulamayı kendim yapmak ile bir ajansa yaptırmak arasında ne fark var?
Kendi yaparsanız öğrenme eğrisi uzar ama uygulama tamamen sizin kontrolünüzde kalır; uzun vadede bakımı da kendiniz yaparsınız. Ajansa yaptırırsanız hız kazanırsınız ama her güncelleme için aynı ajansa bağımlı kalırsınız. Uzun vadeli ürün düşünüyorsanız iç bünyede geliştirme daha sağlıklıdır; tek seferlik proje ise ajans mantıklı.
Uygulama yapmak yazılım kadar karar verme işidir. Tipi doğru seçmek, doğru teknolojiye yatırım yapmak, kullanıcının ihtiyacını teknolojiden önce koymak — bu üç şey doğru kurulduğunda kod yazma kısmı sürecin sadece bir aşaması olarak yerine oturur. Web ile başlayıp mobil ekleyen, mobil ile çıkıp masaüstü ile kurumsal pazara açılan, masaüstünden web'e geçen pek çok örnek var. Önemli olan ilk uygulamayı doğru kapsamla başlatmak; sonrası deneyimle hızla netleşir.



