Öncelikle bu yazıyı okuyorsanız ya kendinize ait bir mobil uygulama geliştirmesinde ya da outsource ettiğiniz bir projede sıkıntılar çektiğinizi varsayıyorum, tıpkı piyasaya çıkamamış harika fikirlere sahip binlerce projede olduğu gibi.

Fikir?

Uygulama için bulduğunuz fikir hem çok önemlidir hem de pek önemli değildir!
Önemli olan fikrinizi hayata geçirdikten sonra onu ayakta tutabilmektedir. Teknik anlamda bir fikri mobil uygulamaya dönüştürmek ile onu pazarlamak ve ayakta tutabilmek arasında dünyalar kadar fark vardır. Uygulamayı geliştirmek ve mağazalarda yayınlanmasını sağlamak bir projenin %30’unu oluştururken onu ayakta kalabilir ve kar edebilir hale getirmek %70’lik kısmını oluşturur. Tabiiki bu uygulamanın geliştirme sürecinin önemsiz olduğu anlamını taşımıyor. Bahsettiğim gibi başarısız olan binlerce projenin büyük oranı teknik işlerin hatalı planlanması, yanlış yazılım geliştirme platformlarının seçilmesi, düşük bütçe ile büyük işlerin yapılabileceğinin zannedilmesi nedeniyle hüsrana uğramıştır.

Projelendirme

Yapmak istediğiniz o harika projeyi mutlaka ama mutlaka kağıt üzerinde projelendirin. Bu projelendirme bir çok insan için gereksiz ve can sıkıcı gelebilir ancak bahsettiğim şey sadece bir Excel sayfasını geçmeyecek bir Nakit Akış Tablosu oluşturmaktan başka bir şey değil aslında. NAT (Nakit Akış Tablosu) size bu fikrinizin aslında başarılı veya başarısız olacağını söyleyebilecek tek çözümdür. Görüşme yaptığınız bir çok insan bu fikri harika bulabilir, milyon dolarlar kazanabileceğinizden bahsedip sizleri heyecandırabilir ancak gerçekler çok daha farklı olacak.

NAT (Nakit Akış Tablosu)

Bir girişimcinin ilk doldurması gereken döküman işte budur. Tamamen dürüst ve gerçekçi şekilde Gelir/Gider ve harcamaların belirtilerek sonuç olarak ne kadar gelir elde edilebileceğinin formülü bu tabloda ortaya çıkmaktadır. Her bir ay için gelir ve giderlerin hesaplanarak bu ay ne kadar kar/zarar edildiği ve önümüzdeki 12 aylık süreçte nasıl bir durum oluşturacağı bu tabloda orataya çıkar.
Bir çok fikir, piyasaya çıktıktan sonra yaklaşık altı ay hiçbir gelir elde edemez ancak bu altı ay boyunca bu girişimin birçok masrafı olur. Bu tablo sayesinde sonraki altı ayda elde edilecek gelirin yıl sonunda girişimciye kar mı ettirecek yoksa zarar mı görebiliriz.
Örnek Nakit Akış Tablosunu Buradan İndirin

Gerçekçi Olun!

Serbest çalışan uygulama geliştiricilere en yoğun şekilde gelen işlerin başında “Instagram gibi ama daha detaylı uygulama istiyoruz!” projeleri vardır. Çoğu fikir sahibi yazılım geliştirme süreçlerinden bir haber oldukları için toz pembe hayaller kurabilmektedir. Facebook ile ilgili çekilmiş olan The Network adlı filmi izleyen birçok kişi heyecan içerisinde buna benzer projeler gerçekleştirmek için yola çıktılar ancak kimse filmdeki İş Planı hazırlama ve yatırımcılar ile yapılan görüşmeleri detaylıca araştırmamıştır. Mutlaka ama mutlaka fikrinizin hayata geçebilmesi için gerçekçi olun. Bir yazılım uzmanı Instagram’ı geliştiremez. Ona benzer bir uygulama yapabilir ama Instagram olabilmesi için onlarca mühendis ve yüzlerce bu işi pazarlayıp idare edecek personele ihtiyaç vardır. Eğer yukarıdaki belirttiğim NAT tablosunu gerçekçi bir şekilde doldurup sonucu pozitif çıktıysa girişiminize başlayabilirsiniz demektir.

Hedef Kitlenizi Belirleyin

Her uygulamanın bir hedef kitlesi vardır. İronik bir şekilde şeker ve balon patlatma oyunları çocuklar için değil kırk yaş üzeri insanlar ve kadınlar için geliştiriliyor. Onların kullanım alışkanlıklarına göre tasarlanıyor ve güncelleniyor. Facebook’un ilk çıktığı yıllarda üniversite öğrencilerine yönelik geliştirdiği tüm özellikler artık elli yaş üzeri insanlara hitap edecek şekilde yeniden dizayn ediliyor. Keza Instagram da bu duruma ayak uydurmak için ufak adımlarla tasarım değişikliklerine gitmeye başladı bile. Kimi zaman bu değişiklikler major olarak gerçekleştirilmek durumunda kalsada minör değişiklikler neredeyse her ay düzenli şekilde yapılıyor.

Önce Görsel Tasarımı Oluşturun

Projenizin kodlanma sürecine başlamadan önce mutlaka UI (User Interface) tabir edilen tasarımları oluşturun ve bir daha değiştirilmeyecek şekilde son noktayı koymaya çalışın. Elbette uygulama kodlanmaya başladığında veya ilerleyen süreçlerde görsel tasarımlarda değişiklik mutlaka olacaktır ancak bunlar temel tasarımı bozmayacak unsurlardır. Uygulamanınızın tasarımın önceden oluşturulması hem kodlanma sırasında kolaylık sağlayacaktır hem de bu projenin fiyatlandırma aşamasında uygulama geliştiriciye net fikirler sunacaktır. Bu süreçte freelance tasarımcılar ile çalışabilirsiniz. Piyasada oldukça başarılı freelance tasarımcılar sizlere yardımcı olacaktır ancak yine bu süreçte projenizi onlara çok iyi anlatmanız gerekiyor. Bir mobil UI tasarımcı aynı zamanda UX (User Experience – Kullanıcı Deneyimi) konusunda da bilgi sahibidir. Yani bir insan yapmak istediğiniz uygulamayı hangi eli ile kullanacak, nerelere daha çok tıklayacak, hangi buton hangi bölgede durursa kullanıcı daha rahat reaksiyon gösterecek gibi oldukça önemli konularda size yardımcı olacaktır.

Mutlaka bir kuzeniniz veya tanıdığınızın oğlu photoshop kullanıyordur, sakın bu tip bir hata yapıp tasarım gibi önemli bir konuyu uzman olmayan kişilerin yapmasına izin vermeyin.

Uygulamanızın kullanım kolaylığına sahip olmasının en büyük sebebi UI ve UX’in başarısına bağlıdır. Bütçede bu alanda kısıtlama yapmanız hiç sağlıklı olmayacaktır. Ve unutmayın eğer projenizin bir UI tasarımı yoksa hiç bir uygulama geliştiricisi size gerçek bir fiyat veremez!

TİD (Teknik İsterler Dökümanı) Oluşturun

Üşenmeyin, bilgisayarınızda boş bir Word dosyası oluşturarak uygulamanızda olmasını istediğiniz tüm özellikleri madde madde yazın. Bu dosya olmadan uygulama geliştirici yine size doğru bir fiyat veremez hatta ve hatta ileride mahkemelik bile olabilirsiniz.

Uygulama geliştirici sizinle bir sözleşme yaparken bu dökümanı da içerisine ekleyin. Bu dökümanda sizin geliştiriciden yapmasını istediğiniz maddeler ve özellikler olacaktır. Eğer bu döküman olmaz ve geliştirici sizin sözlü olarak söylediğiniz bir özelliği unutup kodlamazsa yapabileceğiniz pek bir şey olamaz. Söz uçar yazı kalır! Oldukça net bir şekilde geliştirici ile bu maddeler üzerinde mutabakata varmanız en önemli konudur. O binlerce hayata geçememiş projelerin yine çok büyük kısmını az önce anlattığım konu oluşturmaktadır. Hatta benim freelance olarak yapmış olduğum mobil uygulama işlerinin çok büyük bir kısmı bu tip anlaşmazlıklar neticesinde yarıda kalan projelerden oluşuyor. Hem sizin hem de uygulama geliştiricisinin zor durumda kalmaması ve anlaşmazlık çıkmaması için Teknik İsterler Dökümanı’nı mutlaka oluşturun.

Halen çalışmakta olduğum savunma sanayinde bir projedeki en önemli döküman budur. Bazen en ufak bir yazılım için bile altı ay TİD üzerinde çalışılır. Müşteri ile onlarca toplantının sonunda her iki tarafın da imzaladığı döküman artık bu iş için vazgeçilmez olup dışına çıkılamaz. Eğer TİD oluşturduktan sonra yeni bir madde daha eklemek isterseniz uygulama geliştirici ile mutabakata vararak bunu yapabilirsiniz ancak unutmayın anlaşmazlık durumlarında sözleşmeye eklenmiş bir TİD gibi yazılı bir döküman yoksa hiçbir mahkeme sizi haklı bulamayacaktır.

Yazılım Dilini Belirleyin

Teknik bilginizin olmaması sizi korkutmasın ancak bir uygulama projesi yapmak istiyorsanız işin kimyasına az da olsa hakim olmalısınız. Native uygulama ile Cross Platform kavramlarına hakim olmalısınız. Seçilecek olan yazılım dili yapacağınız uygulamanın büyüklüğü ile de değişiklik gösterebilir.

Örneğin çok basit bir haber uygulaması için CrossPlatform seçebilirsiniz. Croos Platform olarak tabir edilen şey tek bir yazılım geliştirme ortamı ile hem iOS hem de Android uygulamasının oluşturulabilmesidir. Bu platformlar basit çok fazla detaya sahip olmayan uygulamalar için kullanışlıdır. Tek bir kere kodlama yapılarak hem iOS hem de Android uygulaması yaratılabildiği için zamandan tasarruf sağlar ancak detaylı projeler için kesinlikle ama kesinlikle kullanılmasını tavsiye etmemekteyim.

Native uygulama olarak tabir edilen durum ise bir platforma ait kendi yazılım dili ile geliştirme yapmaktır. iOS Uygulamaları için Apple’ın sunduğu Xcode ortamında ister ObjectiveC dilinde isterseniz Swift dilinde geliştirme yapılabilir. ObjectiveC uzun yıllar Apple tarafından kullanıldı ve artık yerine Swift dili geliştirildi. Kısacası iOS ile bir uygulama geliştirmek için Swift dilini seçmeniz en doğrusu olacaktır. Keza Android için de buna benzer bir durum söz konusu. Google’un sahip olduğu Android Studio ortamında geliştirme yapabilmek için iki alternatif bulunmaktadır. Java ve Kotlin dilleri ile Android uygulamaları geliştirtilebiliyor. Kotlin tıpkı Swift gibi yeni bir dil ancak burada önereceğim dil kesinlikle Java’dır. Henüz Kotlin bilgisine sahip pek fazla yazılım geliştirici mevcut değil ve Java tüm dünyadaki en çok kullanılan dil olarak benimsenmiş durumda. Bu nedenle projenizde geliştireceğiniz iOS uygulaması için Swift, Android için de Java dillerini tavsiye etmekteyim.

Backend ve API Geliştiricinizi Bulun

API ve Backend bir mobil uygulamanın olmazsa olmazlarıdır. Veritabanı, sunucu yapılandırması gibi bir çok teknik detayları Backend uzmanları tarafından gerçekleştirilmektedir. Eğer çalışacağınız Mobil uygulama geliştiricisi bu konuda bilgi sahibi ise onunla çalışmanız en uygun çözüm olacaktır. Full Stack Developer kavramı tam olarak budur. Bir uygulamanın hem Backend hem de Frontend kısımlarını yapabilen geliştiricidir.

Çoğu zaman Backend ile Mobil geliştirici arasında uyuşmazlık ve iletişim sorunları yaşanabiliyor. Her ikisininde farklı kodlama tarzları doğal olarak ortaya anlaşmazlık çıkartabilir. Yine bu konuda mutlaka ama mutlaka Linux sunucular ve Mysql veritabanı kullanmanızı tavsiye ederim. İkiside ücretsiz çözümler olup piyasada bu ikisine hakim bir çok uzmandan rahatça destek alabilirsiniz. Mysql veritabanı küçük, orta ve büyük projeler için gayet uygun bir veritabanı çözümüdür. Eğer çok daha kapsamlı projeye sahipseniz NoSQL veritabanlarınıda yine Linux sunucularda rahatlıkla konfigüre edebilirsiniz.

Uygulama Geliştiricinizi Bulun

Bahsettiğim binlerce yarıda kalmış projenin büyük kısmı uygulama geliştirici ile olan sorunlardı. İşte bu sorunların temelinde hatalı yazılım dili ve hatalı geliştirici seçimi geliyor. Çoğu zaman projeyi ucuza mal etmek için uygulama geliştirici olarak üniversite öğrencisi veya junior tabir ettiğimiz çok tecrübesiz arkadaşlar seçiliyor.

Amacım bu arkadaşları kötülemek kesinlikle değil ancak birçok genç arkadaş yapamayacaklarını bildikleri halde ekonomik sıkıntılar nedeniyle projeleri çok uygun fiyatlara kabul etmekteler. Bu konuda onları suçlamak haksızlık olacaktır.

Ancak TİD gibi bir döküman olmadan ve çok ucuza iş yapabilmenin getirdiği heyecan ile büyük projeler maalesef sekteye uğruyorlar. Yukarıda belirttiğim gibi hem iOS hem de Android uygulamasını geliştirmek için tek bir geliştirici ile çalışabileceğiniz gibi işi ikiye bölebilirsiniz. İki ayrı uygulama geliştirici ile çalışmak size zaman kazandıracaktır ancak her ikisini de geliştirebilen birisi ile çalışmanın da oldukça faydası olacaktır. Bunun en büyük faydası tek bir kişinin projeye daha hakim durumda olacağıdır. Eğer iki kişi ile çalışılacaksa bu iki geliştiricinin de birbirleri ile uyumlu çalışması elzemdir.

Fiyatlandırma ve Termin

İşte en merak edilen başlık bu. İlk cümle olarak meşhur atasözümüz ile başlamak istiyorum. Ucuz etin yahnisi yavan olur! Yazılım geliştirme alanında bu atasözü oldukça doğrudur. Ancak ucuza da yapabileceğiniz projeler elbette vardır.

Projeniz için farklı fiyatlandırma methodları bulunmaktadır. Birincisi projeniz için bir şirket kurup mobil uygulama geliştiricileri naaşlı personel olarak işe alabilirsiniz. İkinci seçenek olarak projenin kodlama bölümü outsource olarak bir yazılım şirketine verebilirsiniz. Üçüncü olarak ta freelance uygulama geliştiriciler ile çalışabilirsiniz. Bu üç opsiyonun da farklı maliyetleri olacaktır.

Freelance çalışma olarak maliyetlerin belirlenmesi için de iki farklı seçenek bulunuyor. İlk seçenek adam/gün ücreti belirlemektedir. Geliştirici size bu projenin kaç gün süreciğini belirttikten sonra günlük fiyatını belirterek bir maliyet çıkartacaktır. Diğer seçenek ise direk projeye göre bir fiyat belirlemek olacaktır ki benim kullandığım yöntem budur. Genellikle projeye ait TİD ve UI tasarım incelendikten sonra termin süresi ve projenin maliyeti ortaya çıkar. Adam/Gün birimini kullanmamamın bir çok nedeni var ama en önemlisi gün kavramının her geliştiriciye göre farklı olmasıdır. Kimi geliştirici bir günde işin %1’lik kısmını yapabilecekken kimi geliştirici %3 yapabiliyor. Veya projenin daha çabuk bitip başka projelere başlaması için daha yoğun çalışabiliyor bu nedenle adam/gün kavramı freelance projelerde pek geçerli değildir.

Önerilerim

Freelance geliştiriciler ile çalışmaya karar vermişseniz yukarıda yazdığım TİD ve UI tasarımlarınızı mutlaka hazırlayın çünkü bunlar sizin projenizin temelleri olacaktır. Geliştirici size bu bilgiler ışığında termin süresi ve fiyat belirttikten sonra sözleşmenizi mutlaka ıslak imzalar ile gerçekleştirin. Her ne kadar teknik dökümanlar ve hukuki sözleşmeler yapılacak olsada bir projenin sağlam oluşabilmesi için karşılıklı iyi niyet ve emtapi olmazsa olmazdır. Hayat şartları nedeniyle termin süresi artabilir veya ödemelerde gecikme yaşanabilir. Tüm bu durumlarda karşılıklı iyi niyet projenizin ortaya çıkmasını daha da kolaylaştıracaktır.