Merhaba arkadaşlar, sizlere bu yazımda üniversiteden Mozilla’da işe başlayana kadar olan hikayemden biraz bahsetmek istiyorum. Öncelikle kim olduğumdan kısaca bahsedeyim.
Trakya Üniversitesi’nde bilgisayar mühendisliği okurken Mozilla’dan staj daveti alıp 3 ay boyunca Mozilla San Francisco ofisinde Quantum Research Intern olarak staj yaptım. Staj sonunda, açık pozisyon olmadığını ve eğer ileride bir pozisyon olursa iletişime geçebileceklerini söylediler(ki ben pek inanmamıştım o zaman). Okulum bittiği için Türkiye’ye döndüm ve İstanbul’da bir işe başladım. İşe başladıktan birkaç ay sonra Mozilla’dan tam zamanlı iş teklifi aldım ve Mozilla Berlin ofisinde Platform Engineer(Software Engineer’ın Firefox platformunda çalışan hali) olarak çalışmaya başladım. Bu yazıyı yayınladığım tarih itibari ile de Berlin’e taşınıp burada çalışmaya başlayalı bir yıl kadar oldu.
Ara sıra, ‘‘Nasıl yurt dışında staj/iş buldun?”, ”Nasıl Mozilla’da çalışmaya başladın?” gibi sorular alıyorum. Bu konuda internette araştırdığınızda, daha önce yurt dışında çalışmaya başlamış bir çok insanın yazılarını bulabiliyorsunuz. Ama sanırım benim hikayem bu yazıların genelinden biraz daha farklı. Bu nedenle, ben de bu sefer benim perspektifimden bunu anlatmak istedim. Bu yazıda da, bu yukarıdaki paragrafta yazdığım hikayeyi açarak anlatmaya çalışacağım. Umarım sizin için yararlı bir yazı olur. Ayrıca umarım öğrenci ya da kendini yazılım konusunda geliştirmek isteyen arkadaşlara open source’un önemini gösterip, biraz olsun onları buraya yönlendirebilirim. Şimdi hikayeme geçelim.
Yazılıma başlangıç
Yazılımla ilgilenmeye lise 2 sınıfta başlamıştım. O zamanlar benim için yazılım tamamen hobiydi ve genel olarak çok basit şeyler yapıyordum. Fakat kendi hayal gücünüzle bir şeyler yaratmanın tadına o zamanlar varmaya başlamıştım ve kesinlikle bilgisayar mühendisliği okumak istiyordum. Lisenin son senesinde de genelde ders çalışmak yerine gidip yazılımda kendimi geliştirmeye çalışıyordum. Geri dönüp baktığımda genel olarak çok iyi bir karar olmadığını görebiliyorum, fakat bu karar beni şehir dışında yaşamaya itti. Benim yurt dışında yaşamamı (ve bu kararı alabilmemi) kolaylaştıran şeylerden biri de bu olduğunu bu gün görebiliyorum. O nedenle acaba İstanbul’da kalıp, orada bir üniversite okuyup, ailemin yanında yaşasaydım bunları bu kadar rahat yapabilir miydim diye düşünmüyor değilim.
Üniversite yılları ve open source
Neyse, üniversite sınavına çok fazla çalışmadığım için Trakya üniversitesini kazanmıştım ve üniversiteyi okurken daha önceden yazılım konusunda biraz bilgi sahibi olduğum için dersle sıkıcı geliyordu. Bu nedenle ben de kendimi daha çok yazılım öğrenmeye ve küçük projeler yapmaya veriyordum. Kendi yazılım bilgimi ilerletmeye çalışırken Rust programlama dili yeni çıkmıştı ve yeni yeni popülerlik kazanıyordu. Ben de sistem programlama dillerine ilgi duyduğum için onu öğrenmek istedim. Burada küçük bir parantez açmak istiyorum. Rust programlama dili ilk olarak Mozilla tarafından geliştirilen, ardından open source bir topluluğa kavuşan bir programalama dili olduğu için özellikle ilgimi çekmişti. Çünkü Mozilla’ya en başından beri, open source ve open web üzerine yaptığı şeyler için, kısacası web’i daha iyi bir yer haline getirmeye çalıştığı için hep saygı duyuyordum. Bu nedenle Mozilla‘nın benim kalbimde çok ayrı bir yeri vardı diyebilirim. Bu nedenle ben web için bu yaptıklarının karşılığını katkıda bulunmaya çalışarak veriyordum. Daha önce birkaç Firefox patch’i göndermiştim ama onlar da çok basit şeylerdi. Geri dönecek olursak, bundan dolayı Rust programlama dili bana ilgi çekici geliyordu. Aynı zamanda da open source olan büyük bir projeye katkıda bulunmak istiyordum. Bu sırada yine Mozilla tarafından geliştirilen Servo projesine denk geldim. Projenin Rust ile yazıldığını görünce hemen ilgimi çekti tabi. Servo’yu kısaca açıklamak gerekirse; deneysel olarak geliştirilen1, paralel bir tarayıcı motoru2. O zamanlar hem Rust öğrenmek istiyordum, hem de open source bir projeye katkıda bulunmak istiyordum. Ben de, neden ikisini bir arada yapmayayım dedim. Böylece hem Rust öğrenip hem de Servo projesine katkıda bulunma macerası başlamış oldu.3
İlk olarak tabi ki daha Rust’ı öğrenme aşamasında olduğum için çok büyük katkılarda bulunamadım, ama durmadan Mozilla IRC sunucusunun4 #servo
kanalında sorular soruyordum. Genelde soruları akşam okuldan sonra sorduğum için San Francisco’da Servo üzerine çalışan Manish’in çalışma saatleri ile benim katkıda bulunduğum saatler örtüşüyordu. Bir süre sonra Manish benim istekli olduğumu görüp bana mentorluk yapmaya başladı. Onun bir çok yardımıyla Servo kod tabanına aşina oldum ve bundan bir süre sonra da beni Servo’nun Github takımına davet ettiler. Bunun o zamanlar benim için nasıl bir mutluluk olduğunu tarif etmem çok güç :) Artık takımın içerisindeydim ve bu beni daha çok motive etmişti. Ayrıca Manish, Josh ve diğer birçok takım arkadaşlarım gerçekten bana yardım edebilmek için ellerinden geleni yaptılar sağolsunlar. Muhtemelen şu an burada olmamın nedenlerinden biri de çok yardımsever ve iyi bir takımda olmaktı. Sonradan fark ettim ki bu aslında Mozilla community’sinin ortak bir özelliği :)
Günler, aylar ilerledi, ben hala Servo projesine katkıda bulunurken, eskiden yanlış yapmaktan korktuğum code review’leri yapmaya başlamıştım. O zamanlar Hacktoberfest başlamıştı, bundan dolayı da bir çok yeni Servo’ya katkıda bulunmak isteyen insanlar geliyordu ve ben de onlara yardımcı oluyordum. Artık mentorluk yapılan birinden mentor olan birine evrilmeye başlamıştım. Servo’da da reviewer yetkisi dediğimiz bir şey var. Kodları review edip onay verebilen insanlara bu yetki veriliyor. Herkese verilmeyen bir yetki olduğu için genelde kendini kanıtlamış insanlara veriliyor. Bir süre bu şekilde devam ettikten sonra proje admini bana reviewer yetkisini vermeye karar verdi. Böylece Mozilla’da çalışan olmadan gelebileceğim en yüksek noktaya gelmiş oldum. Bunlar beni tabi ki mutlu edip aynı zamanda motive ediyordu.
Toplantıya davet ve staj teklifi
Ben üniversite okurken üçüncü sınıfta Mozilla’ya staja başvurmuştum. O zamanlar daha hiç katkıda bulunmadığım için geri dönüş bile yapmamışlardı :) Bu şekilde katkı yaptıktan sonra bir kere daha başvurdum ve iki mülakata girdim. Fakat iki mülakatın ardından tekrar reddedildim ve bayağı üzülmüştüm. Üniversitenin 4. sınıfında olduğum için gelecek planlarımı o staja bağlamıştım ve reddedilince hayallerim suya düşmüştü. Ama Servo projesine katkıda bulunmaya da devam ediyordum ve benim katkıda bulunduğum alan Mozilla’nın Stylo projesi(ya da diğer adıyla Quantum CSS) ile örtüşüyordu5. Stylo projesi de çok yoğun bir şekilde ilerliyordu. Bir gün, Stylo projesinin lideri olan Bobby’den bana mesaj geldi ve beni, o zamanlar devamlı olarak katkı sağladığım için, Stylo projesinin Mozilla içinde olan haftalık toplantılarına katılmaya davet etti. Mozilla’da çalışanlar remote ve farklı ofislerden çalışabildikleri için toplantılar online video konferans olarak yapılıyor. Ben de bu teklif karşısında çok heyecanlandım ama aynı zamanda gergindim ve İngilizce bilgimin benim için yeterli olmayacağını düşünüyordum. Bu düşüncemi de aynı şekilde Bobby’ye söyledim. O da bana, toplantıda bir çok farklı milletten insanın olduğunu ve kimseden mükemmel İngilizce beklenmediğini, herhangi bir sorun olmayacağını söyleyerek beni biraz rahatlattı. Böylece toplantı teklifine tamam dedim ve toplantıya mental olarak hazırlanmaya başladım. Toplantı vakti geldi çattı, ben yüksek tansiyon ile toplantıyı bir şekilde bitirdim :) Bu toplantının ardından Mozilla’nın stajyer recruitment ekibinden biri bana email attı ve benimle konuşmak istediklerini söyledi. Ben de, daha önce stajdan red yediğim için şaşırdım ve telefonla konuşma teklifine tamam dedim. Aradıklarında bana, beni geçen sefer staj için reddettiklerini ve bundan dolayı üzgün olduklarını söyleyip, eğer ben kabul edersem San Francisco’daki staja davet ettiklerini söylediler. Bunun da doğrudan proje lideri olan Bobby tarafından istendiğini öğrendim. Ben bu noktada havalarda uçuyordum tabi ki :) Staj konusunda bana biraz bilgi verdikten sonra ben doğrudan olumlu olarak cevapladım ve staja hazırlık süreci böylece başlamış oldu.
San Francisco’da staj
Staj içi bir sürü döküman gerekti tabi. Gerek Amerikan J-1 staj vizesi için gerekli belgeler olsun, gerek Mozilla’nın kendi istediği belgeler olsun, bir sürü belge imzalayıp, yazdırıp, okula imzalatıp göndermem gerekti fakat sonuç olarak her şeyi tamamladım ve artık staja hazırdım. Mozilla; uçak biletlerimden tutun, kalacağım eve kadar her şeyi ayarlamıştı. Ben hiçbir şeye para vermeden oraya gittim, üstüne de, Türkiye’deki şirketlerin aksine maaşımı aldım ve orada güzel bir deneyim edindim. Genelde Amerika’da stajyerlere potansiyel çalışan olarak bakıldığı için el üstünde tutuluyorlar ve bir sürü şey hediye ediyorlar. Örneğin bize staj için 15 inch en üst konfigürasyon MacBook verildi ve staj sonunda o bilgisayar bize hediye edildi. Neyse ben gittim Amerika’ya ve staja başladım. O zamanlar İngilizcem idare eder bir düzeydeydi ama ilk bir hafta sıkıntı çektim diyebilirim. Bu sıkıntının nedenlerinden en büyüğü de kültür şokuydu. Çoğu gördüğüm şey benim için yeniydi ve her şey için bir çaba sarf etmem gerekiyordu. İngilizce de bunlardan biriydi çünkü o zamana kadar adam gibi yurt dışına çıkmamış ve yabancı arkadaş edinmemiştim. Fakat bir haftanın ardından her şey rayına oturmaya, İngilizce artık bir sorun olmamaya başladı. Bu sürede 4 stajyer 2+1 (çok hoş Bay Bridge manzaralı) bir evde kaldık.
Staj sonunda da her Mozilla stajyeri kendi stajı üzerine bir sunum yapıyor. Ben de Stylo projesi ve bu proje kapsamında yaptıklarımı anlatan bir sunum hazırladım.(Sunuma Air Mozilla üzerinden ulaşmak mümkündü en son. Üşenmez bulursam buraya da koyarım.) Son günlerimde manager’ıma okulumun bittiğini hatırlatıp iş konusunda ağzını yokladığımda, bana şu anda açık bir pozisyon olmadığını ve eğer açık bir pozisyon olursa benimle iletişime geçeceklerini söyledi. Benim hedefim yurt dışında yaşamak olduğu için biraz hayal kırıklığına uğramıştım çünkü stajın sonunda olumlu bir yanıt bekliyordum. Açık pozisyon yok söylemi de nedense bana herkese söylenen bir laf gibi geldiği için bir daha aramaz sormazlar diye düşünüyordum açıkçası. Ama sonuç olarak benim için gerçekten çok büyük bir deneyim olmuştu. Bir çok kişiyle tanışıp, bir çok yeni konuda bilgi edinip, bir çok yer gezmiştim.
Bu da San Francisco ofisi camından son gün çektiğim bir fotoğraf:
Türkiye’ye dönüş
Stajın son haftası sunumumu yaptım ve işler bitti. Artık geri dönme vakti gelmişti. İstanbul’a döndüm ve bir süre burada, herhangi bir iş falan düşünmeden önce, kafa dinlemek istedim. Edirne’ye gidip oradaki arkadaşlarımla görüştüm falan. Bu sırada, döndükten 2 hafta sonra halam bir tanıdığının yazılım şirketi olduğunu ve beni anlattığını, onların da benim CV’mi istediklerini söyledi. Ben ilk başta şaşırdım çünkü böyle bir şeyi beklemiyordum ve hep aklımda biraz kafa dinlemek vardı. Ama CV’mi gönderdim ve biraz web sitelerine ve iş ilanlarına baktım. Bakar bakmaz bir kez daha şaşırdım çünkü programing languages/compiler theory bilen birilerini arıyorlardı. Ben de systems programming’e ve compiler theory’ye olan düşkünlüğümden böyle bir şirkette çalışmak istiyordum ama Türkiye’de böyle bir şirket olduğunu düşünmüyordum. İlginç bir şekilde benim istediğim doğrultuda bir şirketti ve kısa sürede bir iş görüşmesi ayarlandı. İlk görüşmede şirketin kurucusu olan Sadun Bey ile görüştüm ve oldukça iyi geçti. İkinci iş görüşmesine yazılım ekibinden Stefano ile görüştüm. Sonrasında da iş teklifi geldi ve sonuç olarak Kuika’da işe başladım.
İş teklifi ve Berlin’e taşınma
Kuika’da işe devam ederken Mozilla beni Austin, Texas’ta yapılacak olan Mozilla All Hands etkinliğine davet etti. Bu etkinlik de, tüm Mozilla çalışanlarının ve yüksek oranda katkı sağlayan contributor’larının bir (ya da birkaç yakın) otelde toplanıp gündüz vakti toplantılar/sunumlar yapıp akşam da eğlendiği bir etkinlik. Yine tabi tüm ücretleri Mozilla karşılıyor. Ben de işimden izin alıp Amerika’ya gittim bir haftalığına tekrar6. Austin’deyken bir ara beni Firefox’un içinde bulunan Layout takımının yöneticisi olan Jet yanına çağırıp bir iş teklifi gelmesi durumunda fikrimin ne olacağını sordu ve ben de muhtemelen olumlu olur cevabını verdim. Tam olarak bir iş teklifi değildi ama teklif etmeyi düşündükleri belliydi. Etkinliğin ardından Türkiye’ye döndüm ve çalışmaya devam ettim. Birkaç ay sonra(biraz sürdü) resmi anlamda iş teklifi geldi. Bu arada Mozilla’nın Amerika, Kanada, Fransa, İngiltere, Almanya, Taiwan gibi yerlerde ofisleri var. Tekliften önce benim aklımda hep Amerika vardı ama teklif sırasında istersem Amerika’ya da gelebileceğimi ama vize sürecinin çok daha uzun ve zor olduğunu; Berlin ofisine gitmenin ise çok daha kolay, neredeyse kesin olduğunu söyleyince ben de Berlin ofisini tercih ettim. Bu noktaya kadar yurt dışını düşünürken Berlin aklımdan dahi geçmemişti :) Teklifi bir süre düşündükten sonra kabul ettim ve bu sefer Almanya vize/blue card süreci ve iş evrakları/iş sözleşmesi süreci başladı.
Almanya blue card süreci gerçekten oldukça sancısız geçti ve tekliften sonra iki ay gibi bir sürede Berlin’e taşınmış oldum. Daha kısa da sürebilirdi bu süreç ama bir sorun çıkmaması açısından başlangıç tarihini böyle belirlemiştik. Berlin’e taşınma süreci de, tek olarak gittiğim için oldukça kolay oldu. Her zamanki gibi yine Mozilla her şeyi karşıladı ve relocation için de maaşım haricinde belirli bir ücret verdi. Bu sefer San Francisco’ya göre çok daha kolay oldu alışmam çünkü bu sefer hazırlıklıydım ve neler olacak az çok biliyordum. Geldim ve 5 gün sonra çalışmaya başladım, ilk geldiğiniz zaman bir vizeyle geliyorsunuz ve buraya geldiğiniz zaman blue card’ı almanız gerekiyor. Geldikten birkaç ay sonra blue card’ı aldım ve şu an da Mozilla’da çalışmaya devam ediyorum.
Sonuç
Evet, üniversiteden Mozilla Berlin ofisine kadarki hikayemi sizinle paylaştım. Biraz uzun oldu kusura bakmayın ama aklımda olanların hepsini aktarmak istedim. Yazıdan da muhtemelen fark ettiniz ama naçizane birkaç bir şey söylemek istiyorum. Özellikle öğrenciyseniz open source gerçekten çok önemli. Ben öğrencilik yıllarımda bunları yaparken farkında olarak yapmamıştım ama şimdi dönüp baktığımda çok doğru bir karar verdiğimi görebiliyorum. Benim gibi birçok insan bu şekilde, açık kaynaklı projelere katkıda bulunarak kendilerini gösterip iş bulabiliyorlar. Bence bu mülakatlara girip kod sınavlarını çözüp işe girmekten çok daha etkili bir yöntem çünkü sanal problemler karşısında değil, gerçek problemler karşısında siz kodunuzu yazarak kendinizi onlara kanıtlıyorsunuz. Ve eğer gerçekten kendinizi kanıtladıysanız, mülakat sadece bir formalite halini alıyor. Bu nedenle eğer bilgisayar mühendisliği veya benzeri bölümlerde okuyup, yazılım konusunda profesyonel hayatını ilerletmek isteyen genç arkadaşlarım varsa, benim size naçizane tavsiyem bu şekilde open source community’si güçlü olan şirketlerin projelerine katkı sağlamanız olacaktır. Eğer bu şirketten birileri sizi görür ve sizi işi alırsa mükemmel! Ama almaz ise de bu o kadar büyük bir sıkıntı teşkil etmeyecektir çünkü bu sırada siz GitHub/GitLab gibi mecralarda zaten portföyünüzü oluşturmuş oldunuz. Diğer şirketlerde işe başvururken bu şekilde bir portföyü olmayan yazılımcıların önüne geçtiniz demektir.
- Daha sonra, Quantum projesi kapsamında style modülü(CSS’i alıp parse edip bunu anlamlı bir structure haline dönüştüren kısım) Firefox’a dahil edildi ve paralel olduğu için site yüklenme zamanları büyük ölçüde hızlandırıldı. [return]
- Tarayıcı motoru: Web tarayıcılarının(Firefox, Chrome vb.); HTML, CSS ve JavaScript’i alıp, görsel olarak ekrana çizen komponentidir. Web tarayıcılarının çekirdekleridir diyebiliriz. (Bkz: https://en.wikipedia.org/wiki/Browser_engine) [return]
- Bu arada Rust ile Servo’nun özel bir bağı var. Firefox çoğu C++ ile yazılmış bir program. Mozilla, zamanında Firefox’un bir kısmını paralelleştirebilmek için daha güvenli ve düşük seviye bir programlama dili arıyor fakat böyle bir dil bulamıyor. C++ ile bunu yapmak olası fakat çok riskli çünkü memory safe bir dil değil ve bu paralellikle birleştiğinde işler çok çabuk sarpa sarabiliyor. Ardından bir Mozilla mühendisi tarafından Rust dili yazılıyor ve Firefox’un bazı kısımlarının bu dil ile yazılması planlanıyor. Fakat ilk çıktığı zamanlar Rust daha kullanıma hazır olmadığı için; Mozilla, öncelikle bir research projesi olan Servo’yu yazmaya başlıyor. Servo’nun amacı da Rust’ın artık production’da kullanılabilir bir dil olduğunu kanıtlayıp sonra bunu Firefox’a entegre etmek. Ve dediğim gibi, Firefox Quantum ile bunu başarılıyor. [return]
- Bir çoğunuz IRC’yi eskilerden tanırsınız muhtemelen. Mozilla yazılımcıların iletişim kanalı olarak hala IRC’yi kullanıyor(irc.mozilla.org). Fakat bu yakında değişmek üzere. Mozilla ile IRC arasında özel bir bağ olmasına rağmen, IRC oldukça eski ve artık modern iletişim çağının ihtiyaçlarını yeteri kadar karşılayamıyor. Bu nedenle Mozilla, yakın bir zamanda farklı bir iletişim kanalına geçecek. Geçtiği zaman burayı güncelleyeceğim. [return]
- Bu daha önce bahsettiğim Servo’nun style modülünü Firefox’a taşıma projesi. [return]
- Bu zamanlar da hatırlarsınız, Amerika’nın Türkiye’ye vize vermeyi kestiği zamanlardı ve benim gidebilmek için turistik vizeye ihtiyacım vardı. Zar zor, son anda vizeleri açtılar ki ben de alabildim. Hatta uçuşum pazartesiydi ve vizem elime cuma günü ulaştı. Az kalsın gidemiyordum. [return]