Bölüm Hakkında

  • Konuk katılımcıların kısa yaşam öyküsü ve kariyer gelişimi
  • Emlak, vasıta ve ikinci el alışveriş ürünleri ilanlarında sahibinden.com’un yeri
  • sahibinden.com çalışma kültürü ve ekip yapısı
  • sahibinden.com’da hangi tech stack’ler kullanılıyor?
  • sahibinden.com AR-GE ekipleri ve sanal tur projesi
  • sahibinden.com teknoloji ekibinin 1 günü nasıl geçiyor?
  • sahibinden.com’da Agile çalışma…
  • Çalışanların gelişimi için sunulan imkanlar neler?
  • Yazılım ekipleri içinde rotasyon ve eğitim imkanları nasıl?
  • sahibinden.com teknoloji ekiplerinin gelecek hedefleri neler?

Bölüm Metni

Ahmet Hoşgör:
— Herkese selamlar. Coderspace’in podcast serisi Codecast’in yeni bir bölümüyle karşınızdayız. Türkiye’nin çok önemli internet ve teknoloji şirketlerinden, önemli girişimlerinden birini konuk ediyoruz. sahibinden.com’dan Burak Akkaya bizimle. Kendisi iOS Team Lead olarak çalışıyor. Hoş geldin Burak.
Burak Akkaya:
— Hoş bulduk Ahmet.
Ahmet Hoşgör:
— Nasılsın? Her şey yolunda umarım.
Burak Akkaya:
— Her şey yolunda, teşekkür ederim. Sen nasılsın?
Ahmet Hoşgör:
— Süper, ben de iyiyim. Aslında bir bayram tatiline girmeden önce bu yayını çekiyoruz. Umarım dinleyenler için de keyifli bir yayın olur. Seni biraz dinleyebilir miyiz? Senin Kariyerin, Senin hayatın…Sonrasında zaten sahibinden.com’un detaylarına gireceğiz.
Burak Akkaya:
— Tabii. Ben Burak Akkaya. 2014 yılında Gebze Yüksek Teknoloji Enstitüsü Bilgisayar Mühendisliği bölümünden mezun oldum ve Accenture’da çalışmaya başladım.
Yaklaşık sekiz yıllık bir kariyerim var Accenture’da. Burada mobil alanda ilk başta Android ile başladım. Okuldan gelen, ikinci sınıftan itibaren başlayan bir Android ilgim vardı mobil alanlara.
Sonrasında Accenture’a girdiğimde bir iOS projesi fırsatı doğdu. Bu fırsatı değerlendirmek için iOS öğrenmeye başladım. 2014 yılında iOS geliştirmeye başladım. Yaklaşık sekiz yıl boyunca Accenture’da; altı yılı development, iki yılı da Mobile Architect ve mobil takım liderliği olarak devam etti.
Sonrasında da 2022 yılı itibarıyla da sahibinden.com’a geldim. Burada da iOS takım liderliği yapıyorum. Aslında kısaca kariyerimi böyle özetleyebilirim.
Ahmet Hoşgör:
— Süper. sahibinden.com’u Türkiye’de zaten çoğu kişi tarafından biliniyor ama teknoloji tarafında çok büyük bir ekip var. Sen de başka bir yerden geldiğin için ekip yapısını ve kültürü daha yeni, sıcak sıcak deneyimledin. Biraz bunları dinleyelim. Sahibinden’in içinde neler oluyor? Her hafta, her ay, her gün milyonlarca kişinin farklı amaçlarla girdiği bu app’in arkasında bu platformun arkasında neler var?
Burak Akkaya:
— Aslında şöyle bahsedeyim: sahibinden.com çok büyük bir firma. Türkiye’de neredeyse herkes tarafından kullanılan bir application’a sahibiz ve arkasında büyük bir ekip var. Yaklaşık 200 kişilik bir Ar-Ge ekibimiz var. Bunun içinde değişik domain’lere bölünmüş backend ekipleri, teknoloji ekipleri, SRE, trafik analizi, güvenlik ve network ekipleri yer alıyor. Bir de bizim taraf mobil taraf var. Orada da native iOS ve android uygulama geliştiriyoruz.
Aynı anda çok fazla kullanıcıya hizmet veriyoruz aslında. Bunun ciddi bir sorumluluğu var. Çünkü anlık bir kopma ya da sorun, çok fazla kullanıcıyı etkiliyor. Bu yüzden sürekli iletişim hâlinde kalmamız gerekiyor ve bunu birinci öncelik olarak görüyoruz.
Her zaman kesintisiz ve kaliteli bir hizmet vermeliyiz. Bunu hissettiriyor zaten. Şirkete ilk girdiğimde de hissettiğim şey. Accenture bir danışmanlık şirketiydi; oradan buraya geldim orada çok fazla şey öğrendim. Buraya geldiğimde ise bir product firmasıyla çalıştığımızda, sahibinden.com gibi bir firmayla çalıştığınızda üzerinizde çok daha büyük bir sorumluluk oluyor.
Ana hedefiniz, bu vizyonu ve misyonu sürekli kendinize şiar edinmek ve bunu sürekli kullanmak diyebilirim aslında. En önemli şey bizim için iletişim. Bu iletişimi sürekli kullanmaya çalışıyoruz.
Ahmet Hoşgör:
— Burada seninle ilgili bir şeyi de merak ettim. Hem Android hem iOS tarafını görmüşsün. Kişisel olarak ne düşünüyorsun? İki farklı dünyayla ilgili.
Burak Akkaya:
— Şöyle, üniversitede zaten çok kolay değil iOS tarafına geçmek. Mac’e ve iPhone’a sahip olmanız gerekiyor. Üniversite öğrencisi için bunlara sahip olmak çok kolay değil. Şanslı olanlar olabilir ama genelde çalışma hayatına başladıktan sonra önünüze geliyor.
Ben Accenture’da çalışmaya başladığımda bir fırsat geldi. Zaten mobil dünyada çalışmak istiyordum. İki senedir Android uygulamalar geliştiriyordum ve orada belli bir yere kadar geldim. Hedefim her zaman mobil dünyada kendimi geliştireceğim, architect olacağım hem Android hem iOS tarafında devam edeceğimdi. Ama bir noktadan sonra bir alanda derinleşmeniz gerekiyor. Sadece yatay bilgi yetmiyor. Ben iOS tarafını tercih ettim.
Bunun birkaç sebebi vardı. Birincisi, doğal olarak daha az bulunan bir teknoloji isteği Türkiye’de de dünyada da. Çok fazla ilgilenen kişi yok. Ben başladığım zamanlarda Objective-C vardı ve birçok kişi için biraz korkutucu bir dildi. Bu yüzden çok tercih edilmiyordu.
Daha sonra Swift geldi 2016–2017 gibi daha yaygınlaştı ama ben başladığımda burada bir ihtiyaç olduğunu görüp bu alanda devam edebileceğimi düşündüm. Mobil dünyayı da seviyordum. Bir süre Android ve iOS’u belli bir süre birlikte götürdüm. Hatta Accenture’da iki projede mobil architect olarak hem Android hem iOS tarafını yönettim.
Daha sonra yöneticilik kariyerim başladı ama hâlâ ekibin içindeyim ve teknik olarak kendimi geliştirmeye devam ediyorum.
Çünkü mobil dünya şöyle, kariyerime başladığım ilk zamanı düşündüğümde biz Objective-C kullanıyorduk ve manuel memory management yapıyorduk. Şu an SwiftUI’ye geçildi ve orada dünyada değişiklikler oldu. Şimdi gözlükler girdi hayatımıza, onlarla ilgili birçok şey geliyor. Arada saat girdi… Sürekli kendini dinamik tutmalısın. Bu dinamiklik benim çok hoşuma gitmişti. Sürekli bir şey öğrenmek sürekli o öğrendiğin şeyleri ortaya koymak ve uygulayıp kullanıcıların da elinde sizin yazdığınız şeyi birinci elden görmek beni çok mutlu etmişti ve aslında bu yüzden tercih etmiştim.
Ahmet Hoşgör:
— Evet süper. Peki sahibinden.com tarafına dönersek… Herhâlde Objective-C artık kullanılmıyordur, Swift kullanılıyordur ama… Hangi teknolojiler var? Cross-platform şeyler de var ama sizi muhtemelen zaten kurtarmaz, onlar çok büyük bir platform olduğu için ama belki bazı ufak projelerde deneniyor olabilir mobilde vs. Yani aslında böyle temelden girip teknolojilerden girip sonra da projeleri merak ediyorum sizin tarafta.
Burak Akkaya:
— Aslında “Objective-C kullanılmıyor” dedin ama hâlâ kullanılıyor. sahibinden.com uygulaması yaklaşık 10–11 yıl önce geliştirilmeye başlanmış bir uygulama. Türkiye’nin ilk e-ticaret uygulamalarından bir tanesi olabilir. Çok önce başlanmış, 2013 yıllarında implement edilip canlıya çıkmış bir uygulama olduğu için tabii yani Swift geliştiriyoruz. Eski kodların belli bir kısmı, kodumuzun çok küçük bir kısmı da olsa hâlâ Objective-C ve orada bazı değişiklikler olduğu zaman anca giriyoruz oraya ama günümüzün %99’u Swift geliştirme ile devam ediyor.
Mobil taraf tamamen native. Senin de dediğin gibi kullanıcı ihtiyaçlarını karşılayabilmek ve hızlı cevap verebilmek için native dillerle daha mümkün. iOS tarafında Swift, Android tarafında Kotlin ile geliştirme yapıyoruz.
Backend tarafında ise daha farklı teknolojilerin kullanıldığı yerler var. Genellikle Java base ilerleyen bir yapımız var. Java, Spring, Memcached, Elasticsearch, MySQL, MongoDB, Kafka gibi teknolojiler kullanıyoruz.
Frontend tarafında eski teknolojiler hâlâ mevcut — Angular, JSP ve jQuery — ama artık yeni teknolojilerde daha çok AngularJS kullanılıyor arkadaşlarımız tarafından.
Hibrit projeleri çok tercih etmiyoruz. Çünkü performansın çok kritik olduğu bir yerdeyiz. En ufak bir performans problemi büyük etki yaratabiliyor. Hibrit projelerin en büyük problemi bizim açımızdan yapılan, kullanılan yerde performans olarak yeterli çıktıyı sağlayamamak ve bunu yaşadığınızda projenin ortasında yaşayabiliyorsunuz. Her şey yolunda giderken bir anda kullanmanız gereken bir kütüphane dolayısıyla kullanamama ihtimaliniz doğuyor ve bunu baştan bilmiyorsunuz. Bunun performans problemi yaşatacağını da öngöremiyorsunuz. Öngöremediğiniz zaman da hem çok büyük bir zaman kaybına sebebiyet veriyor hem de siz sürekli performansı birinci öncelik olarak tutuyorsanız çok önemli orada native kalabilmek. Çünkü yetenekleri çok daha fazla. Tabii ki hibrit tarafın avantajlı olduğu çok farklı projeler var. Ama Sahibinden özelinde değil en azından.
Ahmet Hoşgör:
— Evet, sizin ölçeğinizde çok hata kaldırma lüksü yok tabii. Saniyelerin, milisaniyelerin önemi var belki. Peki daha yeni projelerden bahsedelim. İki farklı şey sormak istiyorum. İlki daha yeni projeler olabilir, ikincisi de müşteriyle, kullanıcıyla, ürün yöneticileriyle birlikte ürünü daha da optimize etme, geliştirme süreci nasıl ilerliyor? Siz de onlara hâlâ bağlı mısınız? Onların feedback’lerini duyuyormuşsunuz ama ilk sorum bu projeler olabilir. Daha önce de seninle konuştuk, challenging projeler. Belki ilginç, enteresan projeler. Çünkü Sahibinden zaten bir noktada artık daha da üst adıma geçmek için denemeler yapıyor diye duyuyorum.
Burak Akkaya:
— Evet. Aslında son birkaç senedir sadece ilan sitesi olmaktan çıkıp farklı yönlere doğru yöneldiğimiz kısımlar var bizim. Tabii ki hâlâ ilan tarafında yapmaya çalıştığımız, özellikle ikinci el alışveriş kısmında birçok proje var. Platforma soru-cevap özelliğini ekledik. Şimdi teklif kısmını bitirdik ikinci el alışverişte. Yeni ilan alt detay altyapısıyla birlikte ikinci el alışverişte yeni sayfaya sahip olduk. Bunlar geçen seneden itibaren yaptığımız geliştirmeler. Bunlar devam ediyor ama bunlar zaten bizim standart ilan uygulamamıza olan katkılar.
Bizim yaptığımız en challenging projelerden bir tanesi “Sanal Tur” adı verdiğimiz bir projemiz var. Bu “Sanal Tur” aslında şunu yapıyor: satılacak ya da kiralanacak bir evin üç boyutlu fotoğraflarını çekiyorsunuz ve bunu biz size bir sanal tur olarak sunuyoruz. Bu tamamen kendi ekiplerimiz tarafından geliştirildi. Şöyle özetleyeyim: mobil tarafta kamera kütüphanelerini ve çeşitli matematiksel algoritmaları kullanarak belli sayıda fotoğraf çekiyoruz. Bunları backend’e gönderiyoruz. Ar-Ge ekibimiz görüntü işleme teknikleriyle bu fotoğrafları işleyip odanın üç boyutlu sanal modelini oluşturuyor.
Dünyada bunu yapabilen çok az uygulama var ve genelde ücretli servisler sunuyorlar. Biz bu proje için özel bir ekip kurduk. Mobil, backend ve Ar-Ge ekipleri yaklaşık bir yıl boyunca bu proje üzerinde çalıştı.
Sonuçta dünyada az örneği olan bir ürün ortaya çıktı. Geliştirmeye de devam ettik. Gimbal entegrasyonu ekledik. Buna framework’lerle implement ederek o gimbal’i artık insan dönmesin — çünkü on beş yirmi tane fotoğraf çekiyor odanın içerisinde üç boyutlu görüntüyü tamamlayabilmek için — kullanıcılarımıza daha iyi hizmet verebilmek adına bunu odanın ortasına koysun, kendi kendine dönsün, zaten hangi açılarda dönmesi gerektiğini söylüyoruz onlara diye. Bunu entegre ettikten sonra bir de oda planını çıkarsın aynı zamanda dedik ve orada derinlik datasını da entegre ettik. Günün sonunda yaklaşık iki senelik bir süreç. Bu iki senelik süreçte dünya devleriyle yarışabilecek seviyeye geldiğimizi düşünüyoruz ve hedeflerimizden bir tanesi de belki de bunu dünya üzerinde satabilmek. Yani bu SDK’yı satabilmek bizim hedeflerimizden bir tanesi. Bunun üzerinde çalışmalara devam ediyoruz. Bunu söyleyebilirim. Bizim son iki senede yaptığımız en challenging projelerden bir tanesi buydu.
Bir diğer proje ise Otobid. Zaten reklamını da görmüşsünüzdür. Otobid’de Sahibinden’e yepyeni bir vizyon katıp ihale usulü araç satmaya başladı Sahibinden. Bunun için de tabii ki çok büyük bir teknoloji değişimine gitti. Çünkü biz bir ilan sitesi olmaktan çıkıp canlı yayın yapan ve canlı ihale sunan bir projeyle birlikte kullanıcılarımızın karşısına çıktık ve burada saniyelerin çok önemi var.
Yanlış hatırlamıyorsam iki dakikalık bir süre içinde tekliflerin alınması gerekiyor. Herkesin teklif verip doğru teklifi kullanıcıya ulaştırmaya ve insanların teklif vermekte herhangi bir sorun yaşamaması üzerine çalışıyoruz.
Sahibinden’in ne kadar sık kullanıldığını düşünürseniz bu çok önemli ve bu güveni hiçbir zaman kullanıcılarımızda kaybetmek istemiyoruz. Çünkü en büyük şeyimiz kullanıcılarımızın duymuş olduğu güven aslında. Bu yüzden buraya bir socket altyapısı geliştirdik. Yine o socket altyapısıyla birlikte aynı anda birden fazla aracın ihaleye çıktığı dönemde doğru bir şekilde doğru teklifleri kullanıcılara iletebilmek ve satın alacak olan kişilerin de bunu gönül rahatlığıyla kullanabilmesini sağladık. Şu an iyi gidiyoruz ama orada hâlâ gideceğimiz yollar var, yapacağımız, ekleyeceğimiz feature’lar var.
Bu son iki proje aslında Sahibinden altyapısından biraz daha farklı. Her zaman bildiğimizin dışında projeler Sahibinden için, bunları söyleyebilirim. Bunun dışında zaten şöyle bir şey var: Türkiye genelinde yaklaşık 65 milyon kullanıcıya sahibiz. Aylık 25–30 milyon kişi mobil uygulamayı kullanıyor. Bu sistemin aylık 10–12 milyar sayfa görüntülenmesi var.
Bunun ayakta kalabilmesini sağlayabilmek, yeni eklentilerle birlikte herhangi bir sorunla karşılaşmadan aynı stabilitede devam edebilmesini sağlayabilmek bile çok büyük bir challenge. Burada yaptığımız en büyük çalışmalardan birisi de sürekli yeni feature’lara rağmen backward compatibility’yi sağlayabilmemiz. Bunun için içeride yapmış olduğumuz birçok çalışma var. İşimizi daha da kolaylaştırmak için yeni özellikler ekliyoruz, yeni mimariler çiziyoruz kendimize. Bu şekilde devam ediyoruz. Bunu hem mobil alanda hem backend alanında hem de teknoloji alanında yapmaya devam ediyoruz.
Ahmet Hoşgör:
— Valla süper yani, hem Sahibinden dediğin gibi bu noktada bir de üstüne birbiriyle de çok bağlantısı olmayan iki tane farklı projeden bahsettin; ikisi de challenging, ikisi de farklı yerlerden challenging. Bir şeyin canlı olması zaten çok zor, çok hata kaldırmaz. O andaki bir kişideki bir gecikme bile bütün süreci sıkıntıya uğratır. Ama orada tabii socket altyapısıyla ilerlemişsiniz, tahmin etmiştim ben de o tarafı. Süper, gayet iyi duyuluyor. Bunun dışında aslında benim hep böyle Sahibinden ile görüştüğüm kişiler, birbiriyle alakaları olmasa da işte yazılımcılar, product’çılar gerçekten çok pozitif. Öyle bir intibam oldu ama hani sen içeride nasıl bir dünya var? Birisi bu podcast’i dinledi, başvurdu, başladı sizin ekibe ya da farklı backend ekibine; nelerle karşılaşıyor, nasıl geçiyor günü, tasarımcılarla, product’çılarla iletişim nasıl oluyor, nasıl bir ekibiniz var? Biraz böyle içeriye de almak isterim.
Burak Akkaya:
— Mühendis ekipleri agile çalışıyor; zaten çoğu ekipte Scrum kullanılıyor. Bazı ekiplerimiz, QA ekiplerimiz Kanban kullanıyor çünkü onların yapısı Kanban’a daha uygun olduğu için. Ekipler bu şekilde devam ediyor ama %90–95 Scrum ile birlikte ilerliyor. Ekiplerimizin iki haftalık sprint’leri oluyor, onu söyleyebilirim. Bu ekiplerin içerisinde kimler var? Developer’lar, tasarımcılar, QA’ler; manuel ve otomasyon testçisi arkadaşlarımız ve Project Manager arkadaşlar.
Sprint’e nasıl başlıyoruz? iOS tarafı üzerinden örnek vereyim; mobil takımlar da diyebiliriz. Sprint’in ikinci haftasında iki grooming toplantımız oluyor ve Project Manager’lar bize gelip “Bir sonraki sprint’te neler var? Hangi işler geliyor? Bu işlerle ilgili geri bildirimleriniz var mı?” diye soruyorlar. Bu toplantılarda tasarımcı arkadaşlar da oluyor. Biz bazen “Tasarımın şu kısmını şu şekilde değiştirebilir miyiz? Bunun şöyle bir etkisi var.” şeklinde geri bildirimler veriyoruz.
Gün içinde zaten sürekli iletişim hâlindeyiz. Şöyle düşünülmesin: “İki hafta boyunca hiç konuşulmuyor, sadece o toplantılarda konuşuluyor.” Böyle değil. Sürekli bir aradayız; tasarım sürecinde de arkadaşlar gelip fikir alıyor. Project Manager’lar da “Şöyle bir proje gelecek bir iki hafta sonra, bununla ilgili neler yapmamız gerekiyor?” diye bizimle iletişim kuruyor.
Günün sonunda konu ekibe geldiğinde, iOS ekibimiz 17 kişilik bir development kadrosundan oluşuyor; benimle birlikte 18 kişiyiz. Konu ekibe aktarılıyor. Bu aşamada “Burada backend’e ihtiyacımız var, backend ekibiyle toplantı yapmamız gerekiyor.” gibi durumlar ortaya çıkabiliyor. Bu da süreci başka bir noktaya taşıyor.
Backend ekipleriyle birlikte çalışmaya başlıyoruz. Öncelikle bir kontrat üzerinde anlaşıyoruz: “Biz şöyle bir servis istiyoruz, sizden şöyle bir response alacağız. Uygun mu?” diye konuşup netleşiyoruz ve ardından ilerliyoruz.
İki haftalık sprint’in sonunda sprint review yapıyoruz: Neler yaptık, neleri tamamladık, nelerde çalışmaya devam ediyoruz, nerelerde blokelendik? Günlük olarak da daily toplantılarımız oluyor. Bu toplantılarda herkes kendi günlük durum güncellemesini paylaşıyor.
Takımın tamamını product işleriyle doldurmuyoruz. Yaklaşık %20–30’luk kısmı teknik borçları kapatmaya ya da teknik geliştirmelere ayırıyoruz. Bu teknik geliştirmelerden birazdan, mobil dünyada iOS tarafında neler yaptığımızı anlatırken bahsedeceğim. %20–30’luk kısım bu şekilde ilerliyor; geri kalan zamanda ise product’ın getirdiği işleri yapıyoruz.
İki haftalık süreçte ekibimizin yaklaşık 2–3 saatlik bir toplantısı oluyor. Burada “technical session” dediğimiz bir bölüm var. Ekipteki herkes “Bu projeye ne katabiliriz?” diye düşünerek fikirlerini paylaşıyor ve takımdan bununla ilgili geri bildirim alıyor.
Dünyadaki büyük şirketlerin iOS development ekipleri neler yapıyor, hangi geliştirmeler üzerinde çalışıyor; bunları araştırıyoruz. Blog yazılarını okuyor, podcast’lerini takip ediyoruz. Ardından “Şu firma böyle bir geliştirmeye başlamış, bunu Sahibinden’de nasıl uygulayabiliriz?” ya da “Sahibinden’de uygulanabilir mi?” diye 15–17 kişinin birlikte tartıştığı bir toplantıya dönüşüyor.
Burada en önemli nokta şu: Kıdem farkı gözetmeden herkesin fikrini rahatça ifade edebilmesini istiyoruz. Bunun bizi ileri taşıdığını gördük. Bunu yapabildiğimizi düşünüyorum. Genç ve dinamik bir ekibiz; bu nedenle yeni şeyler denemek konusunda heyecanlıyız. Değişimden çekinmiyoruz.
Sahibinden içindeki ekipler genel olarak bu yaklaşımla çalışıyor. Günümüz ve iki haftalık sprint sürecimiz temelde bu şekilde ilerliyor.
Ahmet Hoşgör:
— Evet kulağa gerçekten güzel geliyor, %20’lik kısmı kendinize ayırmanız da güzel. O teknik borçları kapatmak konusu… Teknik taraftan iOS tarafında mobilde yaptığınız daha farklı şeyler var mı? Onlardan da bahsedeceğim dediğin için bir tekrar sormak istedim.
Burak Akkaya:
— Aslında az önce projelerden bahsederken şunu söylemedim: Bu bizim için ayrı bir proje değil ama uygulamanın hayatta kalabilmesi için yapılması gereken bir şey. İlk başta da söyledim, Sahibinden uygulaması 10 yıldır geliştiriliyor. 10 yıldır geliştirilen ve birçok teknik borcu olan bir projeden bahsediyoruz ve doğal olarak bunun yenilenmeye, ilerlemeye ihtiyacı var. Biz de bunun için aslında çaba sarf ediyoruz.
Şöyle; bizim yaptığımız aslında şu: Sahibinden’in iki uygulaması var. Son kullanıcıların bildiği Sahibinden uygulaması ve kurumsal kullanıcılara sunduğumuz Sahibinden Pro uygulaması. Bu iki uygulamanın ortak birçok özelliği var ama bazı feature’lar sadece Pro’da var ve Pro üzerinden kullanılıyor. Bu nedenle uygulamayı modüler hâle getirmeye karar verdik yaklaşık 1–1,5 yıl önce. Bu yüzden de “Nasıl modüle bölebiliriz?” diye düşündük. Proje 2013 yılından beri geliştiriliyor; içerisinde kullanılmayan, atıl kalan çok kod parçası var, Objective-C var. Yaklaşık 300–350.000 satırlık bir projeden bahsediyoruz.
Biz çalışırken şöyle şeylerle karşılaşıyorduk: Bir alan değiştiriyoruz. Bu alanı değiştirdiğimizde bambaşka bir alandan bir side effect ile karşılaşıyoruz çünkü oranın birbirine dependent olduğu kısımlar varmış. Bunları görebilmek bütün monolit yapıda kolay değil. Biz de feature bazlı uygulamayı modüllere bölmeye karar verdik. Bu aslında işimizin en kolay tarafıydı çünkü böyle yapılması gerekiyordu. Bunu yapmaya karar verdik ama challenge şu: Biz bunu yaparken uygulama canlıda yaşamaya devam ediyor. Biz release çıktığımızda kullanıcıların bundan etkilenmemesi lazım ki iOS tarafında aylık baktığımızda yaklaşık 6–7 milyon aktif kullanıcı var, günlük kullanımdan bahsediyorum. Bu da yaklaşık 5–6 milyar sayfa görüntülenmesine denk geliyor. En ufak bir hata aslında çok fazla kullanıcının aynı anda etkilenmesi demek; ilk başta söylediğim şeyin aynısı. Bizim için challenge burası.
Ve bütün altyapıyı değiştiriyorsunuz; authentication yapısını çıkartıyorsunuz, farklı bir framework olarak yapıyorsunuz; üzerine gelip network yapısını çıkartıp farklı bir şey yapıyorsunuz; local database yapısını çıkartıp farklı bir framework’e koyuyorsunuz; ilan detayını çıkartıp farklı bir modüle koyuyorsunuz ve bunları yaparken Objective-C olan bütün kodları da ortadan kaldırıyorsunuz. Herhangi bir akışın kaybolmaması lazım. Tabii ki bunlar sadece development ekibinin tek başına yapabileceği şeyler değil; product ekibimizden de çok büyük yardımlar aldık bunlar için.
Burada biz şunu her zaman istedik: Birincisi, güvenli olmalıyız; safe bölgede kalmanız gerekiyor. Eski kodu değiştirirken direkt “Hadi silelim.” ya da “Bunu artık kullanmayalım.” dediğimiz yerler değil; feature flag’ler ile bunları yönetmeye başladık. Yaptığımız ilk şey bu. Kullanıcılara yüzdesel açılımlarla başladık; yani yeni feature kullanımı, canlıya çıktığımız anda %100 kullanıcıya açılmadı. %5’lik açıldık mesela ve bir problem var mı, hemen düzeltelim dedik. Problem varsa flag’i kapatıp tekrar eski hâlini kullanalım. Tabii ki sorunlar yaşadık ama çok hızlı tepkiler verdik buna.
Ve bu kadar dinamik bir yapıyı Sahibinden gibi çok büyük bir projenin içerisinde kurabilmek bile — benim açımdan en azından, ekibim adına şunu diyebilirim — çok iyi bir başarıydı, çok büyük bir başarıydı ve bunu da sağladığımızı düşünüyorum.
Şimdi artık yavaş yavaş yaptığımız her şeyi modül hâline getirmeye başladık çünkü monolit yapıyı büyütmüyoruz. Bu hâle getirdik artık projeyi ve bunun üzerinde çalışmaya da devam ediyoruz. Hâlâ düşünüyoruz: Neler katabiliriz, daha iyi neler yapabiliriz? Çünkü siz teknoloji stack’inizi geliştirdikçe karşılaştığınız problemlerin büyüklüğü değişiyor. Daha büyük problemlerle karşılaşıyorsunuz. Çözmesi daha zor problemlerle, çünkü daha niş problemlerle karşılaşıyorsunuz artık. İşte dependency’i nasıl yapacağım, ilk başta bu side effect’leri nasıl çözeceğim diye düşünürken artık dependency’leri nasıl yöneteceğime geçtiniz. Daha sonra navigation’ı nasıl yöneteceğim diye düşünmeye başladınız ve bütün bunları yaparken şimdi de artık gerçekten dynamic type’larla nasıl çalışabilirim diye düşünmeye başlıyorsunuz.
Bu da aslında yaptığınız bütün çalışmaların sizi challenge ettiği anlamına geliyor ve bu da takımı geliştiriyor tabii ki; çok fazla şey görüyoruz. Ekipteki herkesin buraya katkı vermesini istiyoruz. Yani tek bir kişi alsın ya da üç kişilik bir ekip yapsın bunu gibi bir düşüncemiz yok. Bu ekibin içerisinde yer alan herkes dönüşümlü olarak, rotasyonla birlikte bu teknik kısma giriyor. İrili ufaklı birçok iş yapıyor ve orada neler yapıldığını takip ediyor. Zaten bahsettiğim bu technical session toplantılarında da yapmış olduğumuz her şeyi ekiple paylaşıyoruz.
Bizi inanılmaz geliştiren bir taraf. Hele ki kariyerinin daha nispeten başında olan arkadaşlarımız için çok bulunmaz bir nimet. Bu kadar kullanıcıya hizmet eden bir uygulamayı değiştiriyorsunuz ve değiştireceksiniz; bunun bir parçasısınız. Zaten ekipten aldığım sürekli feedback’ler şu şekilde: “Biz bir şeyleri değiştiriyoruz ve bunları kullanıcıların kullandığını görebiliyor olmak inanılmaz tatmin ediyor sizi iş anlamında.” diye. Bu şekilde devam ediyoruz biz de hayatımıza.
Ahmet Hoşgör:
— Büyük bir ürün şirketi olmanın getirileri… Biraz böyle Jenga oynuyormuşsunuz gibi hissettiriyor. Dev bir yapı var, onu böyle yavaş yavaş optimize ediyorsunuz, düzeltiyorsunuz. Peki burada sonlara yaklaşırken tabii çok büyük ekipler olduğu için ekipler içerisindeki rotasyon, eğitim… Yani dinamik ve genç ekipler de olduğunu söyledin. Bunlar nasıl gerçekleşiyor? Biraz böyle hani organik olarak ortaya çıkıp yeni şeyler öğrenmesini, insanların anlatmasını da sanırım teşvik ediyorsunuz ama orayı da merak ediyorum; iyi bir engineering kültürünüz var gibi duruyor.
Burak Akkaya:
— Native iOS veya Native Android tarafında tabii ki proje bazlı rotasyonlar yapıyoruz çünkü teknoloji stack’leri birbirinden çok daha farklı ama backend ekiplerimiz böyle değil. Backend ekiplerimiz arasında rotasyonlar oluyor; bazen bunlar ihtiyaç hâlinde oluyor, bazen istekli oluyor. Çünkü bir tarafta başlarken az önce bahsettiğim London tarafında bambaşka bir teknoloji stack’ine geçildi. Socket altyapısıyla Node.js’te bir geliştirmeye başlandı ve burada bulunmak isteyen insanlar da oluyor. Doğal olarak orası için yeni bir ekip oluşturuyoruz. Backend ekiplerinin bazen yoğunlukla alakalı değişiklikleri oluyor; işte ikinci el alışveriş tarafında atıyorum çok büyük bir yoğunluk var, oraya kişileri kaydırabiliyoruz. Bu şekilde bir rotasyonumuz var içeride.
Bunların dışında yeni şeyler denemek, sisteme yeni şeyler katabilmek çok önemli ve bunları yaparken de bunu diğer ekip arkadaşlarımızla paylaşmamız gerekiyor. Bunu iOS için az önce anlattım ama bunu şirket genelinde yaptığımız session’larımız da var. D2D dediğimiz Developer to Developer session’ları düzenliyoruz ve arkadaşlar burada aslında hem kendi ekiplerinde olan bitenler hem de yeni ekledikleri şeylerden bütün şirketteki developer arkadaşlara sunumlar yapıyorlar. Burada ilgisini çeken insanlar da o arkadaşla iletişime geçiyor ve projede nasıl kullanılmış, neler kullanılmış inceleme fırsatı buluyor. Bu da bizi tabii ki doğal olarak yeni şeyler öğrenmeye doğru itiyor. Çok hevesli ekiplerimiz var içeride bunu yapmak için.
Paralelde bizim Technical Roadmap toplantılarımız var ama burada da bütün mühendislik ekibi bir araya gelip “Biz nereye gidiyoruz ve yeni olarak ekibimize ne ekledik?” konuşuyor. Bir hafta DevOps çıkıp şunu anlatıyor, diyor ki “Biz şunları şunları yaptık.” Bir hafta mimari ekipten biri çıkıp network altyapısıyla ilgili şu değişiklikleri yaptık diye anlatmaya başlıyor. Aslında herkesin şirketin nereye gittiğinden, şirketin neler yaptığından haberdar olmasını istiyoruz.
Bunun dışında kişilerin gelişimine de önem veriyoruz tabii ki ve işte sınıf içi eğitimler aldırıyoruz, takım liderleri olarak bizim de dâhil olduğumuz eğitimler yapıyoruz. Geçen sene Domain-Driven Design yaptık, Kubernetes eğitimleri devam ediyor, Python eğitimleri oldu gibi birçok eğitim oldu. Bunların dışında teknoloji tarafının, yani mimari ekiplerin yapmış olduğu farklı eğitimler de oldu. Bunlarda da ekibi desteklemeye çalışıyoruz; gerektiği yerde eğitim platformları satın alıyoruz ekip için, bunları kullanıyoruz. iOS tarafında şunu yapmaya çalışıyoruz: Şu anda design pattern’lerle alakalı kitaplarla ilgili bir akış var. Online bir platform satın alıp bunu ekibin içerisinde dağıtıyoruz. Bu şekilde aslında sadece projeyle bağlı kalmasını istemiyoruz insanların çünkü ne de olsa bir product firmasıyız ve belli bir yerden sonra rutine bağlama tehlikesini hiçbir zaman göze almak istemiyoruz. Biz rutine bağlı kalmak istemiyoruz, sürekli gelişmek istiyoruz. Bunun için içeride çalışan arkadaşlara nerelerde nasıl destekler verebiliriz diye bütün takım liderleri kafa patlatıyor ve günün sonunda da bunları arkadaşlarımızla buluşturmaya çalışıyoruz.
Ahmet Hoşgör:
— Harika, D2D ismi de bence çok güzel, keyifli bir isim olmuş. Kapatmadan Burak, şunu son olarak sorabilirim: Yani bu programı dinleyenler ya da farklı şekillerde Sahibinden.com’a başvurmak isteyenler, başvurmayı düşünenler için son bir çağrın olur mu? Kimleri beklersiniz ekiplerinize, nereden başvurabilirler? Son olarak sözü bu anlamda sana bırakayım.
Burak Akkaya:
— Bize LinkedIn üzerinden başvurabilirsiniz. Zaten orada ilanlarımız açık, aktif olan ilanlarımız gözüküyor. Kimler başvursun sorusuna da şunu diyebilirim; benim de buraya gelmeden önce en büyük motivasyonum buydu: Çok büyük bir kullanıcı kitlesine hizmet veren, bu hizmeti kesintisiz sürdürebilmek için sorumluluk almak isteyen, içeride yaşanan birçok challenge’a karşı kendini geliştirmek isteyen; bu ekiplerle birlikte —işimize eğlence katmayı da çok seviyoruz— eğlenmek isteyen ve aynı zamanda kendini geliştirmek isteyen, kariyerinin başında ya da ilerisinde, iyi pozisyonlara gelmiş olan fark etmeksizin herkesi buraya bekliyoruz. Çünkü katkı yapabileceğimiz çok fazla yer var. Sahibinden çok büyük bir platform. Çok büyük bir proje var hem mobil taraf hem backend tarafında. Buralara katkı sağlayabileceğini düşünen herkesi de buraya bekleriz. Ben buraya bu isteklerle gelmiştim. Çok da mutlu oldum, onu söyleyeyim. Bunları yapabiliyor olmak bile insana çok büyük keyif veriyor. Bu şekilde düşünen herkesi buraya bekliyoruz.
Ahmet Hoşgör:
— Bugün Sahibinden.com’dan iOS Team Lead olarak çalışan Burak Akkaya ile konuştuk. Su gibi aktı. Hem kendisini dinledik hem Sahibinden.com’u dinledik. Sahibinden.com’u hepimiz biliyoruz ama biraz arkasını öğrendik ve aslında benim sanırım Burak üçüncü kişi oldu yakından tanıdığım Sahibinden product ve teknoloji ekiplerinden. Tanıdığım herkes çok böyle alçak gönüllü, pozitif, dinamik, genç bir ekip hissiyatı verdi bana. Çok teşekkürler konuk olduğun için Burak, çok keyifli bir bölümdü.
Burak Akkaya:
— Ben teşekkür ederim davet ettiğiniz için.
Ahmet Hoşgör:
— İyi günler, görüşmek üzere.