Bir fikriniz var. Fikrinize güveniniz de tam.. Fikrinizi hayata geçirebilecek kaynaklara da sahipsiniz. Peki hiç geliştirme süreçleri hakkında bir plan yaptınız mı, yaptıysanız bunu uluslararası yöntemlerle mi yoksa mahalle bakkal defteri gibi tutarak mı yapıyorsunuz? Aslında birçok kişinin kaçırdığı, belki önemsemediği, ancak yapılmasının birçok startup şirketi açısından yarar sağlayacağı bir konudan bahsedeceğiz. Proje yönetimi…
Son yıllarda önemi giderek artan, orta ve büyük ölçekli birçok şirketin benimsediği proje yönetim şekilleri bulunmaktadır. Bu proje yönetim şekilleri temel olarak ikiye ayrılmaktadır. Bunlardan birincisi kriterlerin ve isteklerin ağırlıklı olarak belirli olduğu, dokümantasyon ağırlıklı “Plan Driven” proje yönetim biçimidir. Diğeri ise bizimle daha ilgili olup, anlatabileceğimiz “Agile” methodudur. Agile, “Plan Driven”a göre daha esnek hareket edilebilen, dokümantasyon gerekliliği daha az olan bir proje yönetim biçimidir.
Agile bir proje yönetim biçimidir. Proje geliştirirken direkt olarak Agile kullanılmaz, onun frameworkleri kullanılır. Scrum, Kanban bu frameworklerden bazılarıdır. Bu frameworkler agile manifestoyu temel alır. İşleyişinde bazı farklılıklar gözükebilir. Projeden projeye, ekipten ekibe göre hangisinin seçilmesi gerektiğine dikkatli karar vermek gerekir.
Agile Proje Yönetimi dediğimizde bilmemiz gereken; değişime açık olunması, takım içi iletişimin yüksek olması, hızlı ve sürekli ürün teslimi, test odaklı anlayış, basit ve gerçekçi bir planlama olmalıdır.
2001 yılında yayınlanan Agile Manifesto ile Agile proje yönetiminin temel taşları gösteriliyor. Burada geçen ifade ise;
“Süreçler ve araçlardan ziyade bireyler ve etkileşimlere
Kapsamlı dokümantasyondan ziyade çalışan yazılıma
Sözleşme pazarlıklarından ziyade müşteri ile işbirliğine
Bir plana bağlı kalmaktan ziyade değişime karşılık vermeye
değer vermeye kanaat getirdik.”
Bu manifestoyu yayınlayan kişiler ise Robert Martin – Uncle Bob, Martin Fowler gibi alanında duayen kişilerdir.
Bu dört maddeyi inceleyecek olursak;
İlk maddede bireyler arasındaki etkileşimler, süreç ve araçlardan önceliklidir denmektedir. Burada Takım oyunun önemi vurgulanmaktadır. Yazılım projeleri çoğunlukla birden fazla kişinin katılımıyla hayata geçirilen projeler olduğu için bu projelerin başarıya ulaşabilmeleri için takım oyunu önemli bir rol teşkil etmektedir. Bu bakış açısıyla; sağlam ve başarılı yazılım geliştirme araç ve süreçleriniz olsa bile iyi bir takımınız yoksa, projelerinizde istenen başarıyı yakalamak zordur. Fakat tam tersi; iyi bir takımınız varsa, süreç ve araçlarınız yeterince sağlam ve iyi olmasa da başarılı olma ihtimali çok yüksektir. Bu nedenle Agile yönetimdeki ilk ve en önemli faktör iyi bir takım olabilme ve takım kültürü oluşturabilmedir.
İkinci maddeye bakacak olursak; çalışır durumdaki yazılım, kapsamlı dokümantasyondan değerli olduğu söyleniyor. Burada anlatılmaya çalışılan, dokümantasyon yapmayın değil, kısıtlı kaynakları etkin bir şekilde kullanın denilmeye çalışılıyor. İş gücünün maksimum iş değeri üretecek şekilde bir önceliklendirme yapılarak tahsis edilmesi gerektiği vurgulanıyor. Kısacası işten elde edeceğimiz iş değerine, değip değmeyeceği düşünülmeli ve bu şekilde iş gücümüzü en verimli bir şekilde kullanmalıyız. Dokümantasyon içinde boğulmamalıyız.
Sürekli ve sık yazılım teslimatı yani sürekli ve sık değer tesliminin yapılması da teşvik edilmektedir. Öyle ki, harcadığınız eforunuzu ne kadar doğru alanlara (değeri yüksek taleplere) harcarsanız harcayın, bu üretmiş olduğunuz iş değerini oluşturan çalışır durumdaki yazılımınızı pazardaki kullanıcılara açmadığınız sürece ilgili değeri hayata geçirmiş olamazsınız. Bu yüzden, ne kadar verimli bir proje süreci geçse de, bütün bir projeyi tek seferde oturup aylar sonunda pazara çıkartarak, pazara hızlı çıkma şansını yitirirsiniz, hatta belki de geç kalabilir, bu sürede rakibiniz oluşabilir ve sizden hızlı davranabilir. Bu açıdan da, sıklıkla üretmekte olduğunuz çalışır durumda olan (belirli fonksiyonları sağlayan), yazılım parçalarını küçük birer ürün olarak pazara ve kullanıcılara sunmalı ve müşteri feedbacklerini toplamaya başlamalısınız. Bu sayede müşteriniz tarafından önceliklendirilmiş bir kısım talebi mini-ürünleştirip kullanıcıya sunarak; aldığınız feedback, yeni öncelikler, hatalar, istekler doğrultusunda adım adım büyütebilirsiniz. Böylece kullanıcıların isteklerine daha çok cevap verme imkanı, pazara erken çıkma şansı ve daha erken kazanç elde etmeye ihtimali elde edebilirsiniz.
Üçüncü maddeye gelince; müşterilerin sürece daha fazla dahil edilerek hep birlikte bir takım olunabilmesinin öneminden bahsediyor. Yazılım projeleri çoğunlukla komplike projeler olduğundan müşteri taleplerine doğru bir şekilde cevap üretebilmek için müşterilerimizle bir takım gibi çalışıp sık sık onların geri bildirimlerini almalıyız. Müşteriler ne istediğini bilmemektedirler. Bu bilinmezlik ortamında onları da sürece dahil ederek doğru ürünü üretmek ise sizin işinizdir. Küçük parçalar üretip kullanıcı deneyimine sunarak, müşterilerin adım adım neye ihtiyaçları olduğunu ortaya çıkarmak ve onları yönlendirmek gereklidir.
Son maddede ise; Agile Manifesto değişimin öneminden bahsediyor. Değişim hızlı ve kaçınılmazdır. “ Değişmeyen tek şey değişimin kendisidir”. Bu değişime de aynı hızda adapte olunmazsa rekabette geri planda kalınır. Az önce bahsedilen müşterinin ihtiyaçlarının belirlenemediği bir ortamda, en baştaki ihtiyaçlar ile projenin sonlarına gelindiğinde çalışılan ihtiyaçların değişmesi kaçınılmazdır ve anlayışla karşılanmalıdır.
Kısaca Agile manifesto; takım olmak, önceliklendirme, sık ve sürekli değer-iş parçacığı üretme, müşteriyi takıma sokma ve değişimin hızını yakalayabilmenin öneminden bahseder. Bu şekilde üretkenliğin ve başarının artacağını anlatır. Agile metodolojiler, bu metodolojilerden bilhassa Scrum şu anda dünyada en yaygın kullanılan yazılım geliştirme yaklaşımı olarak karşımıza çıkıyor.
Size de tavsiyemiz bir projeyi yaparken, planlı hareket etmeniz olacaktır, bu şekilde karşınıza çıkan problemleri daha kolay çözebiliyor olacaksınızdır.