Yazılım Projelerinin Başarısını Etkileyen Faktörler
Merhabalar, uzun zamandır bilgisayarımın karşısına oturup 2 satır bir şeyler karalamak için vakit bulamamıştım. Bugün hazır fırsat bulmuşken size bulunduğum yazılım projelerde karşılaştığım zorluklardan ve başarı faktörlerine ilişkin tecrübelerimi aktarmak istiyorum.
Öncelikle projeler ister büyük ister küçük olsun, herkesin bildiği gibi zaman ve maliyet çok önemlidir. İçinde bulunduğumuz teknoloji çağı göz önüne alındığında, hız çok önem kazandı ve pazara erken girebilmek rekabet avantajı sağlamakta. Bu yüzden bir yazılım projesinde gereksiz detaylarla vakit öldürmek bana sorarsanız vakit kaybından başka bir şey değil. Ama bu basitliği optimum seviyede tutabilmek de çok önemlidir. “Keep it simple but not simplistic“.
Çoğu iş yeri yazılım projelerinde WATERFALL(Şelale) modelini kullanırken, şimdilerde ise SCRUM çok revaçta. Ama bana sorarsanız kullandığınız metodolojiden ziyade, kendinizi rahat hissettiğiniz ve kurumunuza uygun olabilecek bir yöntem belirlemek çok önemli. Waterfall metodu işten çok süreçlere odaklanırken Scrum ise işe ve çalışır uygulamaya odaklanıyor. Günümüz ihtiyaçlarına Scrum daha çok cevap veriyor gibi görünüyor ancak burada çalışan insanların da kültürleri çok önemli, Scrum’ın prensipleri basit gibi görünse de uygulaması gerçekten çok zor.
Bence bu metodolojiler gelip geçici, yarın başka bir moda çıkacak ve Scrum’ı da unutacağız. Birileri verdikleri sertifikalar sayesinde servetlerine servet katacak :) Tabi ki bunları bilmek gerek, artılarını eksilerini değerlendirip dağarcığımızı geliştirmeliyiz buna hiç itirazım yok. Çünkü bu işe kafa yormuş insanlar güzel pratikler ortaya koymuştur mutlaka. Ancak demek istediğim kendimizi bir kalıba sokmak için neden efor sarf edelim. Ekibimizin verimli olduğu yöntemleri araştırıp, belki de ekibe göre farklı yöntemler uygulayalım. Burada önemli olan metodoloji değil insan olmalı.
Diğer bir konu ise takım elemanlarının seçimi. Bu hepsinden daha önemli bence. Bir projeye başlarken o projenin zorluğu, süresi, ar-ge gerektirip gerektirmediği, Third parti firmalarla iletişim gereklilikleri, zaman, kalite, maliyet gibi kriterler değerlendirilmeli ve takım üyeleri bunlara göre seçilmeli. Tabi en önemlisi de daha önce bu konuda tecrübeli ekipte en az 1 kişi bulunsa iyi olur. Tecrübe gerçekten çok önemli. Daha önce proje deneyimi olmayan yeni mezunlardan oluşan bir takım, takım üyeleri ne kadar zeki olursa olsun başarısız olacaktır. Bu yüzden tecrübeli ve tecrübesiz takım üyeleri harmanlanmalıdır.
Genellikle projelere sıkışık deadline’lar verilmesi işin daha erken biteceği gibi saçma bir düşünceye sebep olmaktadır. Örneğin normal şartlarda 6 ay sürecek bir projeye 3 ay vermek bazen de ters teperek 9 ayda bitmesine dahi sebep olabilir. Verilen deadlinelar inandırıcı olmalı ki takım üyeleri bitirebileceklerine inansın ve ona göre kaliteden ödün vermeden işlerini yapabilsinler. Kısa sürede bitirmek için kaliteden ödün vermek, rastgele kod yazmak ileride daha büyük maliyete sebep olduğuna defalarca şahit oldum.
Önemli konulardan bir tanesi de ENTEGRASYON’lardır. Bazen bir projede zamandan kazanmak için Third parti firma yazılımları kullanılır. Bu kötü bir şey değil kesinlikle ancak bu kararı alırken çok dikkat etmek gerekir. Alacağınız modül öncelikle know-how ‘ı sizin işinize yaramayacak bir modül olmalı. Yazılımın çekirdeğini dış bir firmaya emanet etmek bazen çok riskli olabilir ki bazen önce maliyeti düşük görünen modül daha sonra sizden bakım ve ek geliştirmelerle birlikte kabusa dönüşebilir. “Bir projede ne kadar çok entegrasyon varsa projenin fail olma olasılığı o kadar fazladır.” Ayrıca bakım ve hata çıktığında hangi modülden kaynaklandığını araştırıp bulmak da ayrı bir maliyet. O yüzden entegrasyon yapacaksanız çok dikkatli olmanız gerekiyor.
MOTİVASYON : En önemli konulardan bir tanesi. Siz ne kadar uğraşırsanız uğraşın mutsuz ve motivasyonu düşük yazılımcı iyi iş çıkaramaz. Bu yüzden gerek çalışma şartları, gerek ücret, gerek ekip içi arkadaşlık, gerek iş tatmini gibi daha sayabileceğimiz bir çok konuda takım üyelerini beslemek gerekir. Bazen çok önemli bir ekip üyesini kayda değmeyecek sebeplerle elden kaçırmanın maliyeti tahminlerin çok üzerindedir. Çalışanlara adil olanaklar sağlamak ve samimi olmak bunda en önemli kriterlerden bir tanesi bana sorarsanız. İşler bir şekilde yürür ancak, turnover’ın çok fazla olduğu IT sektöründe, tecrübeyi elde tutmak rekabet avantajı sağlayacaktır.
Şimdilik benden bu kadar.