Kötü haberden başlayalım. Çok geç kaldınız! İyi haber ise bu yazı tam size göre. Yapılan bir araştırmaya göre bir insan cep telefonuna ortalama altı adım uzaklıkta kalabiliyor. Şahsım adına bu altı adım benim için fazla bile. Hal böyle iken, yaptığınız işi, onu yapış şeklinizi veya düşündüğünüz yeni fikri tekrar ele almakta fayda olabilir. Yazılım dünyasında yeni kural, mobil olmadan olmaz… Önce mobil.
“Mobile First” mottosuyla yazılımda altın kural haline gelen bu yaklaşım hızlıca benimsenmeye başlandı. “Cloud First” mottosu da artık altın kural haline geldi ama yazımızın konusu mobil olduğu için ona değinmeyeceğim. Çok uzatmadan mobil yazılım geliştirme stratejisinin nasıl oluşturulması gerektiği üzerine dünyadaki kullanım oranlarını, yaygın olan varsayımları ve naçizane görüşlerimi paylaşayım.
Bugün itibariyle, şu an kodlama yapan her 100 mobil yazılım geliştiriciden 42 tanesi Android platformunda yazılım geliştirirken, 32 tanesi IOS ortamında geliştiriyor. 10 tanesi Windows Phone, 3 tanesi Blackberry, geri kalan 13 tanesi ise diğer platformlarda yazmaya devam ediyorlar.
Strateji belirleme kurallarını vermeden önce bu oranların hangi yazılım dilleri ile de geliştirildiğini kısaca paylaşayım, zira teknik ekibiniz için önemli. Android geliştiren 42 yazılımcının, 22 tanesi java diliyle kodlarken, 5 tanesi Html/CSS/JS ile kodluyor. Geriye kalanlar sırayla, görsel geliştirme araçlarını, c/c++ dilini tercih ediyor. IOS tarafında ise 32 geliştiricinin 17 tanesi objective-C, diğerleri sırayla html/css/js; c++;c# kullanıyorlar. Windows Phone geliştiren 10 yazılımcının 7 tanesi c# ile geliştirme yapıyor.
Görüleceği üzere tablo biraz karışık. Çok fazla sayıda da platform var. Yazılacak uygulamanın hangi platformlarda çalışacağı çok önemli. Eğer hem IOS hem Android hem Windows hem web hem de Blackberry platformalarını destekleyecek ise çok fazla sayıda teknik bilgi barındırmanız gerekiyor.
Yalnız, bu konuyu her düşündüğümüzde Windows tabanlı masaüstü uygulama yaşam döngüsü geliyor aklıma. İlk zamanlar kolaylığı ve hızı düşünüldüğünde exe uygulama tercih nedeni olmuş, dağıtım, versiyon yönetim gibi dezavantajları gözardı edilmek zorunda kalınmıştı. Daha sonra internet hızlarının artması ile birlikte web dönemi başladı ve tüm dezavantajlar giderilmiş, exe uygulamalardan genelde vazgeçilmiş ve web de merkezi bir noktada birleştirilmişti. Gartner raporuna göre de durum ve gidiş benzer yaşam döngüsünü yaşadığımızı gösteriyor aslında. Raporda 2016 yılı için, kurumsal tarafta geliştirilen her 100 mobil uygulamanın 60 tanesinin cross platformu destekleyen tek bir ortamda yazılacağı öngörülüyor.
Peki stratejimizi belirlemediysek ya da değişiklik düşünüyorsak nasıl karar vereceğiz? Önümüzde 3 alternatifimiz var. Native, web ve bunların birleşimi olan hibrid. Şimdi kısaca bunların avantajları ve dezavantajlarına değinelim.
Native uygulamalar o platformun dili ile yazılan ve o platformda derlenen uygulamalardır. Cihazın özelliklerinin tamamını kullanabilir yetkinlikte. Kullanıcı arayüzü olarak ise en üst seviyede deneyim sunabilirsiniz. Diğer alternatiflere göre uygulamanızın en hızlı çalışacağı yöntem de budur. Dezavantajı ise geliştirme maliyeti yüksektir. Birden fazla platform desteğiniz olacaksa (ki olmalı) her platformda ayrı ayrı uzmanlık barındırmalı ve yazılım sürecini her platform için ayrı ilerletmelisiniz. Bu ciddi bir maliyet kalemi olarak karşımıza çıkıyor.
Web uygulamalar html, css, javascript dilleri ile yazılan uygulamalardır ve geliştirme maliyeti düşüktür. Ancak bu tekniklerin cihazın özelliklerine erişimi kısıtlıdır. Kullanıcı arayüzü native uygulamadaki kadar deneyimi sunamaz. Uygulama hızı da native uygulamaya göre daha yavaş olacaktır.
Hibrid yöntemi ise bu iki alternatifin hem avantajlarını kullanalım, hem de dezavantajlarını yumuşatalım diye geliştirilmiş. Cihazın özelliklerini kullanma konusunda, kullanıcı arayüzü ve hız konusunda web den iki adım daha önde, native’den bir adım geride ortam sağlıyor.
İşin daha fazla detayı olabilir ama bu kadar bilgi aslında stratejiyi geliştirmek için yeterli. Ancak benim önerim stratejinizi kurum bazında değil, yazacağınız uygulama bazında belirlemek olacak. Uygulamanız cihazın özelliklerini ne kadar kullanacak, yapacağınız işte performansa ne kadar ihtiyaç duyacaksınız ve elinizdeki teknik ekibin yetkinliği ne durumda? Bu soruların yanıtları size yolunuzu gösterecektir.
Yolunuz açık olsun…