Mobil uygulama geliştirmeyi öğrenmek: başlangıç noktası, ortak temeller ve proje basamakları
Beceri rehberi

Mobil uygulama geliştirmeyi öğrenmek: başlangıç noktası, ortak temeller ve proje basamakları

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 5 dk okuma

Mobil geliştirmeyi öğrenmenin en hızlı yolu doğru çerçeveyi bulmak değil, geçmişinize uyan bir başlangıç seçip her platformda geçerli kavramları küçükten büyüğe projelerle oturtmaktır. Bir yolda derinleşen kişi diğerlerine çok daha kolay geçer.

Bir bakışta

  1. Başlangıç teknolojisini ürün değil, sizin geçmişiniz belirler. JavaScript bilen biri ile programlamaya sıfırdan başlayan biri için en kısa yol farklıdır.
  2. Çerçeveler değişir, temel kavramlar kalır. Durum yönetimi, yaşam döngüsü, eşzamansız işlem, yerel veri ve izinler her mobil platformda karşınıza çıkar.
  3. Öğrenmeyi proje basamakları ilerletir, izlenen ders sayısı değil. Her basamak bir öncekine tek bir yeni zorluk ekler: kalıcı veri, ağ, kimlik doğrulama, cihaz özelliği, yayın.
  4. Bir proje, zor koşullarda da çalıştığında bitmiş sayılır. Ekran döndürme, bağlantı kopması ve hatalı veri gibi durumları sınamayan proje yarım kalmış demektir.

Başlangıç noktası: geçmişiniz hangi yolu kısaltır?

Mobil geliştirmeyi öğrenmek isteyenlerin ilk takıldığı soru hangi teknolojiyle başlanacağıdır. Ürün için teknoloji kararı ekip, bütçe ve performans gibi ölçütlerle verilir; öğrenen biri için ise asıl ölçüt mevcut bilgisidir. Amaç, ilk aylarınızı dili ve aracı değil mobilin kendisini öğrenmeye harcamaktır.

JavaScript ve React ile çalışmış biri React Native ile, bildiği dili ve bileşen mantığını mobile taşıyarak başlayabilir. Java ya da benzeri bir dille arka uç yazmış biri için Kotlin ile Android doğal bir devamdır. Hedefi açıkça Apple cihazları olan biri Swift ile iOS yolunu seçer. Programlamaya yeni başlayan biri ise tek bir native platformda ya da Flutter ile ilerleyebilir; burada önemli olan bir yolu seçip ilk projeyi bitirene kadar değiştirmemektir.

Hangi yolu seçerseniz seçin, ilk hedef tek bir platformda çalışan, bitmiş bir uygulamadır. Diğer yaklaşımları tanımak bundan sonra çok daha kolaydır, çünkü kavramların büyük bölümü aynıdır.

Şekil 1

İlk teknoloji, ürüne değil öğrenenin geçmişine göre seçilir

Programlama geçmişiniz hangi yöne yakın?
  1. JavaScript ve React ile çalıştımReact Native ile başlayınBildiğiniz dil ve bileşen mantığı mobile taşınır.
  2. Java ya da benzeri bir dille arka uç yazdımKotlin ile AndroidDil yapısı tanıdık gelir, odak mobil kavramlara kayar.
  3. Hedefim yalnız Apple cihazlarıSwift ile iOSPlatformun kendi diliyle doğrudan hedefe çalışırsınız.
  4. Programlamaya yeni başlıyorumTek bir native yol ya da FlutterSeçtiğiniz yolu ilk proje bitene kadar değiştirmeyin.
Kaynak: sayfa içeriğiMindset Institute

Her platformda aynı kalan temel kavramlar

Mobil çerçeveler birkaç yılda bir değişir, ama hepsinin çözdüğü sorunlar aynıdır. Öğrenirken bu kavramları çerçevenin adıyla değil kendi adlarıyla düşünmek, ileride başka bir platforma geçişi kolaylaştırır.

  • Durum ve arayüz: ekran durumun bir yansımasıdır; veriyi değiştirirsiniz, arayüz yeniden çizilir. Modern arayüz araçlarının neredeyse hepsi bu bildirimsel mantığı kullanır.
  • Yaşam döngüsü: kullanıcı uygulamayı her an arka plana atabilir, telefon gelebilir, ekran dönebilir. Veri bu geçişlerde kaybolmamalıdır.
  • Eşzamansız işlem: ağ isteği ya da dosya okuma arayüzü dondurmamalı; yükleniyor, başarılı ve hata durumları ayrı ayrı ele alınmalıdır.
  • Yerel veri: ayarlar, önbellek ve çevrimdışı kullanım için cihazda veri saklamak gerekir.
  • Navigasyon: ekranlar arası geçiş ve ekranlar arasında veri taşıma.
  • İzinler ve gizlilik: kamera, konum ya da bildirim gibi özellikler kullanıcı izni ister; izin reddedildiğinde uygulama çalışmaya devam etmelidir.

Bu kavramlar birbirinin üzerine kurulur: durum anlaşılmadan yaşam döngüsü sorunları, eşzamansız işlem anlaşılmadan ağ hataları çözülemez. Öğrenme sırası da bu yüzden önemlidir.

Şekil 2

Mobil kavramlar birbirinin üzerine kurulur

  1. Dil temelleriDeğişken, fonksiyon, sınıf, koleksiyon ve boş değer güvenliği.
  2. Arayüz ve durumEkranın durumun yansıması olduğunu kavramak, navigasyon.
  3. Yaşam döngüsü ve yerel veriArka plana geçişte ve ekran dönüşünde veriyi korumak.
  4. Ağ ve eşzamansız işlemYükleniyor, başarılı ve hata durumlarını ayrı ele almak.
  5. Mimari, test ve yayınKatmanları ayırmak, test yazmak, uygulamayı mağazaya hazırlamak.
Kaynak: sayfa içeriğiMindset Institute

Proje basamakları: her uygulama bir yeni zorluk eklesin

Öğrenmeyi en çok hızlandıran şey, birbirinin üzerine kurulan küçük projelerdir. Her proje bir öncekine yalnız bir yeni zorluk eklemelidir; aynı anda hem yeni bir kütüphane hem yeni bir mimari hem yeni bir veri kaynağı denemek, takıldığınızda sorunun nerede olduğunu bulmayı imkânsızlaştırır.

  • Tek ekranlı uygulama: bir not ya da sayaç ekranı. Durum ve arayüz ilişkisi burada oturur.
  • Liste ve detay: bir listeden öğe seçip detay ekranına geçmek, veriyi cihazda kalıcı saklamak.
  • Ağdan veri çeken uygulama: herkese açık bir servisten hava durumu ya da kitap bilgisi çekmek; yükleniyor ve hata ekranlarını tasarlamak.
  • Kimlik doğrulama ve bulut eşitleme: kullanıcı girişi, verinin cihazlar arasında eşitlenmesi, internet yokken çalışma.
  • Cihaz özelliği: kamera, konum, bildirim ya da arka plan işi; izin reddedildiğinde ne olacağını kurgulamak.
  • Yayın: uygulamayı mağaza gereksinimlerine göre hazırlayıp gerçek kullanıcıya açmak.

Bu sırayla ilerleyen biri, son basamağa geldiğinde mobil geliştirmenin neredeyse tüm temel konularıyla en az bir kez gerçekten uğraşmış olur.

Kendi kendine öğrenirken çalışma düzeni

Mobil geliştirmeyi kendi başına öğrenenlerin en büyük riski, ders izleyip ilerlediğini sanmaktır. İzlenen bir dersin değeri, aynı şeyi kendi projenizde dersi kapatıp yeniden yapabildiğinizde ortaya çıkar.

Verimli bir çalışma düzeni için:

  • Seçtiğiniz platformun resmî belgelerini birincil kaynak edinin; ikincil anlatımlar çoğu zaman eski sürümleri anlatır.
  • Hata ayıklayıcıyı erken öğrenin; değişkenin o anki değerine bakabilmek, deneme yanılmadan çok daha hızlıdır.
  • Emülatörün yanında en az bir gerçek cihazda deneyin; performans, dokunma ve ağ davranışı gerçek cihazda farklıdır.
  • Kodunuzu baştan bir sürüm kontrol sistemine koyun; neyi bozduğunuzu geri dönerek görebilmek öğrenmenin parçasıdır.
  • Açık kaynak bir mobil uygulamanın kodunu okuyun; başkasının aynı sorunu nasıl çözdüğünü görmek kavramları pekiştirir.

Kod asistanları ve yapay zeka araçları takıldığınız yeri hızla aşmanıza yardım eder; ama önerilen kodu satır satır anlamadan projeye eklemek, sonraki hatayı çözemeyeceğiniz anlamına gelir.

Bir proje ne zaman bitmiş sayılır?

Öğrenme projelerinin çoğu, ana akış çalıştığı an bitmiş sayılır. Oysa mobilde zorluk ana akışta değil kenar durumlardadır. Bir projeyi bitmiş saymadan önce şu kontrol listesinden geçirin:

  • Ekran döndürüldüğünde ya da uygulama arka plandan geri geldiğinde girilen veri korunuyor mu?
  • İnternet kesildiğinde uygulama çöküyor mu, yoksa anlaşılır bir mesaj mı gösteriyor?
  • Servis beklenmedik ya da eksik veri döndürdüğünde ne oluyor?
  • İzin reddedildiğinde kullanıcı uygulamayı kullanmaya devam edebiliyor mu?
  • Küçük ve büyük ekranda, yazı boyutu büyütüldüğünde arayüz bozuluyor mu?
  • İş mantığı için en azından birkaç birim testi var mı?
  • Projeyi başkası indirip çalıştırabilir mi; nasıl kurulacağı yazılı mı?

Bu listeyi geçen birkaç proje, yarım kalmış çok sayıda denemeden daha çok şey öğretir ve öğrendiklerinizi başkasına gösterirken de daha güçlü bir kanıt olur.

Öğrenirken sık yapılan hatalar

  • Aynı anda iki çerçeve öğrenmeye çalışmak: kavramlar karışır, ikisinde de ilk proje bitmez.
  • Her takılmada teknoloji değiştirmek: zorluk çoğu zaman çerçevede değil, henüz oturmamış bir kavramdadır.
  • Daha ilk projede katmanlı mimari kurmak: mimarinin neyi çözdüğünü, sorunu yaşamadan anlamak zordur.
  • Yalnız emülatörde test etmek.
  • Hata durumlarını sona bırakmak ve projeyi yalnız mutlu senaryoyla bitmiş saymak.
  • Kopyalanan kodu anlamadan kullanmak ve aynı hatayla tekrar tekrar karşılaşmak.

Bu hataların ortak noktası öğrenmeyi genişliğe yaymaktır. Mobilde derinlik, yani tek bir yolda birkaç uygulamayı gerçekten bitirmek, genişlikten daha hızlı sonuç verir.

Mindset programlarında nerede çalışılır?

Kod yazarak Android öğrenmek isteyenler için Android Uygulama Geliştirme (Kotlin) Temelleri programı, Kotlin dilinden Jetpack Compose arayüzüne, mimari, veri katmanı ve ağ isteklerinden test ve Google Play yayınına kadar yukarıdaki öğrenme basamaklarını Android üzerinde işler. Kod yazmayacak ama mobil ekip kuracak ya da teknoloji kararı verecek ürün sahipleri ve yöneticiler için Mobil Uygulama Geliştirme Stratejisi programı, ürün keşfi, teknoloji seçimi ve yayın sürecini karar verici gözüyle ele alır.

İlgili Mindset programı

Android Uygulama Geliştirme (Kotlin) Temelleri

Sık sorulanlar

Sık sorulan sorular

Android ve iOS'u aynı anda öğrenmeli miyim?

Başlangıçta önerilmez. İki platformu birlikte öğrenmek, her kavramı iki farklı dil ve araçla iki kez öğrenmek demektir ve çoğu zaman iki yarım projeyle sonuçlanır. Önce bir platformda birkaç uygulamayı bitirin; durum, yaşam döngüsü ve ağ gibi kavramlar oturduktan sonra ikinci platform çok daha hızlı öğrenilir, çünkü değişen şey kavram değil sözdizimi ve araçtır.

Mobil geliştirme öğrenirken sunucu tarafını da bilmem gerekir mi?

Başlangıçta gerekmez. Herkese açık servislerden veri çekerek ve hazır bulut hizmetleriyle kimlik doğrulama yaparak sunucu yazmadan ilerleyebilirsiniz. Ama bir uygulamanın sunucuyla nasıl konuştuğunu, bir isteğin ve yanıtın neye benzediğini, hata kodlarının ne anlama geldiğini anlamak şarttır. İleride kendi servisinizi yazmak isterseniz bu bilgi doğrudan işe yarar.

Öğrendiğim çerçeve gözden düşerse emeğim boşa gider mi?

Büyük ölçüde gitmez. Bir çerçeveyle gerçekten uygulama bitirmiş biri durum yönetimini, yaşam döngüsünü, eşzamansız işlemi, yerel veriyi ve mağaza sürecini öğrenmiştir; bunlar başka bir çerçevede de aynıdır. Değişen, sözdizimi ve kütüphane adlarıdır. Bu yüzden çerçeveyi ezberlemek yerine her yeni konuda hangi sorunun çözüldüğünü sormak, bilginizi kalıcı hale getirir.

Yapay zeka kod asistanlarıyla mobil geliştirme öğrenilebilir mi?

Destek olarak evet, yerine koyarak hayır. Bir hata mesajını açıklatmak, bir kavramı farklı biçimde anlatmasını istemek ya da yazdığınız kodu gözden geçirtmek öğrenmeyi hızlandırır. Ama asistanın yazdığı kodu anlamadan projeye eklerseniz, mobilin zor kısmı olan yaşam döngüsü ve kenar durum hatalarıyla karşılaştığınızda çözümü bulamazsınız. Önce kendiniz deneyin, sonra asistanın önerisiyle karşılaştırın.

Mobil Uygulama Geliştirme Nasıl Öğrenilir? Yol Haritası