Asenkron Daily Standup: Toplantıyı Öldürüp Koordinasyonu Nasıl Sağlarsınız?
Summary
- Bu Bir Hak Değil, Ayrıcalıktır: Asenkron standup yüksek güven ve doğru bir board gerektirir. Takımınız zaten işlevsizse, toplantıyı Slack’e taşımak sadece işleri daha da kötüleştirir.
- Durum Raporu Vermeyi Bırakın: Standart 3 soruyu çöpe atın. Done’a ne geçtiğini, sırada ne olduğunu ve spesifik olarak kimden neye ihtiyaç duyulduğunu sorun.
- Devre Kesici Koyun: Bir engel (blocker) metin kanalında 24 saat boyunca fark edilmeden bekliyorsa deney başarısız olmuştur. Egoyu bırakın ve senkron toplantıya dönün.
Tamamı aynı saat diliminde çalışan yedi kişilik bir takımdık. Her sabah 09:15’te erkenci tayfa tam da bölmek üzere olduğumuz iki saatlik bir derin çalışmanın ortasındayken, geç kalkanlar daha ilk kahvelerini dolduruyordu. Toplantı 8 dakika sürüyordu. Bağlamı (context) geri kazanmak ise 40 dakika. En sonunda bir backend dev retrospektifte patladı: “Sabah 07:00’de bir production bug’ını çözdüm. Şimdi saat 09:15, akıştayım (flow) ve benden durup ne düzelttiğimi anlatmamı ve tekrar odaklanmak için 30 dakika harcamamı bekliyorsunuz.” Haklıydı.
Bu makale, Daily Standup Anti-Pattern’leri rehberindeki asenkron alternatifini detaylandırır ve Agile Serisi — Hızlı Başvuru Rehberi’nin bir parçasıdır.
Gerçeklik Kontrolü: Kimler Asenkronu Hak Eder?
İnsanlar asenkron standup’a yanlış sebeplerle geçiyorlar. Her sabahki toplantıdan nefret ediyorlar çünkü o 15 dakika, yöneticiye verilen 30 dakikalık bir statü raporuna dönüşmüş durumda. Buldukları çözüm ise bu işe yaramaz statü raporunu alıp bir Slack kanalına taşımak.
Asenkron, bozuk bir standup’ı düzeltmez; onu daha da belirginleştirir. Toplantıyı iptal etmeden önce bu olgunluk testini geçmeniz gerek.
Board Asla Yalan Söylemez
Eğer bir ticket “In Progress” statüsündeyse, biri aktif olarak ona kod yazıyor demektir. Jira board’unuz güncel olmayan statülerin bir mezarlığıysa, asenkron standup bir ölüm fermanıdır. Referans materyali kurguysa, metin üzerinden koordine olamazsınız.
Okuma Disiplini
Güncelleme yazmak kolaydır. Kendi gününüze başlamadan önce altı kişinin daha güncellemesini okumak ise disiplin gerektirir. Ekibiniz Slack güncellemelerine sadece “yayın yapılan bir günlük” muamelesi yapıyorsa asenkron patlar.
Anında Eskalasyon
Engeller standup saatine saklanmaz. Saat 14:00’te takıldıysanız, saat 14:00’te yardım istersiniz. Asenkron standup sadece gözden kaçan detaylar için bir güvenlik ağıdır, birincil eskalasyon mekanizmanız değil.
Odak Kesintisi
Asenkron standup’ı meşrulaştırmak için devasa bir saat dilimi farkına ihtiyacınız yoktur. Tüm ekibiniz aynı şehirde olsa bile asıl amaç salt derin çalışmayı korumak ve 09:15 akış kesintisini engellemektir. Yalnızca sırf “iş arkadaşlarınızla konuşmaktan kaçmak için” asenkrona geçmediğinizden emin olun yeter.
Format: 3 Soruyu Çöpe Atın
İlk asenkron denememizde o klasik üç soruyu kullandık: Dün ne yaptın? Bugün ne yapacaksın? Engelin var mı?
Sonuç, Jira Tombalası’nın metin haline dönüşmesiydi:
“Dün: API üzerinde çalıştım. Bugün: API’ye devam. Engeller: Yok.”
Fiziksel bir odada olsaydık, Scrum Master veya bir çalışma arkadaşı gözlerini kısıp, “Tamam da spesifik olarak nereye takıldın?” derdi. Slack’te ise o oyalayıcı cümle herkesin gözünün önünden akıp gitti. Bot şablonunu değiştirip kesin, sonuç odaklı güncellemeler talep ettik:
| Alan | Ne Yazılmalı | İyi Örnek |
|---|---|---|
| Bitti (Done) | Dünden beri elde edilen doğrulanabilir sonuç. | ”API rate limiter: PR #412 açıldı ve CI’dan geçti.” |
| Sırada (Next) | Board referanslı spesifik sonraki adım. | ”SP-234’ü alıyorum. Edge case’ler için Deniz’le pair yapacağız.” |
| Risk | Sizi yavaşlatabilecek herhangi bir şey. | ”AWS dökümanları belirsiz. Öğlene kadar IAM rollerini çözemezsem DevOps’u darlayacağım.” |
| İhtiyaç (Need) | Açık yardım veya review talebi. | ”PR #412 için code review lazım — @Ayşe, bu modülü en iyi sen biliyorsun.” |
Katılım Kuralları
Kurallara ihtiyacınız var. Odada “timebox” sınırlarını koruyan bir kolaylaştırıcı (facilitator) yoksa, asenkron bir standup yavaşça kaotik bir çöplüğe dönüşür.
10:00 Sınırı
Güncellemeler “ne zaman çalışmaya başlarsam” yazılmaz. Herkesin mesaisi nasıl başlarsa başlasın tam 10:00’da o güncellemeyi girmiş olması konusunda anlaştık. Pencereyi kaçırmak açıklama gerektirir. 3 kez kaçırırsanız ekip senkrona geri döner.
Sessizlik Bir Bug'dır
Biri çıkıp “PR review lazım @Emre” diyorsa, Emre’nin makul bir süre içinde (👀 veya 🙌 ile) tepki vermesi gerekir. Kanal, hiç thread yanıtı veya emoji almayan güncellemelerle doluysa kimse okumuyor demektir. Standup ölmüştür.
30 Dakika Kuralı
Takıldığınızı (blocked) söylemek için asenkron check-in zamanını asla beklemeyin. Kafanızı 30 dakikadır bir probleme vuruyorsanız, derhal dev kanalında yazın.
Kıdemli Dev Tuzağı (Ve Kırmızı Bayraklar)
Asenkron modelde üçüncü sprintimize geldiğimizde her şey çok sessizdi. Fazla sessiz.
Salı günü Deniz yazdı: “Webhook signature doğrulaması üzerinde çalışıyorum. İyi gidiyor.”
Çarşamba: “Hâlâ webhook imzalarındayım. Küçük edge case’ler.”
Perşembe: “Webhook’lar. Bitiyor gibi.”
Cuma senkronize olduğumuzda burndown chart dümdüzdü (flatline). Deniz üç gün boyunca kriptografik bir bug’a takılıp kalmıştı. O bir kıdemli geliştiriciydi (senior dev) ve gururu onu sorunu çözmeye “sadece 10 dakika uzaklıkta” olduğuna inandırmıştı. Senkron bir toplantıda, o stresi Çarşamba sabahı ses tonundan yakalardık. Metin üzerinden ise “İyi gidiyor” ifadesinin arkasına kolayca saklandı.
Sprint hedefini kaçırdık. O öğleden sonra Devre Kesici’yi (Circuit Breaker) inşa ettik.
Devre Kesici Protokolü
Aşağıdaki tetikleyicilerden (trigger) herhangi biri gerçekleşirse, asenkron denemesi otomatik olarak duraklatılır ve uzlaşmaya yer yoktur.
- 48 Saat Yalanı: Bir task, board üzerinde hiçbir pürüz olmadan iki gün boyunca birinin güncellemesinde sabit kalıyorsa. (Otomatik tetik: Yarın senkron standup).
- Görünmez Blocker: Biri tam bir gün boyunca takılı kaldıysa ve kimse el uzatmadıysa. (Otomatik tetik: Sprint’in geri kalanı için senkron standup).
- Hayalet Kasaba (Ghost Town): Güncelleme katılımı veya okuma tepkileri %80’in altına düştüğünde. (Otomatik tetik: Gelecek sprint senkrona dön).
Uzlaşma: Hibrit Model
Tamamen asenkron çok izole ediciydi. İnsan temasını özledik. Tamamen senkron ise çok bölücüydü. Bu yüzden uzlaştık.
- Pazartesi (Senkron, 15 dk): Hafta sonunu yakala, haftanın önceliklerini belirle, burndown’a birlikte bak.
- Salı - Perşembe (Asenkron): Derin çalışma (deep work) bloklarını koru. Saat 10:00’a kadar Slack’e yaz.
- Cuma (Senkron, 15 dk): Sprint sağlık kontrolü. “Hedefi vuracak mıyız? Kanayan bir yara var mı?”
Bu spesifik kurgu, odayı okumamız gereken 15 dakikalık yüz yüze zamanı bize verirken, Salı-Perşembe arasındaki “üretici programını” korudu. Cal Newport’un Deep Work kitabında savunduğu gibi, sabah ortası kesintilerini kaldırmak, geliştiricilerimizin karmaşık mimari problemlere, yaklaşan bir Zoom görüşmesinin yarattığı o sinsi tedirginlik olmadan dalabilmelerini sağladı.
The Bottom Line
Asenkron standup’lar tembel takımlar için bir kestirme yol değildir; disiplinli takımlar için bir optimizasyondur. 09:15 toplantısını öldürmek istiyorsanız, yerine metin kanalında acımasız bir dürüstlük ve katı bir board hijyeni koymak zorundasınız.
Deneyin. Ancak board gerçeklikten kopmaya başlarsa ve meslektaşlarınız belirsiz Slack mesajlarının arkasına saklanmaya başlarsa, imdat ipini çekin ve videoya geri dönün. 15 dakikalık bir toplantı yapmanın hiçbir utanç verici yanı yoktur. Ancak kimse birbiriyle dürüstçe konuşmak istemediği için bir sprint’i batırmanın derin bir utancı vardır.