Blog

Flutter ile herşey daha kolay!

Herkese merhaba,

Uzun zamandır bir yazı paylaşmadığımı farkederek genel olarak bir paylaşım yapmak istedim.

Biliyorsunuz eskiden yaptığım paylaşımlarda ios da swift , android de ise java ve kotlin kullanarak native mobil uygulama geliştirme yaptığımızdan ve flutter a geçtiğimizden bahsetmiştim.

Bu serüven devam ediyor ve yeni yapılan uygulamaları flutter da yapıyoruz. Ancak eskiden gelen bazı uygulamalar hala native swift ve java,kotlin de devam ediyor. Büyük uygulamaları flutter a geçirmek kolay değil tabiki ancak sıfırdan yazılan uygulamalarda flutter ın kolaylıklarını çok aramaya başladık.

Son 3 senedir flutter ile uğraştığımızı düşünürsek oldukça deneyimimiz oldu bu konuda. İlk başlarda eski yönteme göre alışması zor olsada bir kere alıştığınızda artık herşey daha hızlı ve kolay oluyor. Hele birde hazırladığınız bir çatı var ise bu iş artık her projede daha kolay hala geliyor.

Flutter ve Getx kütühanesi de bu işi beraber daha da hızlandırıyor.

Sizler için flutter getx örneği hazırladım. Bu örnekde flutter ı çalıştırmayı ve biraz ön bilgisi olanların anlayabileceği sade bir yapı mevcut. İçerisinde bir başlangıç seti mevcut. Nasıl bir çatı kurmalıyız? Hangi kütüphaneleri kullanmalıyız hepsi mevcut.

https://github.com/balabanferhat/FlutterGetXWithNavigation

Ayrıca sayfamdaki diğer flutter örneklerini de inceleyebilirsiniz.

https://github.com/balabanferhat


Mobil Yazılım Uzmanı

Mobil Yazılım uzmanı, mobil uygulama geliştirme konusunda uzmanlaşmış bilgisayar mühendisi yada programlama bölümlerinden mezun kişilere denir. Aynı zamanda mobil uygulama geliştiricisi, uygulama geliştiricisi, uygulama yazılımcısı , android yazılımcısı, ios yazılımcısı gibi isimleri de vardır.

Bu çok çeşitli isimlendirmelerden dolayı biraz kafamız karışabiliyor. Birde mobil uygulama geliştirme işine bağlı olarak yapılan backend yazılım geliştirme var ona daha sonra değineceğim.

Mobil yazılım uzmanı, android yada ios konusunda ayrı olarak uzmanlaşmış da olabilir. Her ikisinide yapıyor olabilir.

Birde normal uygulamar ile oyun uygulamaları arasında da farklar vardır. Oyun konusunda uzmanlaşmış bir mobil yazılımcı oyun konusunda daha iyi çözümler üretirken, iş yazılımları yada diğer mobil uygulamar konusunda uzmanlaşan bir mobil yazılımcı oyun konusunda zayıf kalabilir.

Eskiden bu kadar çeşitlilik yokken yazılım dünyasında mobil yazılımcı, web yazılımcısı , yada desktop yazılımcısı hatta backend yazılımcısı gibi ayrımlar pek yoktu. Ancak günümüzde o kadar çok çeşitlilik varki, artık yazılımcılar kendi aralarında uzmanlaşarak belli konuda daha ileri seviyelere erişiyorlar. Herkesin herşeyi bilmesi çok mümkün değil ve sürekli güncellenen ve gelişen bir teknolojiyi sürekli takip etmesi de çok zor. Bu yüzden mobil veya android,ios gibi yazılım uzmanlıkları ortaya çıktı.

Özetle, bir mobil yazılımcı mobil yazılım geliştirirken native yada hybrid ortamları tercih edebiliyor.

Native yazacak ise Android için Java programlama dilinde, ios yazacak ise Xcode swift yada objective-c programlama dilini seçebiliyor. Hybrid yazacak ise cordova gibi birçok hybrid çözümlerinden birini tercih ederek yazılım yapabiliyor. Hybrid vs Native yazımı okuyabilirsiniz bunla ilgili daha detaya burada girmeyeceğim.

Yazılımcı , tasarımcıdan gelen tasarımları yazılım arayüzlerine yerleştirerek gerekli algoritmalar ile iş akışını bu arayüzler ile bağlamak, gerekli testlerini yapmak ve tüm mobil cihazlar ile uyumlu çalıştırmak yükümlülüğüne sahiptir. Aynı zamanda store a yani app marketlerine çıktıktan sonra takip etmesi ve gerekli bugfix (hata düzeltmelerini) yapması gerekir. İşin arkasında durmak bunu gerektirir.

Aynı zamanda iletişim becerileri iyi olmalıdır ki müşteriden gelen bilgileri iyi analiz edebilmeli, geri bildirimlerde bulunabilmeli, işe katkı sağlayabilmelidir. Unutmamak lazım ki hiçbir müşteri o dünyada yaşayan mobil android ios yazılımcısı kadar bu işi bilemez. Çoğu zaman ui ve ux konusunda hem tasarımcıyı hemde müşteriyi yönlendirmeli ve olmayacak arayüzler ve kurguları eleştirmeli ve yapıcı rol oynamalıdır.

Detaylara önem vermelidir. Her açıdan bakabilmeli ve işi bittikten sonra bir kullanıcı gibi uygulamayı kullanıp atladığı yerler, açıklar, yada görünmeyen ama hata oluşturabilecek kullanımı etkileyebilecek bir yer varmı bakmalıdır.


Mobil Uygulama Nasıl Başarılı Olur

Merhaba,

Bu yazımda mobil uygulama yapılırken veya yaptıktan sonra neler yanlış yapılıyor başarıya giden yolda nelere dikkat etmek lazım onları paylaşacağım.

Mobil Uygulama konusundan bahsetmiyorum. Fikrin iyi olması yada kötü olması tabi önemli ancak buraya müdahale edemiyoruz. Fikrin iyi olduğunu yada mevcutta çalışan bir sistemin mobil uygulamasını yaptığınızı düşünelim.

Şu faktörler çok önemli:

  • Müşteri tarafında mockup – taslak hazırlanması ve brief verilmesi
  • Uygulamanın yapılmadan önce tasarımı ve prototip çalışmasının yapılması ve onaylanması,
  • Uygulamanın prototipe uygun ve native olarak (genellikle) kodlanması ve performansa dikkat edilmesi. Hybrid ise tercih edilen yöntem performansa çok daha fazla dikkat edilmesi,
  • Uygulamayı yapan ekibin işin tamamlanmasından sonra işin arkasında durması, fabric gibi bir sistem kullanarak çıkan hataların sürekli takip edilip giderilmesi. Crash rate yani uygulamada yer alan kritik çökme oranın %1 ve altında tutulması
  • Uygulamayı yazarken birçok cihaz çeşitliliğini düşünerek yazmak gerekiyor.
  • Store a çıkmadan yapılabildiği kadar çok çeşitli cihazlar ile testler yapılması ve mümkünse yazılımcı olamayan kişiler tarafından yapılması. Uygulamaya son kullanıcı gözü ile bakılıp test yapılması,
  • Müşterinin uygulamayı düzenli olarak test etmesi , yani uygulama bitti şeklinde düşünmemek lazım , store a çıktıktan sonra bile crash yaşanmasa dahi kurguda backend servislerde farkedilmeyen bozulma veya değişiklikler uygulamayı çalışmaz hale getirebilir.
  • Yaşayan uygulama haline dönüşmesi gerekir. Uygulamalar bir kere store a çıkıp öyle kalan uygulamalar olmamalı. Mutlaka revizyon, iyileştirme ve ek özellikle eklenmelidir ve uygulama kullanıcıları ile etkileşim halinde olup yenilikleri iletmek gereklidir.
  • Yeni sürüm çıktığınızda eski sürümlerin kullanılmasını engellemek gerekebilir. Bu yüzden hangi kullanıcı hangi sürümü kullanıyor loglamak , tutmak ve gerektiğinde uygulamayı açtığı zaman zorunlu güncelleme (force update) yaptırmak gerekmektedir. Altyapı hazırlanırken buda dahil edilmelidir.

Bu konular çoğu zaman atlanan ve dikkat edilmeyen konular olabiliyor. Mobil uygulama geliştirme konusunda her aşamada bunlara dikkat etmek ve bu yöntem ile geliştirmek gerekiyor. Zaman içinde bu konularda tecrübelenerek bu yöntemlerin ne kadar önemli olduğunu ortaya çıkardık ve her projede bu aşamaları uyguluyoruz.

Ana adımlarda şu şekilde olmalı

1 – Müşteri tarafında mockup – taslak hazırlanması ve brief verilmesi

2 – Önce tasarım onayı ve prototip çalışması yapılıyor

3 – Sonra kod yazım aşaması ve belirli cihazlar ile unit testler yapmak

4 – Müşteri QA testlerinin başlaması

5 – Store a çıkış

6 – Store sonrası bakım ve güncellemeler