Kimler okumalı :
Yazılım dünyasında iş yapmak isteyen girişimciler,
Yazılım dünyasındaki ilerleyişi merak eden kişiler,
Yazılım maaliyetini belirlemekte zorlananlar.

Bir Yazılımın Proje Öyküsü

Yazılım dünyasına yeni girmiş bir girişimci olabilir veya bu alanla ilgili merak ettiğiniz konular olabilir, bu yüzden biraz yazılım çalışmasının nasıl ilerlediğinden bahsetmek istedim. 

Web developer olarak 2009 yılında başladığım bu süreç gördüğüm eksikler sebebiyle belli başlı alanlarda uzmanlaşmamı sağladı. Tasarımdan kodlamaya, analistlikten proje yönetimi gibi farklı alanlarda çalışma fırsatları buldum. 

İlerleyiş şeklimin aslında beni belli başlı metodolojilere ittiğini kurumsal firmalarda çalışmaya başladığımda anlamıştım. 

Doğru bilinen bir çok yanlış vardı bunları geçmişte web dünyasındaki kaynak yetersizliğinden dolayı kitaplardan okuyup anlamaya çalışarak ve yaptığım hatalardan dersler alarak düzelttim.

Yazılım bir çok branşı içinde barındıran disiplinler bütünüdür diyebilirim. Geçmişte Web Developer diye tabir edilen bir kişi yazılımın tüm kısımları ile ilgilenirken, şu anda her biri kendi alanında uzmanlık isteyen branşlar haline gelmiştir.

Yeni bir yazılım işi aldığınızda nereden başlamanız gerektiğini bilmiyor olabilirsiniz. Kafa karışıklığınız çok normal, eskiden yetersiz kaynak olduğundan öğrenemiyorduk şimdi ise çok kaynak olduğundan kafamız karışıyor olabilir. 

Yeni bir iş alacağınızda müşterinizin ilk iki sorusu şunlar olacaktır. Ne zaman ve ne kadar. 

Bu sorulara cevap vermeden önce bu işin üstesinden gelip gelemeyeceğinizi anlamanız gerekmektedir. Aslında üstteki ne zaman ve ne kadar sorularının cevaplarını bulurken bu işi yapıp yapamayacağınız da anlaşılmış olacaktır. Bu süreci tekrarladığınızda belli bir iş bitirmişliğiniz sonrası bu işi yapıp yapamayacağınızı hızlı değerlendirebilirsiniz. Ama ilk etapta bu soruların cevaplarına göre deneyimleyeceğiniz bir süreç olduğunu düşünüyorum.

Bu işin ilk adımı analizden geçmektedir. Bana kalırsa işin analiz süreci bu işin en maaliyetli ve en değerli kısmıdır. İyi bir analiz ile projenin % 50 sini tamamlamış olduğunuzu varsayabilirsiniz. 

Buradaki en önemli sorun siz bu analizi yaptıktan sonra müşteri yaptıracağı işten vazgeçerse boşu boşuna bir analiz sürecini ilerletmiş olacaksınız, tabi bunu deneyim olarak da sayabilirsiniz. 

Benim kanaatim müşterinizi ikna edebilirseniz ve analiz konusunda kendinizi yeterli görüyorsanız (dışarıdan destek de alabilirsiniz) analiz ücretini ayrıca belirleyip müşterinize iletmeniz. 

Ben şu şekilde ilerliyorum, analiz süreci bu kapsamdaki bir iş için 2 hafta yani 10 iş günü sürecektir, analiz sonrası benim size vereceğim dökümanlar ile bu işi başka bir yazılım firmasına da götürebilirsiniz ancak bu analizi yapmadan işe başlamak ya bizi ya da sizi zarara uğratabilecektir. Bunu söylediğimde müşteriler ikna oluyor. Eğer karşınızda buna ikna olmayan bir müşteri varsa bence o müşteriyle çalışmayın. İşin sonunda “Bu benim istediğim iş değil!” diye para alamayabilirsiniz.

Evet, müşteri analiz sürecimizi kabul etti ve çalışmaya başladık, burada neler yapmamız gerekiyor ; 

1 - İşi anlamak için müşteriye soru listesi hazırlamalısınız. Müşteriniz size “Şunun gibi bir şey” şeklinde gelecektir, bu işin kapsamını soru sormadan belirlemeniz imkansız olacaktır. 

2 - Sorular ile işi anladınız, şimdi bunu mockup ve wireframe ile devam ettirmeniz gerekmektedir. Mockup ekran içerisindeki özellikleri belirten basit bir tasarım aracıdır. Kalem ile bir kağıda da çizebilirsiniz, bu da iş görecektir (Balsamiq kullanabilirsiniz). Wireframe ise akışınızı belirleyecektir. Örneğin login butonuna bastığınızda kullanıcının karşısına hangi ekran gelecek vb. 

Not : Artık bu alan Figma gibi tasarım araçları sayesinde bütünleşik bir hal almıştır. Prototip özelliği ile hem sayfa içindeki itemları belirleyebilir hemde akışın nasıl ilerlediğini gösterebilirsiniz. 

3 - Bunları yaptığınızda artık hangi developerlara ihtiyaç olduğunu anladınız. Eğer yazılım bilginiz iyi değilse bu alanları çalışacağınız developerlara anlatarak onlardan efor isteyebilir veya deneyimiz var ise kendiniz efor verebilirsiniz. 

Analiz bir web sitesi yazılımı ise şu bileşenlerden oluşacaktır : UI/UX Designer, FrontEnd Developer, BackEnd Developer, Db Architecture, test developer.

Analizimiz tamamlandı, müşteriden yaptığımız analiz ile ilgili yorumlarını istemeliyiz. Asıl işin şekli analiz sonrası ortaya çıkmaktadır. Müşterinin istediği ile sizin analiziniz bire bir örtüşmelidir. 

Müşterimiz ile anlaşmaya vardıysak süreci ilerletebilriz. 

Developerlar eforları iletti, peki bu işin maaliyetini nasıl belirleyeceksiniz. Çalıştıracağınız developer'ın günlük veya saatlik bir maliyeti oluyor, eğer freelance iseniz direkt bu tutarı efora yansıtabilir, işletme iseniz işletme giderlerinizi ekleyerek yansıtabilirsiniz, malum günümüzde bir Mac Pc fiyatı 100 bin tl üzerine gelmiş durumda. 

Proje Maliyeti : her bir developer'ın günlük ücreti x harcayacağı efor ve bunların toplamından oluşmalıdır. 

Ancak siz bu projede ilerlerken durmadınız, bu projeyi yönettiniz. İşte bu proje yönetimi içinde bir maliyet eklemeniz gerekmektedir. Aynı yöntem ile harcadığınız efor ve proje yöneticisinin günlük maliyeti çarparak proje maliyeti iletebilirsiniz. 

Müşteriniz ile anlaştınız, ilk ilerleteceğiniz kısım UI/UX kısmıdır. Kullanıcı deneyimleri ile ilgili toplantılarınızı ve araştırmalarınızı yaptınız (UX ayrı bir uzmanlık alanıdır, ancak bizim kültürümüzde UX deneyiminin yerine firmalar kendi fikirlerine daha çok güvenerek çoğul kitleyi hiçe saymaktadır.) Araştırmalarınız neticesinde bir tasarım ortaya çıkardınız, tasarım onayı almadan ikinci aşamaya geçmenizi kesinlikle önermem.

Tasarım revizeleri geldi, artık bu işi de toparladınız ve müşteri onayını alabildiniz. Sıra yazılım kısmına geldi. Bu işin frontend development kısmı yani ön yüz kodlaması ilerlerken aynı zamanda backend tarafındaki sürecinizi de paralel sürdürebilirsiniz.

Database mimarisi oluştu, frontend de tamam, artık backend tarafından kodları implemente etme aşamasındasınız. Bu işide tamamladıktan sonra bir yazılım süreci tamamlanmış olacaktır. 

Konu çok uzun olduğundan fazla detaya girmeden kısaca süreçten bahsetmek istedim ancak birçok alanı da göz ardı ettim. Yazılım işinde teorik bilgi maalesef çok işe yaramıyor, pratikte bir çok problem ile karşılaşmalısınız ki bu sorunların çözümlerini bulup ilerde karşılaşmayın. Yazılım sürekli kendini geliştirme gereği duyan bir meslektir, özellikle günümüzde 1 aylık takipsizlik bile sizi bu alandan uzaklaştırabilir. Şimdiden bu alan ile ilgilenen arkadaşlarıma başarılar ve bol sabırlar diliyorum :)