“Şimdi hangi işe odaklanmalıyım?”, “Bu işte takılıp kaldım, nasıl ilerleyeceğim?”, “Acaba bu iş tamamlandı sayılabilir mı?” Bu sorularla boğuştuysanız, bu yazı tam size göre. Gelin, bir yazılımcının yeni bir işi almasından, o işi bitirmesine kadarki süreci birlikte inceleyelim. Kendi tecrübelerime ve çalıştığım takımların faydalandığı süreçlere dayanarak aşağıda birkaç ipucuna yer verdim.
Bir sonraki işi nasıl seçmeliyiz
Anahtar kelime: Öncelik.
Planlama yaparken her zaman elimizdeki işlerin önceliğini göz önünde bulundurmalıyız ve takım olarak hangi işlerin en öncelikli olduğuna birlikte karar vermeliyiz. Elbette, bir sprint içerisinde bazen planlanmamış işler araya girebilir, gözden kaçan ayrıntılar veya acil bug'lar ortaya çıkabilir. Bu gibi durumlarda, öncelik belirlemek için takım içinde bir diyalog başlatmalı ve mevcut işlerin önceliğine göre bir değerlendirme yapmalıyız.
Bu sayede takımımızın öncelikleri hakkında net bir fikir edinebiliriz ve böylelikle bir sonraki en önemli iş, hep listemizin en başında yer alır. Bu şekilde, takımımız sprint hedeflerinin birkaçını kaçırmış olsa bile, en kritik işler ilk olarak tamamlandığı için aşamalı olarak MVP ürünümüzü geliştirmiş oluruz.
Takıldım, ilerleyemiyorum!
Bir yazılımcının bir işi ilerletememesinin birçok nedeni olabilir. Bu nedenleri ikiye ayırabiliriz: iç ve dış engeller. Eğer bizi bloklayan sebepleri ortadan kaldırma sorumluluğu bizdeyse, bunlara iç engeller diyebiliriz. Başka birinin yardımına veya girdisine ihtiyacımız varsa, bunları dış engeller olarak adlandırabiliriz.
İç engeller arasında; bir konudaki bilgi eksikliği, deneyim azlığı, kendine güvensizlik, aynı anda çok fazla şeyle uğraşma veya sadece o an modunda olmama gibi durumlar sayılabilir. Dış engeller ise tasarım ekibinden beklenen bir iş, şirket kararlarındaki belirsizlik, üzerinde çalıştığımız işin bağlı olduğu başka bir işin tamamlanmaması gibi nedenler olabilir. Şimdi bu iki tür engele karşı nasıl bir yaklaşım sergileyebileceğimizi ayrıntılandıralım.
İç engeller
Aklımızda tutmamız gereken en önemli şey, iletişim. Üzerimizdeki işi, bilgi veya deneyim eksikliği ya da kendine güvensizlik gibi durumlar yüzünden ilerletemediğimizde bunu takıma söylemeli, biriyle pair programming yapmalı veya yazılı olarak yardım istemeliyiz. Kolayca düşülebilecek bir yanılgı, yardım istediğimiz kişinin bizden daha kıdemli biri olması gerektiğidir; oysa çoğu zaman başka bir çift göz, doğru soruları sormamıza ve özgüven kazanmamıza yardımcı olabilir.
Benzer şekilde, üzerimizde çok fazla farklı sorumluluk olduğunda veya modumuzda hissetmediğimizde, bunu takıma iletmemiz ve belki ara vermemiz veyahut günü ağırdan almamız gerekebilir. Ağırdan aldığımız gün, kendi işlerimizi ilerletmeye odaklanmak yerine takım arkadaşlarımızın kod incelemelerini yaparak, onlara geri bildirim vererek, sorularını cevaplayarak veya pair programming yaparak yardımcı olabiliriz.
Dış engeller
Review beklediğiniz için takıldığınız oldu mu? Belki aynı Slack mesajını birkaç kez gönderdik ve günlük toplantılarda da hatırlatmalar yaptık, ama hala bir hareket yok. Böyle şeyler normaldir, olabilir. Bu durumda başka bir takım arkadaşından kodumuza göz atmasını isteyebilir veya odağımızı sıradaki öncelikli işe çevirebiliriz. Son çare olarak, eğer değişikliklerimizden eminsek ve iyi bir şekilde test ettiysek, kodu review olmadan da canlıya gönderebiliriz. Tekrar altını çiziyorum: İletişim çok önemli!
Eğer benzer şekilde review almadığı için bloklanan çok fazla iş varsa, bunun takımca ele alınması gerekebilir. Retrolarda bunu dile getirebilir ve takım olarak bir çözüm arayışına girebiliriz.
Ayrıca, başka bir departmana veya üçüncü taraflara bağlı dış engeller söz konusu olabilir. Bu durumda bu engelleri kaldırmaya çalışmak bizim etki alanımız dışında kalabilir. Dolayısıyla takıma bloklandığımızı bildirmek ve gerekirse şirket yetkililerine iletmek önemli. Böylece doğru kişiler bu sorunla ilgilenebilir ve takımımız beraber bir strateji belirleyebilir. Bu esnada başka bir iş üzerinde çalışmamız gerekse de yine de ilk işin bloklandığını insanların aklında tutmaya çalışmalıyız.
Bir işe ne zaman “bitti” demeliyiz
Takımların “bitti” anlayışı farklılık gösterebilir ama genel anlamda bir işe karşı yazılımcı olarak artık sorumluluğumuz kalmadıysa o işe bitti diyebiliriz. Bu, işin son kullanıcıya ulaştığı anlamına gelebilir veya işin ilerletilmesinin artık bize bağlı olmadığı anlamına da gelebilir.
Takımımızın “bitti” anlayışı ne olursa olsun, sıradaki işe elimizdeki iş bittikten sonra başlamak çok önemli. Tabii ki, dış engellerden dolayı bu kural her zaman korunamayabilir. Belki de cümleyi şöyle toparlamak daha doğru olur: Öncelik, sıradaki işten ziyade her zaman elimizdeki bitmemiş işte olmalı.
Bu aslında, yukarıda bahsettiğim “Bir sonraki işi nasıl seçmeliyiz” başlığıyla da yakından alakalı. Takımdaki herkes işleri öncelik bazında seçtiğinden, sprint'teki hedeflerimizin birkaçını tutturamasak bile en öncelikli işlerimizi tamamlayabiliriz. Bir işten diğerine atlamak aşağıdaki nedenlerden dolayı olumsuz etkilere sebep olabilir:
Kullanıcıya değer ulaştıramama: Diyelim ki sprint sonunda bir bitmiş iş yerine elimizde birden fazla devam etmekte olan iş var. Bu, kullanıcıya hiçbir değer katamadığımız anlamına gelir.
Bağlam kaybı: Bir önceki işi unutabiliriz. Daha öncelikli olmasına rağmen ilk üzerinde çalıştığımız işi tamamlamak artık daha da zor olacaktır. Ayrıca bağlam değişikliği yaşadığımız için gereksiz yere yorulabiliriz.
Takım çalışmasını engelleme: Takımda birden fazla yazılımcı varsa, bizim birden fazla işte çalışmamız, diğer yazılımcıların paralelde çalışmasını engelleyebilir.
Son söz
Tüm bunlar pratikte şu anlama geliyor: İç etkenlerden dolayı bloklandığımızda, kolay işlerle uğraşmak yerine yukarıda bahsettiğim adımları takip ederek halihazırda üzerinde çalıştığımız işi tamamlamaya çalışalım. Fakat doğrudan kontrolümüzün dışında kalan dış etkenler söz konusu olduğunda, bunu bildirelim ve bir sonraki işe koyulalım.
Yine de her koşulda önceliğimizin ilk iş olduğunu unutmamak çok önemli. İlk işimizi devam ettirmemizi engelleyen bloklar kalktığı anda öncelik değiştirelim ve fırsat bulduğumuz gibi ilk işimizi tamamlayalım.
İşlerimizi kolaylıklarına göre değil, en öncelikli oldukları ve takımın o işin canlıya çıkmasına ihtiyacı olduğu için seçelim.
İlerlememizi sürdürmek için takım arkadaşlarımızdan yardım alalım. Bu belki 1-2 saatlik bir pairing seansı olabilir. Sonrasında takım arkadaşlarımız da paralel olarak diğer işler üzerinde çalışabilir.
Tüm bu önerilerin tek bir amacı var: Takımınızı en etkili şekilde başarıya ulaştırmak. Ürün geliştirme zorlu bir sanat ve gün geçtikçe insanlarla ve süreçlerle ilgili daha da fazla bilgiye sahip oluyoruz. Geliştirme süreciyle ilgili anlattığım bu bilgiler benim kişisel deneyimime dayanıyor ve umarım siz de bu bilgilerden faydalanabilirsiniz. Anlattığım teknikleri her zaman geliştirebilir ve takımınızın ihtiyaçlarına göre şekillendirebilirsiniz.