100 bin kullanıcıda yazıldı, 4 milyonda hâlâ ayaktaydı
Udemy’nin beşinci mühendisiydim. Kurs feed’ini, bildirimleri, istek listesini ve kurs önizlemeyi yazdım, API yanıt süresini yarıya indirdim. Ayrılırken aldığım 1.000 dolarlık hisse yedi yıl sonra 1 milyon dolar etti.
Yirmi bir ayda kurs feed’i, bildirimler, istek listesi ve kurs önizleme; ayrılırken aldığım 1.000 dolarlık hisse yedi yıl sonra 1 milyon dolar kazandırdı.
Rakamlarla Udemy
- Feed 100 bin kullanıcıda kuruldu
- 4 milyonda çalışıyordu
- API yanıt süresi
- %50 düşüş
- İstek listesi e-postaları
- E-posta başına 1 dolar
- 1.000 dolarlık hisse, yedi yıl
- 1 milyon dolar
Drawium’u Mayıs 2012’de kapattım. Haziran’da San Francisco’daydım ve Udemy’nin beşinci mühendisiydim.
Beşinci mühendis olmanın günlük hayattaki karşılığı şudur: henüz yazılmamış olan her şey sahipsizdir. Kimse size sırada ne olduğunu söylemez, çünkü söyleyecek kadar çok kişi yoktur. Orada geçirdiğim yirmi bir ayda çıkan en başarılı ürünlerin yaklaşık yarısını ben önerdim ve yazdım: kurs feed’i, bildirimler, istek listesi, kurs önizleme. Bu cümlenin ağır basan kelimesi “yazdım” değil, “önerdim”.
İki feed yazdım, biri emekliye ayrıldı
Feed fikri baştan ikiye ayrılıyordu. Biri her kullanıcı için kişisel bir akıştı: takip ettiğiniz insanlar ne yapıyor, arkadaşlarınız hangi kursa girdi. Diğeri her kurs için bir akıştı: o kursun içinde kim ne soruyor, ne konuşuluyor. Kişisel akışı bir süre sonra emekliye ayırdık. Kurs akışı, şirketin çıkardığı en başarılı ürünlerden biri oldu.
Bugünden bakınca farkı şöyle okuyorum. Bir kursun içindeki insanların orada bulunmak için ortak ve belli bir sebebi vardı; akış o sebebin üstüne oturuyordu. Kişisel akışın böyle bir zemini yoktu, insanların gün içinde okuduğu diğer akışlarla yarışıyordu — ve bir öğrenme sitesinin o yarışa girmek için nedeni yok.
Teknik tarafta asıl karar başka bir yerdeydi. Feed’i, Udemy’nin 100 bin kullanıcısı varken kişiselleştirmeyle kurdum: her kullanıcının akışı okuma anında toplanmıyordu, önceden hesaplanıp kullanıcı başına kalıcı olarak saklanıyordu. Bunun bedeli yazma tarafında ödenir. Tek bir olay, o olayı görecek herkesin akışına ayrı ayrı yazmak demektir; buna karşılık okuma ucuz kalır ve kullanıcı sayısı arttıkça ucuz kalmaya devam eder. 100 bin kullanıcıda bu tercih gereğinden ağır görünüyordu. Udemy 4 milyon kullanıcıya ulaştığında aynı sistem, ciddi bir değişiklik görmeden çalışıyordu.

Tek duyuru, yüz binlerce arka plan işi
Bildirimler oradaki en zorlu projelerden biriydi. Sistemden aynı anda üç şey isteniyordu: bildirimler kişiselleştirilmiş olacaktı, toplulaştırılmış olacaktı ve kalıcı olacaktı. Üçü birbirini çekiştirir. Kişiselleştirme, herkes için ayrı bir hesap demektir. Toplulaştırma, o hesabın tek satıra inmesi demektir. Kalıcılık ise, kullanıcı üç gün sonra girdiğinde aynı satırı bulması demektir — yani hiçbir şeyi anlık üretip atamazsınız.
Ölçek buradan geliyordu. Bir eğitmenin tek bir kursta yaptığı tek bir duyuru, arka planda yüz binlerce iş tetikleyebiliyordu. Bir özelliğin maliyetini kullanıcının onu gördüğü yerde değil, veriyi yazdığınız yerde ödersiniz. Bildirim menüsü ekranda sade görünür; o sadeliğin bedeli, menüyü doldurmak için arkada çalışan kuyruktur.
Kullanıcı tabanı 40 kat büyüdükten sonra da aynı sistem çalışıyordu.

Şirketin çoğu karşıydı: kurs önizleme
Kurs önizleme fikri bana aitti ve şirketin çoğu buna karşı çıktı. İtiraz makuldü: insanlar ücretsiz açılan bölümleri arka arkaya oynatır, içeriği hızlıca indirir, kursu almadan giderdi. CEO destek verdi, yazdık, yayına aldık. Dönüşüm oranları belirgin biçimde arttı.
İtirazın hatası sayım hatasıydı. İçeriği indirip kaçacak insanları sayıyor, ödemeden önce ne aldığını görmek isteyen insanları saymıyordu. İkinci grup çok daha kalabalıktı. Bir eğitim ürününde alıcının kafasındaki soru “bu kurs iyi mi” değildir, “bu insanın anlatışını saatlerce dinleyebilir miyim”dir. Bu sorunun cevabı ancak dinletilerek verilir.

Açılış sayfası ve yorumları doğru sıralamak
Kurs açılış sayfasını sıfırdan yazdım. O dönemde sitenin en karmaşık sayfasıydı: başlık ve fiyat kutusu, müfredat, eğitmen, benzer kurslar, yorumlar, hepsi tek sayfada ve hepsi birbirini etkileyen kararlarla. Aynı dönemde kursu izlerken not alma özelliğini de yazdım.
Sayfanın en sinsi parçası yorumlardı. Yorumları olumlu oy oranına göre sıralarsanız iki oy alıp ikisini de olumlu toplamış bir yorum, yüzlerce oyun büyük çoğunluğunu toplamış bir yorumun üstüne çıkar; sıralamanın tepesini en az bilgi taşıyan gözlemler yönetir. Yapılması gereken, oranı gözlem sayısının belirsizliğiyle dengelemek.

İstek listesi ve e-posta başına 1 dolar
İstek listesi görünüşte küçük bir özellikti: kursu beğendiniz, almaya hazır değilsiniz, listeye ekliyorsunuz. Arkasına bir kampanya bağladık. Bir kursu listesine ekleyip bir ay içinde almayan kullanıcılara indirim kodu gidiyordu. Bu e-postalar ortalama olarak e-posta başına 1 dolar kazandırıyordu.
İşe yaramasının sebebi kampanyanın zekâsı değildi. Kullanıcı ne istediğini zaten kendi eliyle yazmıştı ve tarihi de belliydi. Kampanyanın işi tahmin etmek değil, hatırlatmak ve fiyatı bir kez indirmekti. Bir ürünün içinde niyetin açıkça beyan edildiği bir yer varsa, pazarlamanın en verimli hâli oradadır.
Kimsenin yol haritasına yazmadığı iş
Bunların altında, kimsenin talep etmediği bir katman vardı. API’yi baştan sona profilledim, Memcache önbellek katmanını kurdum, feed ve bildirimler için Redis tabanlı arka ucu yazdım. API yanıt süresi %50 düştü.
Aynı dönemde kod tabanını SVN’den Git’e taşıdım ve kod inceleme sürecini başlattım. Kodu taşımak teknik bir işti. Ekibin, yazdığı her değişikliğin başka biri tarafından okunmasına alışması teknik bir iş değildi; süreç değişiklikleri her zaman sosyal işlerdir ve zamanı da oradan yerler.
Beşinci mühendis olmanın avantajı burada ortaya çıkıyor: bu işlerin hiçbiri için izin istemek gerekmiyordu, sadece yapmak gerekiyordu.
Mart 2014: 1.000 dolar
Mart 2014’te ayrıldım. Ayrılırken Udemy hisselerini hisse başına 0,02 dolardan, 1.000 dolarlık aldım. Yedi yıl tuttum. O pozisyondan 1 milyon dolar kazandım.
Bu bir öngörü değildi, bir fiyat kararıydı. Şirketin ne olacağını bilmiyordum; bildiğim şey, 1.000 doları tamamen kaybetmeyi göze alabileceğimdi. Karar anındaki tek soru buydu, gerisi beklemekti. Aynı ay melek yatırımcılığa başladım; bugüne kadar 100’den fazla girişime yatırım yaptım.
Geriye bakınca
Udemy’de doğru yaptığım iki şey var ve ikisi birbirine benziyor. 100 bin kullanıcıda kurduğum feed’i 4 milyon kullanıcıda değiştirmek zorunda kalmadım. 2014’te aldığım hisseyi yedi yıl boyunca satmadım. İkisinde de bütün iş karar anındaydı; sonrasında yapılacak bir şey, düzeltilecek bir hamle yoktu.
Yanıldığım şeyler de aynı listede duruyor. İki feed’i de ben önerdim; biri şirketin en başarılı ürünlerinden biri oldu, diğeri emekliye ayrıldı. Kurs önizlemede şirketin çoğu bana karşıydı ve rakamlar beni haklı çıkardı — ama yayına almadan önce elimde onları ikna edecek bir kanıt yoktu, sadece bir tahmin vardı. Hangisinin tutacağını önceden görebildiğimi söyleyemem.
Bunun tek pratik karşılığı şu: hangi ürünün tutacağını kestirmeye çalışmak yerine, yanılmanın ucuz olduğu bir düzen kurun. Erken alınmış, uzun süre taşınabilen kararlar da böyle çıkıyor.
Teknoloji
- Memcache
- Redis
- Git
Bağlantılar
Yorumlar
Burada henüz kimse konuşmamış. İlk sözü siz söyleyin — katılmadığınız yeri yazarsanız daha da iyi.
Yorum yazın
Yorumlar önce bana geliyor. Onayladığımda burada, adınızla birlikte yayımlanıyor.