Yazılım Projelerinde Pankek Teorisi
Başarısızlıkları Başarıya Dönüştürmek: Deneyimin Gücü ve Değeri
Gelin dürüst konuşalım. Projeler için yaptığımız zaman tahminlemeleri, kalite beklentileri ilk defa yaptığımız bir proje için asla doğru olmayacak. Her ne kadar zihnimiz bizi her şeyi belirli ve çözülmüş gibi görünmesine ikna etse de günün sonunda proje içinde fark edeceğiz ki bir sürü detay, karmaşıklık ve sorun aslında bizi bekliyor olacak. Özellikle ilk defa yaptığımız bir proje ise, yani operasyonel ve sürekli tekrar eden bir sorunu çözmeye çalışmıyorsak, kesinlik koyma çabası, her şey kontrol altında hissi ve en “iyi sonucu çıkaracağız” bakış açısı zihnimizin bize oyunundan başka bir şey değil. Doğru şartlar sağlanmadıkça ilk girişimimiz muhtemelen en iyi şekilde sonuçlanmayacak.
Doğrusu bunu biraz da pankek yapmaya benzetiyorum. Gelin bunu biraz daha açalım.
Eğer daha önce pankek yapmayı denediyseniz, eğer çok usta değilseniz ilk bir kaç tanesinin çok da iyi olmadığını fark etmişsinizdir. İyi bir pankek yapabilmek için tavanın doğru sıcaklıkta olması, yeterli miktarda yağ kullanmak ve doğru miktarda karışım dökmek gereklidir. Ancak, her ne kadar bu teorik olarak kulağa basit gelse de, ilk pankeki yaparken bu şartları doğru ayarlamak epey zordur. Tavayı yeterince ısıtmak, yağ miktarını doğru ayarlamak ve karışımı dengeli dökmek pratik gerektirir. İlk pankek genellikle ya yanar, ya hamur kalır ya da şekilsiz olur. Ancak sürecin olağan akışı da bunu gerektirir.
Eğer daha önce çalışmadığınız bir projede çalışıyorsanız da durum yine aynıdır. İlk defa bir alan veya teknoloji üzerinde çalışırken, karşımıza çıkacak belirsizlikler ve beklenmedik zorluklar, sürecin doğal bir parçasıdır. İlk denemede mükemmel bir sonuç beklemek, pankek yaparken ilk denemede mükemmel bir pankek beklemek gibidir. Bu yüzden de projeleri küçük ve anlamlı adımlara bölmek her zaman akılcı olacaktır.
Küçük adımlarla başlamak
Ekibin yabancı olduğu ya da yan etkilerini öngörmekte zorlandığı büyük geliştirmelere bir an önce süre tahmini verip başlamak yerine, süre tahmini verme aşamasını bile fazlara bölmek akıllıca bir strateji olabilir. Örneğin, projeye başlamadan önce bir spike planlamakla başlanabilir. Örneğin, 1 hafta gibi kesin bir sürede, belirli küçük bir hedefi gerçekleştirmek için bir grup (ya da tek bir kişi) küçük bir proje yapmaya başlar. Bu küçük projenin amacı, başarmak değil aksine sorunları keşfetmek, yani başarısız olmaktır. Böylece ekip olası sorunları önceden görmüş olur.
Spike bile yapılsa, yine de proje planı yaparken ilk adımda çıkartarak eklemek gerekir. Yani mümkün olduğunca yalın ama projenin en az bilinen kısmıyla geliştirmeye başlayacak bir tasarım hazırlamak hem ekibin olası sorunları öğrenmesine katkı sağlarken hem de proje planını daha belirgin hale getirmeye de katkı sağlar.
Deneyim ve Sürekli İyileştirme
Tıpkı pankek yaparken olduğu gibi, yazılım projelerinde de ilk denemeler çoğunlukla mükemmel olmaz. Ancak her denemede elde edilen geri bildirimler ve kazanılan deneyim, sonraki adımları daha başarılı kılacaktır. Projenin erken aşamalarında yapılan bu küçük denemeler, ekibin hem teknik hem de operasyonel olarak daha güçlü olmasını sağlar.
Sürekli iyileştirme döngüsü, proje süresince devam etmelidir. Başarısızlıklar ve hatalar, projenin başarısızlığı olarak değil, öğrenme fırsatları olarak görülmelidir. Bu yaklaşım, ekibin moralini yüksek tutar ve projeye daha olumlu bir bakış açısıyla yaklaşmalarını sağlar.
Daha istikrarlı, tahmin edilebilir ve daha da önemlisi ekiplerin akıl sağlığını korumak için başarısızlıkların sürecin bir parçası olduğunu kabul ederseniz, zaten kaçınılmaz olan bu adımı kendi avantajınıza kullanabilirsiniz!
Unutmadan! Codefiction Akademi adı altında Deniz İrgin ile birlikte yepyeni bir Teknik Liderlik eğitimine başlıyoruz. Ayrıca, blog’u okuyanlara özel %25 indirimle! Ay sonuna kadar “TBLOG25” kodunu kullanarak eğitime indirimli kayıt olabilirsiniz!