Dolap teknoloji backend ekibi olarak nasıl birlikte çalışıyoruz? |@ work from home🏡
Dolap’ta geliştirme yaparken işlerimizi doğru bir şekilde sürdürmek için bazı rutinlerimiz bulunuyor. Çoğu yazılım ekibi, bu uygulamaların bazı varyasyonlarını düzenli olarak kullanıyorlar. Bu tarz ritüeller ve alışkanlıklar şirket kültürlerinin temelini oluşturuyor.
Dolap için bir önceki yazımda “Kendi içerisinde birçok ekibi barındırıyor olsa da tek bir ekip ruhuyla hareket eden dinamik ve enerjik bir startup olarak ifade edilebilir. 🛫” şeklinde bahsetmiştim. Bu sefer biraz daha detaya inerek daha anlaşılır olması için ekiplerin neler olduğunu göstermek istedim.
Ürün ve teknoloji ekipleri kendi içerisinde alt başlıkları bulunsa da en nihayetinde bir context altında toplanıyorlar. Kullanıcılarımıza en iyi deneyimi yaşatabilmek için kendi kendine yetebilen, dedicated, hızlı hareket kabiliyeti olan, uzun ömürlü ve sonuç odaklı takımlar oluşturulmuş durumda.
Software Engineer 🤖
Dolap teknoloji ekibinde yazılımcı olmak çok keyifli olduğu gibi zorlu bir süreç. Çalışan bir yazılım üretmek, kod yazmaktan çok daha fazlasını içeriyor. Yazılımlar bir tür veri depolama gerektirir ve bunların bir yerde oluşturulması, test edilmesi ve dağıtılması gerekir.
Temelde kullanıcılarımızın ihtiyaç duyduğu özellikleri veya bir problemin çözümünü geliştiriyoruz. Product ekibiyle yakın çalışıyoruz ve tüm kararları birlikte veriyoruz. Ölçeklenebilir çözümler üretmek için en son teknolojileri ve kanıtlanmış servisleri kullanıyoruz.
Sorumluklarımız;
- Test edilebilir, ölçeklenebilir ve yüksek performanslı yazılım geliştirmek
- Geliştirilen yazılımlarının bakımını yapmak ve kaliteyi iyileştirmek
- Dolap’ta bir yazılımcı, özel bir DBA veya operasyon ekibinin bulunmadığı için disiplinler arası geçişler yaparak çeşitli farklı rolleri üstlenmesi veya en azından katkıda bulunması ve bunlarla çalışması gerekiyor
- Yazılımın geliştirme ortamından production ortamına kadar hangi süreçlerden geçtiğini bilmek ve araçların nasıl kullanılacağını anlamak
- Farklı birimlerdeki ekipler ile yakın iletişim içerisinde bulunmak
Trendyol içerisindeki development, data science, security, DBA, devops vb. ekipler ile iletişimimiz bulunuyor. Bazı projelerde birlikte çalışıyoruz, ihtiyaça yönelik Trendyol tarafında geliştirilen projeleri servis olarak kullanabiliyoruz.
Dolap Team Weekly 🎤
Rutin: Her hafta, Tüm Dolap Ekibi, Max. ~30dk
Tüm Dolap ekibinin katılımı ile gerçekleştirilir, ekipler sırayla updatelerini verir ve kritik konuların paylaşımı gerçekleştirilir. Farklı birimlerdeki gelişmeler hakkında herkes güncel bilgiye sahip olması önemli. Özellikle uzaktan çalışma ortamında farklı birimlerdeki ekiplerin birbirlerinden haberdar olabilmesi ve tüm ekibinin katılımının önemli bir aktivite olduğunu düşünüyorum. Zaman yönetimi için agendaya bağlı kalmaya özen gösteriyoruz.
Daily 🌞
Rutin: Her gün, gün başlangıcında, Ürün Ekibi (Software Engineer, Mobile Engineer, QA Engineer, Product Manager, Product Designer), Max. ~15dk
Her gün ekip gün başlangıcı zoom oturumunda bir araya geliyoruz. Ekip içerisinde align olmanın güzel yöntemlerinden biri olarak günlük hedeflerimizi konuştuğumuz aktivitemiz.
Güne ekip arkadaşlarını görerek başlamak motive edici oluyor.
Closing 🎮
Rutin: Her gün, gün sonunda, Ürün Ekibi (Software Engineer, Mobile Engineer, QA Engineer, Product Manager, Product Designer), Max. ~15dk
Uzaktan çalışma dönemi ile birlikte ekibin iletişimini desteklemek, günlük hedeflerin durumunu konuşmak için aktivitelerimiz arasına eklenmiş. Ancak zamanla gün sonu stres atmak için ekibin eğlenceli hale getirdiği bir aktiviteye dönüşmüş durumda.
Grooming 🤹♂️
Rutin: Her iki haftada bir, Ürün Ekibi (Software Engineer, Mobile Engineer, QA Engineer, Product Manager, Product Designer), Max. ~30dk
Product ekibinin çıkardığı roadmap’e göre önceliklendirilen özelliklerin gündem maddesi olarak konuşulduğu ve gelecek sprint içerisinde yer alma olasılığı en yüksek olan konular üzerinden geçilir ve puanlamaları yapılır. Net olmayan görevler için netleştirilmesi ve bir sonraki sprint’e dahil edilebilir hale getirilmesi için SPIKE task açılır.
Retrospective 🙈 🙉 🙊
Rutin: Her iki haftada bir, Ürün Ekibi (Software Engineer, Mobile Engineer, QA Engineer, Product Manager, Product Designer), Max. ~60dk
Tool: FunRetro
Sprint sonunda bir araya gelip neyin iyi gittiğini ve neyin yanlış gittiğini tartışıyoruz. Her toplantıda olduğu gibi retro içinde bir agendamız var ve her zaman sadık kalmaya çalışıyoruz. Her retroda farklı bir arkadaşımız toplantıyı drive ediyor ve board’u toplantıdan önce oluşturuyoruz. Bir sonraki retronun driver’ı bu retroda toplantı aksiyonlarını not alıp ekip ile paylaşıyor. Bu sayede bir sonraki retroda aksiyonları daha rahat takip edip, gelişimi gözlemleyebiliyoruz.
Retro Agenda:
- Metrics Review 10dk
- Sprint Review 10dk
- Previous retro actions and follow-ups 5dk
- Retro prep 5dk
- Retro 30dk
Bu toplantı, ekip içerisindeki ilginç dinamikleri, beklentilerini ve hedefler ile ilgili anlayışları belirlememize yardımcı oluyor.
Planning 🚀
Rutin: Her iki haftada bir, Ürün Ekibi (Software Engineer, Mobile Engineer, QA Engineer, Product Manager, Product Designer), Max. ~60dk
Mevcut sprinti kapatarak, önümüzdeki sprint içerisinde ne yapacağımızı ve neyi nasıl yapacağımızı önceliklerine göre bu toplantıda belirliyoruz. Planlama yaparken mutlaka teknik borçlar için iş almaya özen gösteriyoruz. Sprint içerisinde aldığımız işlere bağlı olarak 2 ya da 3 sprint hedefi belirleyek sprinti başlatıp toplantıdan öyle ayrılıyoruz.
Backend Weekly 👀
Rutin: Her hafta, Backend Ekibi (Software Engineer), Max. ~60dk
Backend ekibi olarak iyileştirmesi gereken noktaları, çözülmesi gereken problemleri, güncellemeleri veya ekip arkadaşlarımızın belirlemiş olduğu bir gündem maddesini konuşmak, aksiyonlar çıkarmak, sorunları önceliklendirmek ve önümüzdeki engelleri ortadan kaldırmak için bir araya geliyoruz. Toplantıya gelmeden önce herkes konuşmak istediği konuyu önceden, ekipteki herkesin erişimi olan bir gsheet içerisine yazıyor. Konuşmalarımızı, fikir alışverişlerimizi tamamladıktan sonra aksiyonlar çıkarıyoruz ve en az bir kişinin bu aksiyon için gönüllü olarak sorumluk almasını bekliyoruz.
Genel olarak çıktılarımız “Projects” ve “Tasks” şeklinde gerçekleşiyor. Etkisi ve eforuna göre kırılımını gerçekleştiriyoruz, eforunun çok yüksek ve birden fazla task içeriyor olması durumunda “Projects” altına koyuyoruz. Aksiyonların tamamlanması bu rutinimizin en önemli fiziksel ve görünür çıktıları oluyor.
One to one 🤜 🤛
Rutin: Her hafta, Software Engineer — Tech Team Lead, Max. ~45dk
Gün içerisinde sürekli iletişim halindeyiz, ancak ekip üyeleri ile bireysel olarak zaman ayırmak, gelişimi yakinen gözlemlemek, geri bildirim almak/vermek ve ilişkilerimizi güçlendirmek için her hafta olacak şekilde 30dk’lık zaman dilimlerinde 1–1 yapmaya özen gösteriyoruz. Her hafta yapılması biraz abartlı olarak görünüyor olabilir. Ancak istikrarlı bir şekilde sürdürmeyi ve arayı açmamayı hedefliyoruz.
Analysis & Troubleshooting 🛠
Rutin: İhtiyaca göre, Software Engineer
Yazdığımız kodu koruyup kollamamız gerekiyor. Stabil ve scale olabilen, sürdürülebilir işler çıkartmamız önemli. Bunun için problemleri görmemiz ve çözümler üretmemiz gerekiyor.
Çözülmesi gereken bir problem anında, analiz edilmesi gereken veya acil bir durum olduğunda işleri hızlı bir şekilde çözebilmeliyiz. Data bizim için çok önemli, kullandığımız araçlar ile data üzerinden ilerleyerek en optimum çözümleri bulmaya çalışıyoruz. Çözümlediğimiz problemleri olabildiğince kayıt altına almaya ve diğer ekipler ile paylaşma özen gösteriyoruz.
Sorumluklarımız daha önce bahsettiğim gibi sadece backend alanı ile sınır değil, farklı disiplinlere ait şapkalar takmamız gerekebiliyor, bu yüzden analysis & troubleshooting işimizin en önemli parçalarından biri.
Coding 💻
Rutin: while(alive) { eat(); sleep(); code(); } , Software Engineer
Ekip ile birlikte sabah yapılan daily sonrası her yazılımcı kendi iş planına göre geliştirmelerini yapıyor. Pair veya mob programming yaptığımız zamanlarda oluyor. Özellikle ekibimize yeni başlayan bir arkadaşımız olduğunda en az 1 sprint pair programming yapılarak destek olunmasını önemsiyoruz. Teknik ve domain bilgisinin homojen dağılması için pair programming yaptığımız gibi, büyük işlerde toplu code review oturumları gerçekleştiriyoruz. Yazılım geliştirmek zamanımızın büyük bir bölümünü oluşturuyor.
Yazılım geliştirmede bütün standartlarımızı ekip olarak tartışarak kendimiz karar veriyoruz. Teknolojilerin çözümümüze uygunluğunu test ederek karar veriyoruz. Örneğin, bir gün içersinde 3 farklı db teknolojisinin benchmark’ını yapıp, scale olabileceğimiz çözüme en uygun teknolojiyi seçebiliyoruz.
Ekip olarak yaptığımız ama burada bahsetmediğim düzinelerce küçük şey olduğundan eminim. Ritüellerimizi sürekli sorgulayarak iyileştirmek için sık sık üzerine konuşuyor ve retrolarda yer veriyoruz.
Birlikte gelişmek ve uçtan uca yazılım geliştirme süreci içerisinde yer almak için aşağıdaki bağlantı üzerinden başvurunu gerçekleştirebilirsin. 😊👇