22 Temmuz 2015 Çarşamba

Yazılım projelerinde Proje Yönetiminin önemi nedir?

Kariyerimin başlangıçlarında oldukça şanslıydım. Egebank'ta Alternatif Dağıtım Kanallarında ve Başarı Telekom/Ticaret'te proje yönetim ofisi benzeri bir birimde çalışırken gerçekten vizyoner, şu sıralar bilinen deyimle mentor sayılabilecek yöneticilerle çalıştım. Son teknolojilere yakın, bir o kadar da bu teknolojileri işlerine adapte etmekte becerikli ekipler kurmuşlardı, gerçekten şimdinin standardına göre mükemmel işler çıkartıyorlardı.
Bu süreçte çalıştığım şirketler benim için eğitici, öğretici olmasının yanında gerçekten tecrübe ve vizyon kazanmama yardımcı olan tek çalıştığım şirketlerdi. Ama bu süreçte edindiğim en önemli tecrübelerimden birini de şuydu.
Türkiye'de dikkat edilmesi gereken ilk şey, insanlar ve teknoloji hazır olmadan bir işe girişmemekti.  Buna pek çok örnek verebilirim. Yine eski geçmişten, Başarı Ticaret döneminden bahsedebilirim.
İlk ürün satışı yapılan e-commerce sitelerinden birini kullanıma açmıştık ve dünya teknolojisini en yakından takip etmek zorunda olan bankaların V-POS altyapısı bile yetersizdi. Her ne kadar Türkiye, teknoloji ve bilinç olarak hazır olmasa da Türk insanı çeşitli yollarla kendini adapte etmişti ve  dolandırılıyorduk. Çalıntı kredi kartları bir tarafa, sahte isimle alışveriş yapıp, ev taşıyanlar bile oluyordu. Değinmeden edemeyeceğim; Bu süreçte ben umutsuzdum, sitenin kapatılması gerektiğine inanıyordum ve yöneticim de hem fikirdi, çünkü kaybettiğimiz ürünler cep telefonlarıydı ve ciddi kaybımız oluyordu. Şirketin sahibi ki kendisi idolümdür, Ferda Yıldız beyefendi ile yöneticim görüşmüştü. Ferda Bey ise şunu söylemişti.
"Burada önemli olan kaybettiğimiz ürünler değil, edindiğimiz tecrübe. Devam edeceğiz ve bir gün dolandırılmamayı öğreneceğiz."
Site yıllarca açık kaldı.
Konumuza geri döneyim.
Daha acı bir erken teknoloji örneği ise sevdiğim bir arkadaşımın VOIP teknolojisini firmalara sunmak için açtığı şirketin batmasıdır. Evet yurtdışında VOIP kullanılıyordu ama Türkiye'de hatlar yetersiz, internet yavaştı. Teknolojiyi dünya ile aynı zamanda kucaklamak, Türkiye'de kabustur.
Teknoloji kadar konseptlerin gelişmesi ve kabul görmesi de Türkiye'de yaklaşık bir 7 sene geriden gelmektedir. Yurtdışında aksaklıklar tespit edildiğinde, geliştirilen ve denenen pek çok yöntem ve uygulama Türkiye'ye ulaştığında çoktan değerini yitirir ama yine de uygulanır. Sonuç yurtdışındaki ile aynıdır, onların terk ettiği başka bir uygulamaya gidilir.  Ama dünya siz daha başlarken o uygulamadan daha da iyisine yönelmiş olur.
Proje Yönetimi de aslında bu geç kalınmış uygulamalardan biridir. Geçerliliği kabul görmüş, standartları oturmuş, sertifikasyonları önem kazanmıştır. Dünya değerini şuanda Türkiye'dekinden kat be kat fazla görmektedir ve iş alanı olarak tamamen farklılaşmış, oturmuştur. Bu da seneler sonra Türkiye'de değerini anlayacak demektir. Biz anlayıp oturtana kadar yurtdışında daha etkili bir sistem kabul görmezse tabii.
Uzun seneler yazılımcı olarak çalıştım ama yazılımcı demek o zamanlar analist/testçi/proje yöneticisi/müşteri ilişkileri uzmanı gibi titleları da barındırıyordu. Tek kişilik orkestra gibiydiniz. Pek çoğunuzun hem fikir olacağı gibi işin içindeyken aksaklıkları ve nedenleri daha iyi görebilirsiniz. Yöneticileriniz veya patronlar sizi dinleseler pek çok şey daha iyi işleyebilir. Benim farkım ise bu aksaklıkları gidermek için ne yapılabilir diye düşünmekti ve dünyayı takip etmekti.
Yazılımcılık dönemindeki bir yöneticim, yazılım projelerinin gereğinden fazla uzun sürmesinden şikayetçi idi ve kendine göre bir çözüm de bulmuştu. Framework geliştirmek. Bu çözümü uygulamaya sokmak çeşitli çabalara rağmen 5 sene aldı ve beklenen tabii ki olmadı, zaten bu işi başlatan yönetici de çoktan şirketten ayrılmıştı. Aslında sorun hiçbir zaman framework yazmak veya hızlı kodlama yapmak değildi. Sorun yönetimseldi.
1.  

 
Projelerde bildiğiniz gibi kapsam/zaman/bütçe birbiriyle en ilintili alanlardır. Bir projede süre uzuyorsa bunun en akla yatkın nedeni kapsamın değişmesidir.
Gelelim macerama;
Çalıştığım şirkette bu aksaklıktan nasıl kurtulunabilir diye yaptığım araştırmalarda Agile/Scrum metodolojileri ile karşılaştım. Bunlar daha çok ekip halinde çalışan yazılımcıların takip etmesi gereken yöntemdi ve şirkette genelde bireysel projeler gerçekleşiyordu. Yani uygun değildi. Daha da Türkiye'de hiç duyulmamışlardı ve yöneticime kabul ettirmem imkansızdı. Aynı dönemde proje yönetimi konseptinin gelişmekte olduğunu gördüm. Yurtdışında pek çok sertifika programı başlamıştı. Kendi bütçemle yurtdışında bir haftalık kısa bir proje yönetimi eğitimine katıldım ve sertifikamı aldım ama tabii ki dünya çapında geçerli olan sınavına katılamadım. Şirketimde ise daha bırakın proje yönetimini, yazılım metodolojileri bile duyulmamıştı.
Geldikten sonra yöneticime aldığım eğitimi anlattım ve bu konuda uzmanlaşmak istediğimi söyledim. Bana yazılımcı olduğumu ve proje yönetiminin gereksiz olduğunu söyledi. Zaten beklediğim cevaptı. Teknolojinin ve konseptlerin Türkiye'ye gelmesini beklemeye karar verdim.
İlk gelen konsept adından mıdır bilmem Scrum oldu. Uygulanan kısmı sadece sabah toplantılarıydı ama nasıl olduysa eğitime bir arkadaşımızı göndermişlerdi ve kendisi de Scrum Master olduğu için çok umutluydu. Sonuç başarılı oldu mu bilemiyorum, ama proje gecikmelerindeki asıl soruna çözüm bu değildi. Bu süreçte bir ara pair programming yani çoktan terk edilen birlikte yazılım yapmak bile denendi. Avantajı vardı çalışmaya teşvik ediyordu. Hem denetçi hem denetlenen oluyordunuz ama aynı zamanda inanılmaz kaynak kaybıydı, o yüzden de yurtdışında hiçbir geçerliliği kalmamıştı. Bir şey demedim, izledim. Gelelim neden bir şey demediğime.
Çünkü hazır değillerdi. Bunu da yaşadığım bir örnekle açıklamak istiyorum.
Bana atanan bir iş akışı uygulamasında süre inanılmaz kısıtlıydı. Analiz yapılmamıştı. Doküman yoktu. Sadece bir danışmandan alınan bilgiler vardı. Analiz yapmaya bile vaktim yoktu, direkt kodlamaya geçmek zorunda kalmıştım. Bir yandan kodlama yapıyor, bir yandan her adımda doküman hazırlayıp, bu böyle gelecek, şu onay verecek buradan gidecek gibi bilgileri doğruluğundan emin olmak için iletiyordum. Tek bildiğim akıştı ve ekranla ilgili bilgileri ve fikirleri dahi olmayan iç müşteri benimle birlikte ekranlar şekillendikçe ne yaptığımızı anlamaya çalışıyorlardı. Gece gündüz mesailerle en azından akışın ilk adımını yetiştirmeye odaklanmıştım, en kolay kısmı da oydu ama alt yapısı, ekranları, bağlantıları, akış motoru da hazırlanmak zorundaydı. İnanılmaz stres altındaydım çünkü tüm üst yönetim ve tüm şirket projenin belirlenmiş olan bitiş tarihini bekliyordu. Bu süreçte yöneticime inanılmaz kızgındım, kapsamı belirlememişti, süreyi ayarlamamıştı, bunu yap demişlerdi o da aynen gelip bana bunu yap demişti. Büyük çaba ile ilk aşamayı tamamladık, ikinci aşamaya da başladım, bu arada testler devam ediyordu. Bilgisayarım ağırdı ve testler işkenceydi. İç müşteriyi yanıma oturtup test yapıyordum ki hemen müdahale edebileyim.  Derken ikinci aşamayı da tamamladım ve testlerini de bitirdik. Proje akışları 6 aşamadan oluşuyordu ve lansmanla beraber diğer aşamaları tamamlamayı umuyordum. Ben ilerlerken ve lansmana 3 gün kala iç müşteri gelip akışı değiştirdiklerini bildirdi. Yöneticime gittim ve o ne var küçük bir değişiklik istiyorlar işte dedi. Ben de açıklamaya çalıştım. Hiç unutmuyorum ona bir bina düşünün bunun birinci katını yıkıyorsunuz üst kısımları ayakta kalacak mı, tüm testler her şey yeniden yapılacak dedim. O da bana biz inşaat mühendisi değiliz dedi. Yani yöneticimin kapsam değişiminin önemine dair en ufak bir fikri yoktu, umursamıyordu da. Yine sinirlenmiştim ama bir şey demenin ne kadar manasız olduğunu anlamıştım.
İşte sorun buydu. Kapsamı değiştirirseniz projenin zamanını uzatırsınız, bu da bütçeyi etkiler, kaliteyi etkiler, başarıyı etkiler, daha da derinden incelerseniz insan kaynağınıza verdiğiniz değeri gösterir.
Yazılım projelerinde başarısızlığın nedenleri yönetimseldir. Analiz dökümanınız yoksa, kapsamınız doğru belirlenmemişse, kaynaklarınızı doğru atamamışsanız veya fazla iş yükü binmesine sebep olmuşsanız, projenizin bitişine ait bu kapsam bazında doğru zaman çizelgeniz hazırlanmamışsa yani proje planınız yoksa, başarısızlığa mahkumsunuz. Başarı projenin tamamlanması demek değildir. Kaynağınızı verimli kullanmanızdır, ürettiğiniz ürünün kalitesidir, ne yaptığınızı başından bilmeniz ve doğru çıktıyı elde ettiğinizden emin olmanızdır ve en önemlisi müşterinizin sonuçtan memnun olmasıdır. Yoksa uzaya mekik fırlatacak kadar kaynağınızla işlerinizi yetiştiremezsiniz.
Sonucu merak ediyorsanız; Fazla mesailerle iş odaklı olduğum için projeyi zamanında tamamladım ve başarılı bir proje olarak şirket bilgi işlem tarihine geçti ama benim açımdan proje yönetiminin önemini anladığım ve vizyoner bir bakış açısıyla çalışmam gerektiğini hissettiğim bir projeydi.
Tüm projelerinizde başarılar diliyorum.