27 Şubat 2024 Salı

Nano Ekipler

     S.A. Arkadaşlar,

    Bugün ekiplerin büyüklükleri ile ilgili bir konu hakkında yazmak istiyorum. Özellikle son yıllarda meşhur olan "squad" kavramı, ekipleri küçültüp daha hızlı yönetebilir, kendi içinde karar alıp hızlıca yoluna devam edebilir, başkasına bağımlı olmasın gibi sloganlarla yola çıktı ve bunu uygulayan birçok da şirket var, ama sanırım çoğu şeyin olduğu gibi bunun da suyunu çıkarmış olabiliriz. Hazırsak başlayalım.

    Mikroservis uygularken her servisi kodlayan ekip sayısı 2 pizzayla doymalı gibi bir varsayım var. Muhtemelen duymuşsunuzdur. Burada ekiplerin yukarıda da bahsettiğimiz gibi çok büyük olması istenmez. Aslında bu gayet mantıklı. Her ekibin de kendi göbek bağını kendi kesecek yetkinliklerde çalışanları da olmalı tabii ki. Yazılımcı, testçi, analist ve diğer gerekenler artık ne ise (domainden domaine bu değişiklik gösterebilir). Bu dediğim gibi kağıt üzerinde mantıklı gözükmektedir. Peki gerçek hayat uygulamalarında ne gibi sancıları olabilir, aslında iyi yönetilemediğinde ne gibi sancılar olabilir demek daha doğru olacaktır.

    En iyi çalışanını yönetici yapmak her zaman doğru sonuç vermez. Bunu duymuşsundur belki de yaşamışsınızdır. Çünkü hem kötü bir yönetiniciniz/lideriniz olabilir hem de iyi bir yazılımcıyı da kaybetmiş olabilirsiniz (bu konuda da son dönemlerde farklı şirketlerde duyduğum staff, principle etiketleri altında teknik tarafta kalmak isteyenlere yeni yollar sunulması gayet güzel bir gelişme). Buna benzer olarak da özellikle bu ekipler çok küçük olduğunda ve de ekibe liderlik yapan arkadaşa farklı konularda birçok toplantılar atandığında ekibin verimi düşebiliyor. Nasıl mı?

    Şöyle ki, daha önceleri ekipte iyi bir yazılımcı olarak çalışan bir arkadaş, belirli bir süre sonra ekipte liderliğe terfi etti. Hem ekip için hem de kendisi için güzel bir şey gibi duruyor. Çünkü gösterdiği performans kıymet görmüş ve bunun karşılığını almıştır ancak ekip lideri pozisyonuna geçtikten sonra herkesin malumudur ki artık eskisi gibi geliştirmeye zamanını ayıramayacaktır. Farklı toplantılar, belki iş mantığıyla ilgili diğer işler, planlama şu bu derken zamanın yarısını geliştirmeye verse mutlu olacak hale gelecektir. Bunda garipsenecek bir şey yok aslında. Bu işin fıtratında var, burada dikkat edilmesi gereken şey bu ekip eğer küçük bir ekip ise ve iyi bir yazılımcıyı da nispeten geliştirme tarafından çıkardıysanız bunun yerine bir şekilde doldurmanız gerekiyor. Yoksa günün sonunda birçok yarı verimli ekip sahip olma tehlikeniz var. Ekipte takım lideri dışında en azından kendi seviyesine yakın 1 senior developer olmalı yoksa hem ekipe hem de yeni takım liderine çok iş düşmüş olur, günün sonunda maalesef ki verim de bir o kadar düşer. Bu işten pek de kazanan çıkmayabilir...

    Konuyu özetlemek gerekirse ekiplerin küçük olması, hızlı hareket etmesi güzel ama bu ekipleri çok küçük parçalara da bölmemek lazım. Yani mikroservislerdeki servisleri böldüğümüzde nasıl ki belirli bir domainde çok küçük parçalara bölmüyorsak (böldüğümüzde çok farklı maliyetler, çok büyük olduğunda da farklı problemler çıkabiliyor) burada da ekipleri küçük(mikro) yapacağız derken küçücük(nano) yapmamaya gayret göstermeliyiz diye düşünüyorum.

    Sizlerin de bu konuda farklı düşünceleri, farklı gözlemleri varsa dinlemek isterim. Buradaki pencereden böyle gözüküyor olabilir ama farklı pencelerden fikirlere her zaman ihtiyaç vardır.

    "Hep birlikte Allah'ın ipine (kitabına, dinine) sımsıkı sarılın. Parçalanıp ayrılmayın. Allah'ın üzerinizdeki nimetini düşünün. Hani siz birbirinize düşmanlar idiniz de, O, kalplerinizi birleştirmişti. İşte O'nun (bu) nimeti sayesinde kardeşler olmuştunuz. Yine siz, bir ateş çukurunun tam kenarında iken oradan da sizi O kurtarmıştı. İşte Allah size âyetlerini böyle apaçık bildiriyor ki, doğru yola eresiniz." (Âl-i İmrân - 103)

Hiç yorum yok:

Yorum Gönder