
İster ilk defa ister daha önceden defalarca yazılım projesi geliştirilmiş olsun yeni bir projeye başlamak için oldukça kapsamlı bir çalışma sürecinin olduğu nazara alındığında bu makalenin genel bir bakış açısı sunmak üzere yazıldığı ortadadır. Zira piyasa analizleri, kurumsal kimlik tasarımları, ürünün hazırlanması, hedef kitleye pazarlanması, sosyal medyadaki bilinirliğinin sağlanması, kullanıcılardan (ya da müşterilerden) geri dönüşlerin sağlanması, bu geri dönüşlerin (aslında toplanan verilerin) analiz ve yorumlanması ile elde edilen sonuçların ürün geliştirmede ve etkin pazarlamada kullanılması hep detaylı bir şekilde çalışılması gereken süreçleri ifade eder.
Elbette bu makale, girişim heyecanını yatıştırmak için değil eğrisiyle doğrusuyla, avantajları ve dezavantajlarıyla bir yazılım projesine başlarken nelere dikkat edilmesi gerektiği hususunda bir bakış açısı sağlamak için hazırlanmıştır. Bugün global ölçekte faaliyet gösteren, ün yapmış şirketlerin sadece sosyal medya analizleri yaptırmak için kurdukları ekiplere astronomik ücretler ödedikleri bilinen bir gerçektir.
Bir yazılım projesi geliştirirken aşağıda başlıklar hâlinde vermeye çalıştığım hususlara göz atılması şüphesiz sizlere ilave bir katkı sağlayacaktır. Başlayacağınız proje ile ilgili araştırılması gereken tüm konular, gözden geçirilmesi gereken detaylar ve istenmeyen durumlara karşı almanız gereken önlemler için şu hususlara dikkat etmeniz şüphesiz yararınıza olacaktır.
Nasıl Bir Proje?
Bir proje, dahası bir yazılım projesi üretme fikrinde iseniz dünyada ya da en azından çevrenizde bir eksikliği, bir zorluğu görmüşsünüz demektir. Zira nehir akışında iken neden yatağını değiştirme gereksinimi duyasınız? Bu gerçeklikten hareketle hazırlanması düşünülen proje, bir eksikliği, bir zorluğu ortadan kaldırmaya ya da en azından azaltmaya yönelik bir çözüm getirebilecekse ilk aşama tamamlanmış demektir. Yani bu konuda ilk düşünülmesi gereken husus, “böyle bir projeye ihtiyaç var mı?” sorusudur.
• “Böyle bir projeye ihtiyaç var mı” sorusunun cevabı piyasa analizlerinde saklıdır. Bu sebeple analiz yaptırarak iş fikrini değerlendirin. Zira bu, emek – fayda dengesinde sizin nerede duracağınızı belirleyen temel faktördür. Maden şirketleri bile bir yerde maden ocağı açacakları zaman civarda ne kadar maden rezervi olduğunu metreküp biriminden hesaplatırlar. Zira bilirler ki örneğin (1) birim tutarında bir maden rezervi için (10) birim tutarında yatırım yapmak iş gücü ve zaman kaybıyla birlikte en az (15) birim zarar demektir.
Maden örneğinde olduğu gibi yazılım projesi sonunda katlanılan maliyetlere karşılık yazılım projesinin getirisi ne olacaktır? Öncelikle bu hususların analiz edilmesi, tüm yönleri ile ortaya konulması gerekmektedir. Bu analizler yapılırken üç – beş eşi dostu telefonla arayıp “böyle bir proje düşünüyoruz, tutar mı” şeklindeki bir yaklaşımın bilimsellikten çok uzak olduğu su götürmez bir gerçekliktir.
Yaptırılan analiz çalışmaları neticesinde projenin getirisi harcanan para, emek ve mesai karşısında tatmin edecek düzeyde değilse böyle bir projeye en başından itibaren girilmemesi daha iyidir. Dilimizin söyleyiş zenginliği olarak “bir dirhem bal için bir çuval keçiboynuzu çiğnemek” deyimi bu durumları anlatmak için kullanılır.
Yapılan işin faydası konusunda şu karikatür de tebessüm ettiren güzel bir örnektir:
Yeteneklerinizi Tanımlayın
• Projenin rantabl olduğuna karar verildiğinde bir girişimci olarak zayıf ve kuvvetli yönlerin muhakkak surette değerlendirilmesi gerekir. Kişinin ne yapabileceği konusunda yeteneklerinin farkında olması kullanıcı (ya da müşteri) karşısına çıktığında her şeyden önce kendisine duyduğu güvenle pazarlık gücünü artırır. Bugün piyasa koşullarında borca batık hâle gelen kişi ya da şirketlerin temel sorunu iş yapamamaları değil, iş konusunda yetenek ve yeterliliklerinin derecesini bilmemeleridir.
Kendi zayıf ve güçlü yanlarınızı kontrol ederken marka değerinizin farkında olun. Henüz markanız yoksa da bu markayı yüksek bir değerle piyasaya sürün. Buna en güzel örnek Samsung’un Note 7 faciasıdır. Malum olduğu üzere Samsung, ürettiği Note 7’lerin aşırı ısınması ve bataryalarının patlaması, alev alması sorunlarıyla hayli uğraştı ve en sonunda piyasadan toplatma kararı aldı. Bu başarısızlığın üzerine Samsung Note 8’i piyasa sürdüğünde Türkiye’deki ortama satış fiyatı 5.000 TL civarında idi. Note 7 faciasının üzerine Note 8, 2.000 – 3.000 TL gibi bir fiyatla satışa çıksa idi emin olun kimse cihazın yüzüne bakmazdı. Global ölçekte de olacak olan aynı şeydi. Ama Samsung’un, marka değerinin farkında olması sebebiyle bugün Note 7’nin başarısızlığı neredeyse konuşulmuyor bile.
• Kişisel ve işle ilgili hedeflerin de belirlenmesi ve sürekli güncel tutulması gerekir. Proje bittiğindeki yazılımınızın sürümü örneğin v.1.0 ise v.1.0 ile v.5.9.52 sürümleri esnasındaki hedeflerinizde bir değişme yoksa bir şeyler yanlış gidiyor demektir.
• Mevcut ve potansiyel finansal kaynaklarınızı gözden geçirin. Neticede iktisadın temeli, sınırsız insan ihtiyaçlarının sınırlı kaynaklarla karşılanması hedefine dayanır. Bu yazılım projesi için ne kadar kaynağınız var ve ne kadar daha kaynak ortaya koyabilirsiniz. Neticede projenin hacmini belirleyecek olan husus temel olarak bu parametredir.
Finansal Risklerinizi Tanımlayın
• Finansal risklerinizi tanımlayın. Piyasa koşulları ve mevcut ekonomik parametreler, projeniz üzerinde birinci derecede etkilidir. Zira yazılım dediğimiz şey ekmek kadar, su kadar temel bir ihtiyaç değildir ve insanlar ekonomilerinin kırılgan olduğu dönemlerde yazılım satın alma fikirlerini öteleyebilirler. Nitekim ben de ülkemizde dolar 3.5 TL civarında iken satın almadığım yazılımları dolar 5.40 TL seviyesinde iken almıyorum. Ya kendim yazma yoluna gidiyorum ya da öteliyorum. İnsanlar da öyle. Yazamayanlardan bir kısmının illegal yollardan temin etme çabası içinde olduğu aşikâr. Bunu Google’da bir programın adını aradığımızda, en çok arananlar arasında program sonuna “full download”, “crack”, “nulled” gibi kelimeler eklenerek yapılan aramalardan da görebiliyoruz.
• Faaliyete geçiş maliyetini ve faaliyete geçeceğiniz yeri saptayın. Neticede kazanmaya başlamak için katlanılacak maliyet sizin dayanma gücünüzü gösterecektir. Diğer taraftan her şeyin İnternet ortamında gerçekleştiği piyasa koşullarında faaliyet yerinin çok önemli olmadığı düşünülse bile güvenilirlik açısından fizikî bir adres, sabit bir telefon ve faks küçük ama önemli bazı detaylardır.
• Kapsamlı bir pazar araştırması yapın. “Böyle bir projeye ihtiyaç var mı” sorusuna cevap ararken söylenilen hususlar kapsamlı pazar araştırması açısından da muhakkak önemlidir. Neticede dünyanın en iyi yazılımını üretseniz de bunu sadece siz kullanıyorsanız zarar büyük demektir.
Hedef Müşterilerinizi Tanımlayın
• Hedef müşterilerinizi tanımlayın ve müşterilerinizi gruplayın. Müşterililerinizi gruplamanız demek aslında ürününüzü gruplamanız demektir. Böylece kimden ne kadar ücret talep edebileceğinizi de belirlemiş olursunuz. Yazılımınızı örneğin “Basic”, “Standard” ve “Premium” olarak sunduğu imkânlar bakımından üç gruba ayırdığınızı düşünürsek “Basic” sürümünün öğrenci ve ev kullanıcılarına daha düşük fiyatla, “Standard” sürümünün bireysel bazda çalışan örneğin avukat, doktor, hâkim – savcı gibi kişilere orta fiyatla ve “Premium” sürümünün çoklu kullanıcı desteği verdiğiniz üniversiteler, kütüphaneler gibi kurumlara, sunulan makro hizmetler dolayısıyla yüksek fiyatla pazarlanması en optimal çözüm olarak görülmektedir.
• Mevcut ve potansiyel rakiplerinizi tanımlayın. Bu, sizin piyasa rekabet koşullarında ayakta durmanızı sağlar. Hatırdan çıkarmayın ki dünyanın en iyi yazılımını dahi üretmiş olsanız piyasa koşulları sizin için de geçerlidir. Aynı konuda sizden daha iyisini üreten bir kişi ya da firmanın ürünü için istediği fiyattan daha fazlasını istemeniz hâlinde ürününüzü satamayacağınız son derece açıktır.
• Pazarlama planınızı geliştirin. Mevcut ve potansiyel rakiplerinizi tanımlarken eş zamanlı olarak düşünmeniz gereken şeylerden bir tanesi de pazarlama planınızı geliştirmektir. “Böyle bir proje düşünüyoruz, tutar mı” şeklindeki söyleme karşılık eş – dost tavsiyesi ile yazılımınızın ünleneceğini ve daha çok kitleye ulaşır hâle geleceğini düşünmeyin. Evet, eş – dost tavsiyesi (bilimsel manada müşteri memnuniyeti) önemlidir ve göz ardı edilemez. Ancak büyümek için yeterli değildir. Bugün bilişim dünyasında söz sahibi hiçbir şirketin eş – dost tavsiyesi ile büyüdüğü söylenemez.
Kurumsal Kimlik
Bir yazılım projesi geliştirmek isteniyorsa nasıl bir proje geliştirmek istendiği detaylı bir şekilde ortaya konulduktan sonra ilk düşünülmesi gereken husus projenin kurumsal kimliğidir. İlk etapta henüz proje olarak ortaya çıktığında adının, sloganının, logosunun, renginin, Web sitesinin düşünülmesi ve buna ilişkin çalışmaların yapılması gerekir.
Proje adı netleşir netleşmez sosyal medya hesaplarının oluşturulması da öncelikli işlerdendir. Yani proje adı duyulur duyulmaz bundan çıkar bekleyen fırsatçı bir grubun varlığı göz ardı edilmemelidir. Bu sebeple sosyal medya hesaplarının oluşturulması ilk ve öncelik iştir. Sosyal medya hesapları oluşturulurken her sosyal medya sitesinde aynı ismin kullanılmasına özen gösterilmelidir. Örneğin proje adınız “Lex Fori” ise Facebook’ta “Lex_fori”, Twitter’da “LexFori” ya da Instagram’da “LexFori_Turkiye” gibi isimler kullanmayın. Bunun yerine örneğin “Lex-Fori” ya da “LexForiTR” gibi sosyal medya da standartlaştırdığınız tek bir isim kullanın. Zira akılda kalıcılık önemlidir ve ziyaretçiden farklı farklı isimleri akılda tutmalarını beklemeyin.
Projenin Adı
Yukarıda genel olarak bir yazılım projesi geliştirirken dikkat edilmesi gereken hususlara değinildikten sonra özellikle “Kurumsal Kimlik” başlığı altındaki açıklamalar dikkate alınarak bir proje adı belirlemek gereklidir. Bu proje adı, daha sonra yazılımın adı olacaktır. Salt proje ile bağlı kalınmadan genel geçer bir ad seçilmesinde fayda vardır. Zira proje bazlı bir isim seçildikten sonra proje bitip çalışmalar ürün olarak adlandırılacak seviyeye geldiğinde bu proje adının değiştirilmesinde ciddi sorunlar ve ikilemler ortaya çıkabilmektedir.
Proje adının sonradan değiştirilmesinde ortaya çıkan zorluklardan bir tanesine UYAP örnek olarak verilebilir. UYAP fikri ilk ortaya atıldığı zamanlarda şüphesiz bir proje idi. Bu sebeple adı da “Ulusal Yargı Ağı Projesi”nin baş harflerinden oluşan “UYAP” adı verildi. Ancak daha sonra ülke genelinde birçok kurum ve kuruluşlarla entegrasyonlar yapılıp artık tam randımanlı kullanılmaya başlanınca “hâlâ proje olduğu” algısı elbette rahatsız etmeye başladı ve “Ulusal Yargı Ağı Projesi” olan adı “Ulusal Yargı Ağı Bilişim Sistemi” olarak değiştirildi. Ancak logodaki “UYAP” ifadesi kaldırılamadı. Zira “UYABS” olarak değiştirilmesi kafa karışıklıklarına neden olabileceği gibi alay konusu dahi olabilirdi. Bu nedenle projeniz ile proje bitiminde ürününüzün isim ve logo yönünden ortak bir düzlemde yer almasına özen gösterin.
Yukarıdaki anlatımlar ışığında projenin adı “Lex – Fori” ya da diğer herhangi bir şey olabilir. Proje iken “Lex – Fori Projesi” olur, bittiğinde “Lex – Fori Programı” olur.
Projenin Amacı
Burada artık proje ile ne yapılmak istendiğine dair daha somut şeyler söylemek gerekir. Bu sebeple, örneğin “bu projenin amacı, hukuk profesyonellerinin ihtiyaç duyduğu AİHM kararları da dahil olmak üzere yüksek yargı kararları ile bilimsel yayınları, çoklu platformda, yapay zekaya dayalı, kullanıcı dostu ara yüzlerle sunulmasını sağlamaktır.” denilebilmelidir.
Bu amacı gerçekleştirmek için masaüstünden (Windows, Mac), Web’ten (İnternet sitesinden) ve mobil uygulamalardan (iOS, Android) giriş yapılabilecek bir sistem yazılması gerekmektedir. Çünkü artık insanlar sadece bilgisayar ya da sadece mobil cihazlar kullanmıyor ve onlara bütün platformlardan erişebilecekleri bir bilgi sunulması programa rağbeti artıracaktır.
Gereksinimler
Bir yazılım projesinin gerçekleştirilebilmesi için her şeyden önce profesyonel bir ekibin kurulmasına ihtiyaç vardır. Bu ekipte ilk etapta sistem temellerinin atılabilmesi için masaüstü, web ve mobil programlama bilen, veritabanı mantığına hâkim yazılım uzmanlarına yer verilmelidir.
İçlerinde veritabanı yöneticisinin de olması tavsiye edilen bu yazılım grubunun bir araya gelerek öncelikle her şey bittiğinde elimizde nasıl bir ürün olması isteniyorsa bu amaca ulaşacak yol, yöntem ve hedefleri belirlemesi gerekir. Bu cümleden olarak yazılım grubu şu sorulara cevap ve karar vermelidir.
1. Bizden istenen nedir?
2. Nihaî hedef belirlendikten sonra bu hedefe hangi vasıtalarla ulaşmalıyız?
Windows için Java mı, .Net (DotNet) mi kullanacağız?
Mac İşletim Sistemi için ise Objective-C programlama diline ileride destek verilmeme ihtimali göz önüne alınarak Swift programlama dili kullanılmalıdır.
Web sitesi için PHP mi, ASP.Net mi, JSP mi kullanacağız?
Mobil uygulama için alternatif olmadığından hem iOS hem Android üzerinden uygulama geliştirilmesi gerekir. Öte yandan Mac İşletim Sistemi için kullanılacak Swift programlama dili ile iOS programlama da yapılabilmektedir. Hatta kodlar dahi değiştirilmeksizin küçük tasarım farklılıklarıyla aynı kod alt yapısı iOS için de kullanılabilmektedir. Zira Adroid için de benzer şekilde, bugüne kadar Java programlama dili kullanılagelse de çokça taraftar bulan ve tanıtıldığı ilk günden bu yana heyecan uyandıran Kotlin programlama dilinin Android’te Java’nın yerini alacağı tahmin edilmektedir.
Veritabanı olarak Oracle mı, MySQL mi, MariaDB mi, MsSQL mi kullanacağız? Bu noktada tüm veritabanlarının artıları eksileriyle masaya yatırılması ve tartışılması gerekmektedir. Bu noktada veritabanının farklı platformlar için kullandığımız farklı programlama dillerine cevap verebilmesi kadar hız, işlem kabiliyeti ve ücretsiz olup olmadığı da önemlidir. Bu bağlamda MySQL yerine MariaDB güzel bir alternatif olarak ortaya çıkmaktadır.
MVC gibi mimari desenlerin kullanılıp kullanılmayacağı hususlarının detaylıca ele alınıp tartışılması ve bir karar verilmesi gerekmektedir.
3. Bütün bu tartışmaların orta yerinde bulut bilişimin durduğu açıktır. Zira veritabanı ortak bir veritabanı olarak tüm ortamlara bilgi akışını sağlayacak şekilde programlanmalıdır.
Çalışma Modeli
Yazılım grubu yukarıda belirtilen sorulara cevap verip yöntemleri belirledikten sonra bu kez çalışma modellerini belirlemek gerekir. Bu, bir araya gelip ofis ortamında mı yoksa ofisten bağımsız olarak mı çalışılacağı ile ilgilidir.
Şayet ofis ortamında çalışma düşünülüyorsa ofisin konumu, hacmi, İnternet ve ağ bağlantısı, elbette bilgisayar, yazıcı ve diğer donanım unsurları ayrıca ele alınmalıdır.
Uzaktan çalışma yöntemi ile yazılım grubundaki her birey kendi evinden/ofisinden iş bölümünde kendisine verilen işleri yapar ve İnternet üzerinden ana programa yerleştirir ya da ana programa yerleştirmek üzere ilgili kimseye iletir. Giderler anlamında iş sahibine çok fazla avantaj sağladığında tereddüt bulunmayan bu yöntemde iş verimliliğinin, iş disiplininin zafiyete uğrama ihtimâli gözlerden ırak tutulmamalıdır.
Öte yandan uzaktan çalışma yöntemi iş uyumu ve işin yazılım geliştirme olması sebebiyle kod (yazılım) uyumunu da olumsuz etkileme ihtimâli olabilir. Örneğin, yazılım yapan üç kişiden her birisinin yazdığı modüllerde yazılım mimarisi olarak birisinin katmanlı mimariyi, diğerinin olay güdümlü mimariyi öbürünün ise uzay temelli mimariyi kullanmasında durum böyledir. Her üçünün de yazdığı kodlar bir araya getirildiğinde birtakım bağlantılarla birlikle çalışmasında sorun olmayacaktır. Ancak böyle bir durumda proje, kişi temelli hâle gelir ve yazılımcılar bir şekilde projeden ayrıldığında projeye yeni dâhil olan kişiler önceki kodları çözmekte güçlük çekerler. Öyle ki bu durum içinden çıkılmaz bir hâle gelebilir ve projeye dahil olan yeni yazılımcılar eskisini çözmektense sıfırdan yazmayı dahi göze alabilir. Nitekim UYAP’ta da benzer bir durumun söz konusu olduğu söylenegelmektedir.
Söylentilere göre, UYAP ilk olarak Havelsan mühendislerine yazdırılmaya başlanmış, proje bir şekilde akamete uğradıktan sonra bu kez Bakanlığın kendi mühendis ekibi daha önce yazılan UYAP kodları üzerinden devam etmek istemişler ancak Havelsan’dan alınan kodların karıştırılmış (teknik terimle, obfuscate edilmiş) olduğunu görmeleri üzerine yeni, sıfırdan yazma yoluna gitmişler.
Şüphesiz yukarıda izah edilen dezavantajlar güçlü bir iletişimle ve yöneticilik anlayışı ile minimize edilebilir ve hatta ortadan kaldırılabilir.
Gereklilikler
İş dünyası bulut tabanlı hizmetlere gittikçe daha çok ısınıyor, hizmet olarak yazılım (“Software as a Service” ya da “Solution as a Service” ve kısaca “SaaS”) sektörü hızla büyümeye devam ediyor. The Gartner CRM Guide’da yayınlanan bir makaleye göre, 2015 itibari ile %50’den fazla bir orana sahip olan müşteri ilişkileri yönetiminin 2025’te %80 gibi rakamlara erişmesi bekleniyormuş. Mark Andreessen’ın da dediği gibi “Hizmet olarak yazılım dünyayı yiyip bitiriyor.”. Yazılımın ticarî ve ekonomik hayattaki geleceği nazara alındığında projenin başarılı olması için şu hususların ayrıca göz önünde bulundurulması gerekir.
1. KISS (Keep It Simple, Stupid) candır, ayrılmayın.
Her ne kadar Türkçe karşılığı “Basit Tut, Aptal” şeklinde biraz da incitici olsa da gerçek, bu yaklaşımın ta kendisidir. Her şeyden önce hangi platform için yazılırsa yazılsın uygulama ara yüzleri son derece basit tasarlanmalıdır. Kullanıcı mümkünse tek tuş ile tek adımda, değilse en geç 2 veya 3 adımda istediği her şeye ulaşabilmelidir. Bu açıdan UYAP son derece kötü bir örnektir. UYAP’ın eski sürümlerinde dosyaya taraf eklemek için 9 – 10 işlem yapmak gerekiyordu. Her işlem adımının üst üste pencere açtığını da düşündüğümüzde program, kullanıcıda adete nefret uyandırmak için yazılmış gibiydi. Sonraki güncellemelerde taraf eklemek için ortalama 4 – 5 adım gerekiyor. Bu dahi çok sıkıcı olabiliyor.
Kullanıcı (ya da müşteri) kullandığı yazılımın arkasındaki teknolojiyle ilgilenmez. Çoğu kez bilemez de. Kullanıcının ilgilendiği tek şey vardır; o da istediği şeylerin hemen elinin altında olması. Bu cümleden olarak Android uygulamasını Java ile mi Kotlin’le mi yazdığınızın ya da iOS uygulamasını Objective-C ile mi Swift ile mi yazdığınızın hiçbir önemi yoktur.
Yazılımın arkasındaki teknolojiyle yine yazılım dünyası ilgilenir. Yukarıdaki örneğe dönecek olursak Android için Kotlin, iOS için Swift kullanmak yazılımcılarda daha çok merak uyandıracaktır. Zira ileride her ikisi de kendi platformları için Java ve Objective-C’nin yerini alması beklenen daha yeni teknolojilerdir. Siz de bu yeni teknolojileri takip ettiğinizde yazılım anlamında sizin rakipleriniz de sizi takip ve taklit edeceklerdir. Takip ve ayarı kaçırılmadığı müddetçe taklit, iyi birer reklam malzemesidir.
2. Birkaç paket önerisinde bulunun.
Geliştirilen uygulamalar neredeyse her zaman ücretsiz olmalıdır. Fakat kullanım hacmi, fonksiyonellik ve/veya zaman ile sınırlandırılmalıdır. Farklı kullanılabilirlik, yatırım getirisi ve ödeme istekleri ile farklı müşteri segmentlerine uygun paketler önerilebilir. Bu hususta “Nasıl Bir Proje?” başlığı altında verdiğim “Basic”, “Standard” ve “Premium” modeli örneği burası için de geçerlidir.
Akıldan çıkarılmamalıdır ki hiç kimse işine ne kadar yarayacağından emin olmadığı bir uygulamaya binlerce lira ödemez. Bu sebeple kullanıcıya bir demo sürüm verip onu uygulamanın rahatlığını fark ettikten sonra daha geniş yetenekleri için ya da daha uzun süre kullanmak için ödeme yapmaya yönlendirmek daha akılcıdır. Keza özellik sınırlaması yapmak suretiyle hedef kitleleri belirlemek geliri artıran bir satış yöntemidir. Çünkü farklı gelir gruplarında bulunan bireylerin hepsinin en geniş paket için olan örneğin 10.000 liralık bir ücreti ödeyebilmesi beklenemez.
3. Tanımlayın, ölçün, analiz edin, iyileştirin, kontrol edin.
Uygulama geliştirmekle sürecin tamamlandığı çok büyük bir yanılgı olur. Zira uygulamaları kullanan kullanıcılar bu uygulamaların kullanılabilirliği, kendi ihtiyaçları ve davranışları konusunda paha biçilmez bilgiler paylaşır. Bu bilgiler, popüler olan ya da kullanılmayan özellikleri ortaya çıkarır. Aynı zamanda kullanıcıları bölümlendirmeye ve paketleri de tanımlamaya yardım eder. Bu, devam eden tanım testleri (A/B testleri gibi) ve değişiklikler sonrasında etkili iyileştirme yapabilmek açısından oldukça önemlidir. Örneğin WordPress’e eklenti geliştiren bir yazılım şirketinin, eklenti içine verdiği yardım bağlantısına tıkladığınızda şu şekilde bir adrese yönlendirildiğinizi görürsünüz:
/yardim/?konu_no=89&musteri_no=14&paket=premium&platform=windows&dil=php&surum=7.2.1
Linke baktığımızda yazılımcının bizim hangi ID’li kullanıcısı olduğumuzu, hangi paketi kullandığımızı, bilgisayarımızın işletim sistemini, sunucumuzun yorumladığı programlama dilini ve bu dilin hangi sürümünü kullandığımızı öğrendiğini görürüz. Bu bilgileri öğrenmek demek, yazılımcının programında nelere daha fazla önem verip nelere desteğini çekeceğini öğrenmesi bakımından son derece önemlidir.
4. Bir ekosistem oluşturun.
Kolay entegre edilmeye uygun üçüncü parti yazılımlardan oluşan başarılı ürünler açık ve esnek API’lerle güçlendirilmiştir. Böylece daha çok kesimden daha çok insanın bu sistemler etrafında toplanmaları ve sisteme katılmaları sağlanmıştır.
Ortak çalışma, ürün değerini artırırken aynı zamanda ikincil gelir kaynağı olarak yeniden satış fırsatlarını da ekosistem etrafına toplanan insanlara sunar. Bu konuda verilecek en güzel örnek WordPress’tir. WordPress, hiçbir kodlama bilgisine ihtiyaç duymadan, birkaç tıklama ile her türlü içeriğin üretilebilmesine, İnternet ortamında yayınlanmasına olanak sağlayan bir içerik yönetim sistemidir. WordPress Türkiye sayfasında, WordPress şu şekilde anlatılır:
WordPress, herkes için tasarlanmış, erişilebilirliği, performansı, güvenliği ve kullanım kolaylığını vurgulayan bir yazılımdır. Harika bir yazılımın en az kurulumla çalışması gerektiğine inanıyoruz; böylece hikayenizi, ürününüzü veya hizmetlerinizi özgürce paylaşmaya odaklanabilirsiniz. Temel WordPress yazılımı basit ve öngörülebilirdir, böylece kolayca başlayabilirsiniz. Ayrıca büyüme ve başarı için güçlü özellikler sunar.
Gerçekten de WordPress yazılımı basit ve öngörülebilirdir. Dünyanın dört bir tarafından on binlerce yazılımcı WordPress için temalar, eklentiler ve bileşenler yazar ve satar. Örneğin Slider Revolution (Revolution Slider) adlı eklenti WordPress siteleri için slaytlar ve diğer görsel içerikler oluşturmak için yazılan ve 17/02/2019 tarihi itibariyle 26 USD’den satılan bir eklentidir. Ve tarih itibariyle 301.523 adet satış gerçekleştirmiştir. Bu da 7.839.598 USD gibi bir toplam satış rakamına denk gelmektedir. Dolayısıyla yazılım temelli nasıl bir uygulama geliştirirseniz geliştirin yazılım projesi için mutlaka uygun bir ekosistem oluşturun.
5. Profesyonel hizmetler için doğru miktarı önerin.
Profesyonel hizmetler yazılımın kullanıcıya pazarlanmasından sonra verilen bakım, onarım, güncelleme gibi hizmetlerdir. Bu hizmetler aynı zamanda hem faydalı hem zararlı olabilir. Geliri artırıcı bir etkisi olduğu gibi kullanıcının ek yüklerle karşılaşma ihtimâli sebebiyle satışların düşmesine de neden olabilir. Bu sebeple anılan türden hizmetler için aşırı yüksek miktarlar istenmesi satış üzerinde olumsuz etki doğurur.
Profesyonel hizmetler için istenen ücret genel olarak, yıllık sözleşme değerinin %10 ila %20’si arasında ve toplam kârın %20’si (%80’i tekrarlayan gelir olmak üzere) kadarıdır.
Sonuç
Yazılım dünyası başlanmış ancak bitirilememiş projelerin enkazlarıyla doludur. Bu sebeple önemli olanın bir projeye başlamak değil başlanan bir projeyi bitirebilmek olduğu gerçeğiyle bir projeye başlarken bütün ihtimâlleri hesaplayın ve planlamaları hep en kötü senaryoya göre yapın.
Yazılımın bir ekip işi olduğunu gözlerden ırak tutmayın. Çünkü yazılım dünyasının gerçekten ucu bucağı yoktur ve emin olun dünyanın en iyi yazılım uzmanı bile hâlâ bir şeyler öğrenme telaşındadır. Bu sebeple bir kimsenin hem yazılımda hem grafik ve görsel tasarımda hem veritabanında uzman olması beklenmemelidir. Bir kimse bu alanların tamamında kendini yetkin görüyorsa bu kişiden de uzak durun. Bu gerçeklerden hareketle iyi bir yazılım projesi gerçekleştirmek için iyi bir ekip kurun.
Alanında bir numara olma iddiasındaki bir yazılım programının ortaya çıkabilmesi için yazılımda, donatımda, veritabanında ve görsel tasarımda alanının en iyisi olan kişi ve kurumlarla iş birliği yapmak kaçınılmazdır. Örneğin komut sistemiyle (konuşarak) bir program yönetilecekse oturup sıfırdan sesin yazıya çevrilmesini sağlayan bir program geliştirmek ve bunu sisteme entegre etmek faydasızdır. Çünkü bir dilin bütün söyleyiş özelliklerini ve kelime kapasitesini (hele ki bu dil Türkçe ise) kısa zamanda sisteme entegre edemezsiniz. Bunun yerine yıllarca bu iş üzerinde çalışılmış, yıllar içinde dilin bütün söyleyiş olasılığına göre her harfi, her sesi veritabanına işleniş örneğin Siri gibi bir kütüphanenin kullanılması daha profesyonelce olacaktır.
Son Olarak…
Son olarak şunu da söylemekte elbette fayda var ki proje ekibinizde yer alacak kişi sayısını projenizin hacmi belirler. İfade edildiği üzere alanında bir numara olma iddiasındaki bir yazılım için, proje ekibinde üç kişi olmaz. Üç kişi ile olsa olsa konut sitesine otomasyon sistemi yazılır. Tabi konut sitesine otomasyon sistemi yazmak için ekibe on kişi de alınmaz. Bu kaynak israfıdır ve zarar olarak döner.
Bir yazılım projesi geliştirirken nelere dikkat edilmesi gerektiği konusunda ilk aklıma gelenler bunlardı. Bugüne kadar yarım kalmış projeleri olan birisi olarak umarım sizin projeleriniz nihayete ermiş ve semerelerini vermiş olur. Son olarak “İyi bir yazılım projesi nasıl geliştirilir?” konusunda yazılan Xirect sitesindeki Betsy Bautista’nın şu yazısına ya da Andrei Danciu’nun freeCodeCamp sitesindeki şu yazısına da bakabilirsiniz.
Sağlıcakla kalın.
Bilgi için teşekkürler…