Yazılım geliştirme adımları ve Cynefin hakkında - Agile Kanban Istanbul
5 Eylül 2017	• 0 Comment
Klasik anlamda yazılım geliştirme adımlarını aşağıdaki gibi tanımlayabilir miyiz ?
Zor adeğil mi? Önce vizyon sonra hedefleri belirle, kapasite ve özellikleri çıkart ve sonra bunları hikayelere ve senaryolara böl ve kodla, işte bu !
Neden evdeki hesap çarşıya uymaz?
Sorunun cevabı karmaşıklıktır. Yazılım geliştirme süreci tek düze ve doğru bir şekilde ilerlemez. Aşağıdaki şekilde göstermeye çalıştığımız gibi birbirine içine geçmiş süreçler yumağı söz konusudur.
Peki yazılım projeleri neden karmaşık ?
Karmaşıklığın sebebi arayıştır. Yazılım projelerinde hedefler ve ona bağlı özellikler, özelliklere bağlı hikaye ve senaryolar her an değişebilir.
Birçok yazılım projesi aslında yeni bir keşiftir. Daha önce hiç denenmemiş bir şeyin gayretidir. Bu durumda doğal olarak fikir değişiklikleri olabilir. İşte bu adımlar yazılım projelerini karma karmaşık hale getirecektir.
Sorumu değiştiriyorum; Yazılım projeleri neden karma karmaşık ?
Özelikle başlangıç seviyesi (start-up) firmalarda proje gelişirim süreçleri işler iyice çığırından çıkabilir -ki bu normaldir çünkü firma para kazanma modelini oturtma aşamasındadır. Bu aşama şiddetli depremlerin yaşandığı bir çağdır.
Örneğin Youtube’un ilk olarak ortaya arkadaşlık sitesi olarak ortaya çıktığını söylesem sanırım bu değişim depremlerinin ne derece büyük olduğunu hayal edebilirsiniz.
Kurumsal firmaların mevcut süreçlerinin iyileştirilmesi (kaizen) aşamalarında da işler çığırından çıkabilir. Birçok yazılım projesinde mevcut durum karma karışıklığa doğru gitmeye meyillidir. Çoğu yazılım projesi yeni bir keşiftir bu ve süreci yönetmek sanıldığı kadar basit değildir.
Yazılım projelerini yönetmek; vizyonunu, hedeflerini ve alt kırımlarını çıkartıp, bu süreci ilerletmek zannedilenden zordur çünkü hedefler hareketlidir ve bu da karma karışıklığı beraberinde getirir.
Projeniz hangi kategoride ?
Yazılım projelerinde hangi yönetim metodolojisini kullanacağınıza karar vermek için Cynefin sisteminden faydalanabilirsiniz.
Cynefin problem çözerken size hangi adımların atılması gerektiği noktasında yol gösterebilir.,
Cynefin göre bir olayın / problemin 5 karakteristiği vardır.
1 – Basit ve bilinen konular / problemler (sağ alt) : Örneğin bisiklete binmek gibi, aradaki sebep sonuç ilişkileri net ve herkes tarafından görünür konular. Böyle bir konu ile karşı karşı karşıya kalmışsanız, atılması gereken adımlar şöyledir : görünen ilişkiler arasında noktaları birleştirin (sense), bunları kategoriler ayırın ve yapın.
2 – Karışık ve bilinebilir konular / problemler (sağ üst) : Örneğin uçak kullanmak gibi, aradaki sebep sonuç ilişkisi sadece eğitimli uzmanlar tarafından görünür konular. Ya da bir saat tamircisini düşünün, bozuk bir saati parçalara ayırıp sonradan bunları rahat bir şekilde tamir edip, toplayıp size teslim edebilir. Böyle bir konu ile karşı karşı karşıya kalmışsanız, atılması gereken adımlar şöyledir : görünen ilişkiler arasında noktaları birleştirin (sense), analiz edin (uzmanlar için) ve yapın.
3 – Karma karışık konular / problemler (sol üst) : Bu kısma ait en meşhur örnek kurbağa örneğidir. Şöyle ki : Yukarıda ki saat tamircisinin yaptığı gibi, bir kurbağayı parçalara ayırıp, tekrardan birleştirebilir misiniz ? Kurbağa son derece dinamik ve yaşayan alt sistemlerden oluşur, yani konu karma karışıktır. Bu yüzden tekrardan birleştirme imkansızdır.
Böyle bir konu ile karşı karşı karşıya kalmışsanız, atılması gereken adımlar şöyledir : noktaların belirmesini bekleyin ortaya çıkan ilişkiler arasında noktaları birleştirin (sense), yapın.
Yazılım projelerinin çoğu bu kategoriye girer, istekler dinamiktir ve ortam her an değişebilir.
4 – Kaos durumda (sol alt) ise düşünecek veya plan yapacak zaman yoktur, ev yanıyordur ve evden bir an önce çıkmanız gerekir. Böyle bir konu ile karşı karşı karşıya kalmışsanız, atılması gereken adımlar şöyledir : hemen harekete geçin, ortaya çıkan ilişkiler arasında noktaları birleştirin (sense), karşı önlem alın.
5 – Henüz karar verilememiş alan (orta alan – disorder)
Yazılım projeleri , Cynefin ve metodolojiler.
Projeniz için gereksinimler çok açıksa yani projeniz bilindik alanda ise (sağ alt) o zaman projenizi yönetimi için waterfall yaklaşımını tercih edilebilir. Yani tüm projeler için çevik (agile) yaklaşımlar kullanmak zorunda değilseniz.
Eğer yazılım projeniz karışık alanda ise (sağ üst) o zaman waterfall gibi geleneksel proje yönetim yaklaşımları size yardımcı olmayabilir çünkü artık karışık alanda bulunuyorsunuz. İşte bu alanda çevik (agile) yöntemler size son derece faydalı olabilir. örneğin : Extreme Programmng (XP), Scrum vb…
Fakat eğer projeniz karma karışık (complex) alanda ise -ki yazılım projelerinin çoğu bu alanda bulunur, diğer alanlarda kullandığınız proje yönetim yaklaşımları işe yaramaz. İşte bu noktada Kanban yönetimi işte bu toptan değişim kültürüne geçişin ilk adımıdır.
Kanban bu karma karmaşıklığa çözüm olabilir ?
Kanban sisteminde katı kurallar yoktur. Dışarıdan gelen bir danışmanın “Siz herşeyi yanlış yapıyorsunuz , çekilin” demesi pek gerçekçi değildir.
Problemi çözümü yine kurumun içinde ki insanların çözmesi gerektiğini savunur ve bu yüzden kurum içi liderliği ortaya çıkartmak Kanban sisteminde ana prensiplerinden biridir.
Kanban sistemini aşağıdaki adımları uygulayarak hemen başlayabilirsiniz :
Kanban sisteminin prensipleri
Her ne yapıyorsanız onu yapmaya devam edin.
Değişimin zaman alan evrimsel bir süreç olduğunu kabul edin.
Şirket içinde rolleri saygı duyun ve değiştirmeye kalkmayın
Her seviye de liderliği ön plana çıkartın
Kanban sistemin pratikleri
İşinizi limit koyun
Politikaları açık hale getirin
Geri bildirim döngü kanallarını açık tutun
Bilimsel yöntemlerle iş birlikteliğini arttırın.
Liz Keogh – http://www.youtube.com/watch?v=G2X_7ojZwtU
Toyota Way – http://www.amazon.com/The-Toyota-Way-Management-Manufacturer/dp/0071392319
Cynefin – http://cognitive-edge.com/library/more/video/introduction-to-the-cynefin-framework/