İçeriğe geç
Seçkin Can Şahin

Olimpiyattan ürüne: haklı olmak kazanmak değil

Olimpiyat kampları, ACM ICPC, SPOJ. Yarışma programcılığının hangi kası kurduğunu, hangi refleksi bozduğunu birkaç şirket kapattıktan sonra ayırt edebildim.

7 dakikalık okuma

2007’de üniversite sınavında 1,8 milyon aday arasında 30. oldum. 2006 ve 2007’de, her yıl on beş kişinin alındığı Ulusal Bilgisayar Olimpiyatı kamplarına seçildim. Sonrasında ODTÜ’yü ilk kez ACM ICPC’ye taşıdım; 2010’da Los Angeles’ta 74 takım arasında 6. olduk.

Bu sıralamaların hepsi gerçek ve hepsi aynı şeyi ölçüyor: verilmiş bir problemi, verilmiş bir sürede, doğru cevabı olan bir soruya karşı çözebilme becerisini.

Ürün kurmak bu değil. Yarışmada üç şey hazır gelir — problem, doğru cevap ve hakem. Üründe üçü de yoktur. Problemi siz seçersiniz, cevabın doğru olup olmadığı bazen yıllarca belli olmaz, hakem de yoktur; yalnızca para veren ya da vermeyen insanlar vardır ve size neden vermediklerini söylemezler. Bu farkı öğrenmem on yıl aldı ve öğrenirken birkaç şirket kapattım.

Kamp gerçekten neyi kurar

Yarışma programcılığında (competitive programming) uzun süre kaldım. SPOJ’da 120’den fazla problem çözdüm, bir dönem Türkiye’nin en iyi yarışmacısıydım; Topcoder’da 85. yüzdelik dilimdeydim. ODTÜ’de 2009 ve 2011 ICPC takımlarını çalıştırdım. 12. ve 13. ODTÜ Programlama Yarışması’nın teknik ekibini yönettim, soruları ve çözümlerini hazırladım.

Bunların bende bıraktığı kalıcı şey rakamlar değil. Şu: bir problemin karşısında, çözemeyeceğinizi düşündüğünüz hâlde saatlerce oturabilmek. Cevabın gelmediği dördüncü saatte paniğe kapılmamak, “bu bende olmaz” cümlesini kurmamak. Bu beceri nadirdir ve öğretilmesi zordur. Bugün yazdığım her satırın altında o kas duruyor.

Kampın öğrettiği ikinci şey çözme tarafında değil, hazırlık tarafındaydı. Soru çözmek insanı iyi bir çözücü yapar. Soru hazırlamak başka bir şey öğretir: hangi problemin sorulmaya değdiğine karar vermek zorunda kalırsınız. Bir problemin zor olması onu iyi yapmaz. ODTÜ yarışmalarına soru hazırlarken bunu ilk kez hissettim, ama üzerine düşünmedim. Düşünseydim çok vakit kazanırdım.

Satranç programı: hakemin olmadığı ilk karar

2007’de, lisedeyken bir satranç motoru yazdım. Minimax, alfa-beta budama, iteratif derinleştirme, uyarlanabilir hamle sıralaması, pozisyon hash’leme, bir de gelişmiş bir pozisyon değerlendirme fonksiyonu. O sıralar rekabetçi satranç oynuyordum; program açılışta ve orta oyunda benim kadar iyi oynuyordu.

Oyun sonunda rekabetçi değildi. Sebebi teknikti: tahtada az sayıda hareketli taş kalınca arama uzayı çok büyüyor ve işi ancak büyük bir oyun sonu veritabanı çözüyor. O veritabanını kurmak pahalıya patlayacaktı, ben de atladım.

Bugün baktığımda o karar, hayatımda verdiğim ilk ürün kararı. Yarışma ölçeğinde tam bir başarısızlık: program bazı pozisyonlarda doğru oynamıyor, yani yanlış, yani sıfır puan. Ürün ölçeğinde ise makul bir takas: değerin çoğunun bulunduğu yerde iyi, maliyetin en yüksek olduğu yerde yok. O zaman böyle görmüyordum. Bitmemiş bir iş olarak görüyordum, çünkü elimde hakem yoktu ve hakemsiz bir işin bitip bitmediğine nasıl karar verildiğini bilmiyordum.

Hackathon kazanmak: haklı olup devam etmemek

Mayıs 2011’de, dört kişilik bir ekiple Facebook SoCal Camp Hackathon’a katıldık. Yirmi dört saatte DrawAndSee’yi yazdık: ortak bir tuval üzerine birlikte çizim, aynı anda grupla görüntülü ve yazılı sohbet. Facebook mühendisleri bunun yirmi dört saatte yapılmasının imkânsız olduğunu düşündüklerini söylediler. Rakipler ağırlıkla Caltech, USC ve UCLA’dandı; birinci olduk.

Aralık 2011’de Palo Alto’daki ABD geneli finalde 4. oldum. Orada yaptığım şey, Instagram’ın konum hikâyelerini bağımsız bir mobil uygulama olarak yazmaktı — Instagram aynısını yıllar sonra çıkardı.

O fikir doğruydu ve bunu bana yıllar sonra Instagram kanıtladı. O gün ise elimde dördüncülük vardı. Hackathon, yarışmanın ürüne en çok benzeyen hâli: problem serbest, çözüm sizin, jüri gerçek insanlar. Ama hâlâ yarışma, çünkü akşam bitiyor. Ürün ertesi sabah başlar. Ben ertesi sabah başlamadım, çünkü yarışmanın bittiği yerde işin bittiğini sanıyordum.

Drawium: doğru cevap, kaybeden cevap

Ekim 2011’de Özgür Saygın Bican’la Drawium’u kurduk: kod yazmadan web sitesine rehberli tur ekleten bir araç. 1.500 başvuru arasından E-tohum 15’e seçildik, 28 Ocak 2012’de. Wall Street Journal röportaj yaptı. Hacker News ana sayfasında 5. sıraya çıktık. Üç geliştirici işe alıp yönettim, 1.500 web sitesi sahibine ulaştık. Sahibinden.com, Doğan Online, Türk Ekonomi Bankası ve Yemeksepeti ürünü kullanmayı planlıyordu.

Yarışma mantığıyla bakınca bu bir doğru cevap tablosu. Bir jüri neyi kontrol edecekse hepsi yerindeydi: ürün çalışıyor, kategori gerçek, basın var, seçki var, büyük müşteri adayları sırada. Mayıs 2012’de kapattık.

O dönem Türkiye’de e-ticaret dışına yatırım yapan neredeyse yoktu. İlgileniyormuş gibi davranan bir Avrupalı yatırımcı, ürün vizyonumuzu tek tek not aldıktan sonra, bir ay önce rakibimiz WalkMe’ye yatırım yaptığını söyledi. WalkMe sonrasında 15 milyon dolar daha topladı ve San Francisco’ya, benim Udemy’de çalıştığım ofisin iki blok ötesine taşındı.

Kategoriyi doğru okumuştuk. Ürünü doğru kurmuştuk. Zamanlamayı bile doğru tutturmuştuk — bunu kanıtlayan şey, aynı fikirle başkasının kazanmış olması. Ve hiçbiri yetmedi.

Yarışmada doğru cevabı bulmak kazanmaktır. Üründe doğru cevabı bulmak yarışmaya girme hakkı verir. Sonrasını sermaye, coğrafya, zamanlama ve dağıtım belirler; bunların hiçbiri sizin ne kadar haklı olduğunuza bakmaz. Ben yıllarca haklı olmayı bir sonuç sandım. Haklı olmak bir girdi.

Puan tabelası aylar sonra açılıyor

Yarışmada gönderdiğiniz çözümün sonucu saniyeler içinde gelir ve tartışmaya kapalıdır. Bu geri bildirim hızı insanı hızlı öğretir, ama olmayan bir şeye alıştırır.

Udemy’de kurs önizleme fikrini savunduğumda şirketin çoğu bunun ters tepeceğini düşünüyordu: insanlar içeriği hızlıca indirir, satış düşerdi. CEO’nun desteğiyle yaptık, dönüşüm oranları belirgin biçimde arttı. O tartışmada haklı olduğumu gösterebileceğim hiçbir yol yoktu, çünkü cevabı hiç kimse bilmiyordu. Cevap ancak ürün canlıya çıkıp haftalar geçtikten sonra ortaya çıktı. İstek listesini yazana kadar da e-posta başına ortalama 1 dolar kazandıracağını kimse söyleyemezdi.

Yarışmacının refleksi, odada haklı çıkmaktır. Şirkette bu refleks pahalıdır: karşınızdakini yenmek sizi doğru yapmaz, sadece o toplantıyı kapatır. Haklı olduğunuzu gösterebileceğiniz tek yer, işi yapıp sonucu ortaya koymaktır — ve sonuç aylar sonra, gürültünün içinden gelir.

Zor problem sadakati, yanlış problemde de çalışır

Kivi Video’yu Haziran 2021’de kurdum, Mart 2022’de kapattım. Video sunucusunu, önbellekleme sistemini, kodlama sistemini ve sitenin neredeyse tamamını tek başıma yazdım. En kalabalık anımızda sekiz kişiydik, LinkedIn üzerinden yaklaşık 3.000 kişiye ulaştık, tek bir satış yaptık, tek bir aylığına.

Kivi’nin cevabı kodda değildi. Soru şuydu: Türkiye’de bir satış temsilcisi kendini kaydedip tanımadığı insanlara gönderir mi. Bu sorunun ne doğru cevabı ne de hakemi vardı; yalnızca deneyip bakmak vardı. Ben dokuz ay boyunca cevabı olan problemleri çözdüm, çünkü onları çözmekte iyiydim ve her biri ilerleme gibi hissettiriyordu.

Yarışmanın en değerli hediyesi ile en pahalı yan etkisi aynı şey. Zor bir problemin karşısında sadakatle oturabilmek: o sadakat, yanlış problemin karşısında da aynı güçle çalışıyor.

Kasın gerçekten para ettiği yer

Bu, kampın işe yaramadığı anlamına gelmiyor. Kasım 2024 – Ocak 2025 arasında, iki ayda, JavaScript ile yazılmış 35.000 satırlık bir sistemi Rust’a çevirdim; sistem 60 kat daha bellek verimli hâle geldi. Udemy’de feed’i 100 bin kullanıcıdayken kişiselleştirmeyle kurdum, aynı sistem 4 milyon kullanıcıda ciddi bir değişiklik görmeden çalışıyordu. Bildirim sistemi, kullanıcı tabanı 40 kat büyüdükten sonra da ayakta kaldı. Önbellek ve arka uç işleriyle API yanıt süresini %50 düşürdüm.

Bunların hepsi yarışma biçiminde problemler: tarif bellidir, doğru cevap vardır, zorluk işin kendisidir. Şirketin içinde bu tür problemler her zaman olur ve birinin onları çözmesi gerekir; çözebilen insan da azdır. Hata, kasın işe yaramadığını sanmak değil. Hata, şirketin tamamının bu tür problemlerden oluştuğunu sanmak.

Kampa devam eden öğrenciye

Madalya bir bitiş çizgisi değil, bir ölçüm. Ölçtüğü şey gerçek ve nadir: zor bir problemin karşısında uzun süre oturabiliyorsunuz. Bunu bırakmayın, aksine sonuna kadar kullanın. Ölçmediği şey de net: hangi problemin çözülmeye değdiğini seçebildiğinizi ölçmüyor. Sıralamanız o beceri hakkında tek kelime söylemiyor.

Kamptan sonra yapılacak en faydalı iş, kimsenin not vermediği tek bir şeyi bitirip tanımadığınız insanlara vermek. Küçük olsun, iki hafta sürsün, önemi yok. Önemli olan orada hakem olmaması. Kaç kişinin kullandığı sizin puanınız olacak ve o puan yavaş, gürültülü, çoğu zaman haksız gelecek. Bu ortama alışmak için yirmi yaşındaki bir yaz, otuz yaşındaki üç yıldan çok daha ucuz.

Bir de soru hazırlamayı deneyin. Ben 12. ve 13. ODTÜ Programlama Yarışması’nın sorularını hazırlarken, iyi bir problemin zor problem olmadığını öğrendim. Ürün kurmak da bunun uzun hâli: önce doğru soruyu seçmek, sonra onu çözmek.

2007’deki o sıralamadan sonra kimse bana bir daha “cevabın doğru” demedi. Uzun süre bunu bir eksiklik olarak taşıdım; ölçülmeden çalışmayı beceremediğimi düşündüm. Bugün bunun bir eksiklik değil, işin tarifi olduğunu biliyorum. Kamp sizi hakemsiz çalışmaya hazırlamıyor. Zor bir problemin karşısına oturacak kası veriyor; gerisi hangi problemi seçtiğinize kalıyor.

Buraya kadar okuduysan

Bunun gibi yazıları yayımladığımda e-postana göndereyim. Ayda birkaç kez. Yapay zeka, mühendislik ve yatırım üzerine. Spam yok.

Ayda birkaç kez. Yapay zeka, mühendislik ve yatırım üzerine. Spam yok.

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.

Yayımlanmaz. Sadece gerekirse size dönebilmek için.