Program geliştirmeye hazırlık, geliştirme sürecinin en zorlu aşamalarından biri. Şimdi işin plan, bütçe, yöntem, yönetim tarafını konuşacağız.
Lütfen yazının ilk kısmını okumayı unutmayın. Kimi konular ilk yazıda ele alındığı için, program geliştirmeye hazırlık aşamasını konuşacağımız bu yazıda üstünde durulmayacaktır.
İlk yazımda bilgisayarın ve işletim sistemlerin tarihinden girip, bilgisayar nedir, işletim sistemi nedir, program nedir gibi sorulara kısa cevaplar vermeye çalışmıştık. Bu yazımızda biraz daha kafa karıştıracak, daha çok cesaret kıracak, kısa yoldan zengin olmanın yollarını göstereceğiz.
Programın ne yapacağına karar vermek
Programımızın ne yapmasını istiyoruz? Program geliştirmeye hazırlık aşamasının temel ve en sıkıcı soru muhtemelen budur. Yazdığımız programın örneğin kullanıcının seçtiği resme onu daha güzel gösterecek çeşitli efektler/etkiler uygulamasını mı istiyoruz? (B612 örneğin), veya kullanıcının seçtiği resimleri bir formattan/biçimden diğerine dönüştürmesini mi istiyoruz? Yoksa istediğimiz programın işletim sisteminden önce çalışması ve yüklü işletim sistemlerini tespit edip arasında seçim yapmanıza olanak sağlaması mı? Kafanızda daha mütevazi bir fikir mi var?
Programın alternatiflerini tanımak
Programın yapacağı temel işleve karar verdik lakin belki de tekerleği yeniden icat ediyoruz. Belki de bizim parlak fikrimizi birilerinin de aklına gelmiş ve hayata geçirilmiş bile olabilir. O yüzden aynı veya benzer işlevleri yerine getiren programları tanımakta fayda vardır.
Programın lisansına ve gelir kaynaklarına karar vermek
Aslında buna daha sonra da karar verebilirsiniz. Öte yandan tamamen ticari amaçlarla planladığınız bir yazılımı, tamamen açık kaynak kodlu olmasını gerektiren bir araç üstüne inşa etmek gibi hatalardan kaçınmak için baştan belli sınırlara karar vermekte yarar var. Bu yazılım kullanımı tamamen ücretsiz lakin üstünde reklam barındırıyor olabilir.
Günümüzde pek çok cep telefonu uygulaması, internet sitesi bu yöntemi kullanmaktadır. Kimi yazılımların, özellikle oyunların hem reklamlı hem reklamsız seçenekleri bulunmakta olup yıllık veya uygulama ömrü boyunca reklamsız kullanım hakkı veriyor olabilir. Bir deneme sürümü olarak yükleniyor, lakin sonrasında aylık ücret karşılığı içerik veya hizmet sağlıyor olabilir (Netflix ve türevleri) veya kullanım oranına göre bir ücret kesiyor olabilir. Bu konu tamamen iş dünyasındaki gelişmelere göre sürekli yeni iş modelleri gelişmektedir.
Program geliştirmeye hazırlık aşamasında bütçe
Kişisel veya şirket içi kullanımı için yazacağınız bir program için bütçe oluşturmaya genelde gerek olmayabilir. Çalışan olarak çalıştığınız veya çalışmadığınız sorgulanmıyorsa, boşta kalan zamanınızda şirketinizin veya kendinizin işine yarayacak bir program yazabilirsiniz. Lakin programı bir müşteri için yazacaksanız, kesinlikle en baştan belirlenmesi gereken konu ne kadar bütçenin veya adam/saat ücretin harcanması planlandığı olabilir.
Programın çalışacağı platform veya platformlara karar vermek
Örneğin sağlıklı beslenme önerileri sunan bir programı yapmak istiyorsunuz ve isim olarak “İbn Sina ile Sağlıklı Hayat” koydunuz (henüz böyle bir program yok). Programın cep telefonlarında kurulabilir olarak çalışması gerektiğine karar verdiniz ve yine de dileyen internet sitesi üstünden de aynı bilgilere erişebilmesini istiyorsunuz. Üyelik gerekip gerekmeyeceğine ve üye olanların üye olmayanlardan hangi ayrıcalıklara sahip olacağına henüz karar vermediniz. Haydi, başlayalım.
Çalışma planının oluşturulması veya böl ve yönet!
Özgün fikrinizi elbette kendinize saklayın. Her zaman özgün fikirleri çalmak isteyen tipler olabilir. Tercihlerinizi bir Yazılım Mühendisi‘ne danışmaktan da çekinmeyin. Bir yazılım mühendisi genelde size projenizi makul aşamalara bölmeyi, tüm işi tek seferde yapmaya çalışmamayı önerecektir.
“İbn Sina ile Sağlıklı Hayat” uygulamamız için yerel depolama veya her uygulamanın kendi verisini kendi üstünde tutması, içeriklerimiz dinamik ve platform bazında sürekli olarak güncellenme ihtimali sebebiyle mümkün görünmüyor.
En makul çözüm, verinin veritabanına yüklendiği bir yönetim paneli oluşturmak, verileri API aracılığıyla uygulamalara göndermek olarak görünüyor.
Aşama 0: Örnek veya Temel Verinin Oluşturulması
Örnek Veri veya Temel Veri yönetim panelini oluştururken yazılımcıya yardımcı olacak, gerekli veri tabanı tablolarını, ilişkilerini, değer ve uzunluklarını oluşturmayı kolaylaştıracaktır.
Elbette kervan yolda dizilir diyen müşterinin bu aşamayı sulandırması, atlaması veya hiç veri sağlamaması da mümkündür.
Aşama 1: Model/Mockup Oluşturulması
Model, uygulamanın son aşamada nasıl görüneceğini, hangi verenin nerede sergileneceğini, hangi etkilerin/efektlerin kullanılacağını belirlemeye yardımcı olur. Elbette kimi tahmin edilemeyen ilişkileri ve ihtiyaçları da ortaya çıkartabilir.
Aşama 2: Yönetim Panelinin Oluşturulması
Yönetim panelinin temel içerik ekleme, değiştirme, silme işlemlerini yerine getirebiliyor olması kesin şekilde beklenmektedir.
Aşama 3: API’nin Sağlanması
Elimizde örnek veri veya temel veriler olduğuna göre artık API hizmetimizi uygulamalar için sağlayabiliriz.
Aşama 4: iOS Uygulamasının Hazırlanması ve Yayınlanması
iOS kullanıcılarının sağlıklı hayat konusuna Android kullanıcılarından daha istekli olduklarına dair ön yargısıyla müşterimizin uygulamasını önce iOS üstünde yayınlamaya karar verdik. Bu tercihte cihazlar arasındaki tutarlılığın ve benzerliğin çok olması da rol almış olabilir.
Aşama 5: Android Uygulamasının Hazırlanması ve Yayınlanması
Uygulamamız iOS sürümü yayınlanınca pek çok haklı ve haksız eleştiri aldık. Bu eleştiri ve iyileştirme önerilerine göre uygulamamızı hem daha kararlı hem de içerik olarak daha zengin hale getirdik ve artık Android gibi pek çok cihazın birbirinden tutarsız ekran, işlemci, bellek, sürüm, arayüz kullandığı lakin en çok kullanıcının olduğu pazara adım atmaya da hazırız.
Aşama 6: Bütçe aşımından dolayı uygulamamız için bir web sitesi oluşturmaktan bu aşamada, yeni bir gelir kapısı bulana kadar vazgeçtik. Yerine uygulamaların iOS ve Android sürümlerinin mağaza linklerini barındıran basit bir sayfa oluşturduk.
Hangi proje yönetim modelini kullandık?
“Böl ve Yönet” dedik lakin farkında olmadan şelale proje yönetim modelini kendimize uydurarak kullanmış da olduk. Bunun yerine daha güncel olan Agile yöntemini de kullanabilirdik. Lakin müşterinin düzenli güncellemelere, hata düzeltmelere ayıracak bütçesi yoktu. Uygulama çok tutuldu ve bir sağlık firması uygulamanın küçük ortağı olmayı kabul etti. Müşterinin bizden artık iki temel isteği vardı, uygulamaların sürekli olarak hata düzeltmelerinin sağlanması ve elbette ertelenmiş olan web sitesi konusunun hayata geçirilmesi. Elbette Agile yazılım geliştirme modeline geçmek de mümkündü.
Müşterinin yeni talepleri neler?
Müşterimiz web sitesinin hem cep telefonlarında hem de masaüstü bilgisayarlarda makul oranda çalışmasını ve pek çok özelliğinin kullanılabilir olmasını istiyor. Klasik olarak bir hakkımızda sayfası, uygulamanın uygun sürümlerinin indirilebileceği bir indirme sayfası, bu sayfa altında uygulama hakkında çeşitli ünlü/öncü/influencer kişilerin yorumlarının girilebileceği yönetilebilir bir alan istiyor. E-posta adresinin sitede açık olarak yer alması yerine bir iletişim formu oluşturulması ve bu iletişim formu üstünden gelenlerin isteklerin/taleplerin/yorumların kayıt altına alınmasını ve öneri, istek, hata gibi çeşitli kategorilere ayrılmasını ve bunların yönetilebilmesini ve kesinlikle arşivlenmesini istiyor. Elbette bu formun spam saldırılarına karşı korumalı olması da gerekiyor.
Son Not: Umarım yeni yazıyı okumaya yetecek kadar enerjiniz kalmıştır. Çünkü bir sonraki yazımızda çok daha derin konulara girmeye çalışacağız.