Yöneticini memnun etmeye çalışma, sadece işini iyi yap.
Kovuldum. Hiç beklemediğim anda aniden olmuş gibi hissettirdi ama dönüp arkama baktığımda işaretlerin bir süredir görünür olduğunu fark ettim. Son 72 saatte kafamın üstünde dönen ve algılanmayı bekleyen bu sinyaller sonunda algım tarafından içeri alındı ve neyi yanlış yaptığımı artık çok iyi görebiliyorum: İşimi yapmak yerine yöneticimi memnun etmeye çalıştım ve eninde sonunda bu benim sonum oldu.
Bu 9 dakikalık okumada hayatım boyunca öğrendiğim en önemli derslerden birini, başka yerden duymanızın oldukça zor olacağı bir dersi okuyacaksınız. 5 yılı çalışan, ondan önceki 5 yılı da öğrenci olarak son 10 yılda Linkedin’de veya başka bir yerde okuduğum yüzlerce yazıda görmediğim, duymadığım, okumadığım bir ders. O yüzden kahvenizi alın ve dürüst, itiraf dolu ve oldukça öğretici bir şeye hazır olun.
Hayatım boyunca özgüvenli konuşmayı beceremedim.
Hayatımda özgüvenli bir şekilde ve akışı yakalayarak yaptığım ve başarılı olduğum çok şey oldu. Küçüklüğümde çok iyi futbol oynayıp takdir görürken, ulusal bir sınav olan SBS’de Türkiye 1.liği aldığımda sorulara kafa patlatırken, üniversite hayatımda plansız maceralara atılırken (otostop çekme, dağ başına kamp atma içerir) her hareketimi kendimden emin şekilde yaptım. Ama konu konuşmaya gelince, bu özgüvensizlik ses tınımın içine sanki doğuştan işlemişti ve her zaman oradaydı.
AI/ML Mühendisi olarak çalıştığım bu işime ilk girdiğimde bana içinde kişisel sorular olan bir form gönderdiler. Güçlü yanlarınız bir tarafta, geliştirmeyi istediğiniz yanlarınız diğer tarafta. Bu ikincisini doldururken bir saniye bile düşünmedim. Ne yazacağımı çok iyi biliyordum: kendinden emin konuşmak (sounding confident). Sakın bunu özgüvenli olmakla karıştırmayın. Sorunum çok daha derinde: Kendimden emin olduğum zamanda bile sesim emin değilmişim gibi çıktı hep.
Bu yüzden şirketteki ilk toplantılardan birinde, önümüzdeki büyük bir proje için hangi araç ve servisleri kullanmamız gerektiğini belirlediğimiz bir toplantıda doğru metodu çok iyi bildiğim halde basitçe bir öneri vermekten öteye gidemedi sesim. Hangi yolun en iyisi olduğunu iyi biliyordum, en azından o anda kendime güvenim tamdı. Ama yine de sesim sanki “bunu bir yerde duymuştum, sanki bu iyi bir yöntem” dermişçesine emin olmayacak bir tınıda ulaştı diğer katılımcılara.
Aşağıdaki iki paragrafta işin biraz teknik tarafına ineceğim ama sadece biraz. Ve bu iki paragrafın sonunda kovulmamın en büyük iki nedenini göreceksiniz. Ama oraya atlamadan okumaya devam etmenizi öneriyorum. Bir grafik tabanlı (graph-based) arama sistem geliştiriyorduk; varlıklar her türlü ilişkiyle birbirine bağlanıyordu, böylece çıkarım anında bağlantıları takip edebiliyordunuz: kim kiminle bağlantılı ve hangi koşullar altında. Neo4j’nin doğal seçim olduğunu biliyordum. Modelleyeceğiniz dünya düğümler ve kenarlardan (nodes and edges) oluştuğunda başvuracağınız veritabanlarından birisi de budur. Bu yüzden “Neo4j iyi bir seçim çünkü bir grafik veritabanı” gibi bir şey söyledim. Şimdi bile kulağıma ne kadar yumuşak geldiğini duyabiliyorum. Bir karar değil, sadece bir öneri. Birkaç saniye sonra CTO’muz, o zamana kadar adını bile duymadığım Google Spanner’ı gündeme getirdi. Geriye dönüp baktığımda, bu önerinin muhtemelen şirkette kullanılan diğer servis ve framework’lerin neredeyse tamamının Google ekosisteminin parçası olmasından etkilendiğini fark ediyorum. Tam olarak emin değilim ama Google hizmetlerine önemli bir indirimle erişmemizi sağlayan bir anlaşma olduğunu varsayıyorum. Yine de, beş yılı aşkın profesyonel deneyimim ve bir o kadar da öğrencilik geçmişim olmasına rağmen böyle bir araçla daha önce hiç karşılaşmamış olmama oldukça şaşırmıştım. Bunun grafik problemleri için iyi bir seçim olduğunu söyledi ve kesinlikle benden daha çok kendinden emin konuşuyordu. Spanner’i bilmediğimi ama inceleyeceğimi söyledim. Ve gerçekten de inceledim. İşin aşırı detayına girmeden çok basit bir karşılaştırma yapacak olursak:
Neo4j grafik-önceliklidir. Her parçası, bir düğümden diğerine doğrudan, neredeyse içgüdüsel biçimde ilerlemek için tasarlanmıştır. “Index-free adjacency” denilen bir yaklaşım kullanır: arama yok, dolambaç yok; sadece bellekte bir işaretçiyi takip etmek, harita üzerinde düz bir çizgi izlemek gibi.
Öte yandan Google Spanner özünde ilişkisel (relational) bir sistemdir. Dağıtık bir yapı üzerine kuruludur, anahtar-değer depolama temeline dayanır ve sonradan graph özelliği eklenmiştir ama hepsi bu: eklenmiş bir katman, bir çeviri, kendi ana dili değil. Grafikleri yaşayıp soluyan bir sistem değildir; onları barındırır. Google Spanner’da, altta yatan tablo yapılarını tanımlamadan bir “Spanner Graph” oluşturamazsınız. Bir grafik, ayrı bir depolama katmanı değil; geleneksel ilişkisel tabloların üzerine kurulmuş mantıksal bir görünümdür. Ve bu ayrım benim kovulma sebeplerimden biriyle direk alakalı olduğu çok önemli bir ayrım.
Çünkü başvurduğum rol açıkça grafik araması, GraphRAG ve benzeri kavramlardan bahsediyordu. Yapılacak işin kendisi grafiklere dayanmalıydı. Ancak kovulduğumu öğrendiğim görüşmede bana CTO sistemimin yavaş çalıştığını (buna daha sonra değineceğim) ve yeterince “grafik tabanlı” olmadığını iletti.
Tam olarak itelendiğim yöndü bu. Bana 3 ay önce “Spanner kullan” diyen ses şimdi beni yeterince graph-based olmayan ve geleneksel sorgulara çok dayanan bir sistem geliştirdiğim için eleştiriyordu.
Beni yanlış anlamayın. Burada kesinlikle masum değilim. Çünkü Spanner önerisini duyup 1 gün boyunca araştırdıktan sonra ertesi günkü daily’de “Spanner da graph destekliyormuş. Zaten Google ekosisteminde birçok servisi kullandığımız için, deneyebiliriz.” diyen bendim. O an yöneticime daha doğru olduğuna inandığım yolu anlatmak ve ikna etmeye çalışmak mantıksız gelmişti. Bu kararımın 3 ay sonra kovulmama yol açan en önemli neden olacağını nereden bilebilirdim? Bilemezdim. Ama kendimi daha çok dinleyebilirdim. Yıllarca İTÜ’de aldığım eğitim, Almanya’da yaptığım master, 5 senelik iş tecrübem ve okuduğum binlerce teknik makaleler, blog postları… bunlara güvenebilirdim.
Onun yerine koy verdim ve bana önerilenle devam ettim. Belki sesime diğer yolu yeterince iyi savunamayacağını düşündüğüm için güvenmedim. Belki de o her şeye karşı çıkan, muhalif, diğerlerini of’latan çalışan olmak istemedim. Belki de çok inatçı olursam, kapıya çabucak koyulacağımı düşündüm. Kim bilir belki de bu işteki ilk haftamda ve ilk muhalefet/karşı çıkma denememde yöneticimden aldığım sert ve negatif cevaptan etkilendim. Bu konuya en sonda değineceğim.
Ve bu riskli almak istemedim. Evde hayatı bana bağlı olan yeni doğmuş bir bebek vardı ve muhalefet olmanın hiç de sırası değildi. Ve benim için başka ülkeden gelmiş, iyi maaşlı işini terk edip benimle Türkiye’ye yerleşmiş ve burada kariyerini devam ettiremeyen eşim vardı. Üst üste koyunca biriken omuzlarımda biriken bu yük, kolay yolu seçmemi etkiledi.
Her şeye katılan o kişi oldum.
İşimi yapmaktansa yöneticimi memnun etmeye çalıştım.
Bay Evet oldum.
Daha önce de bahsettiğim gibi kovulduğum son görüşmede sistemin yavaşlığını da ikincil neden olarak iletti yöneticim. Sistemi kurduktan sonraki ilk günlerde yöneticim, Tech Lead ve benim olduğumuz bir toplantıda onlara açıkça hız-doğruluk takasından (trade-off) bahsetmiştim. Şöyle ki, bir ürün kataloğundaki her ürün için o ürünün her bir özelliğini sisteme dahil ediyorduk. Bir ekstrem senaryoda, müşterinin sahip olduğu 268 tane ürün özelliklerinden 150 tanesi sadece bir üründe kullanılıyordu. Şöyle düşünün, elinizde beş binden fazla ürün içeren katalog var ve toplam 268 tane ürün özelliği arasından 150 tanesi sadece bir üründe kullanılıyordu. Beş binde bir. Bu aşırı nadir özellikleri sisteme dahil etmemeyi önerdim. Tembellikten değil, kullanılma olasılığını on binde birden az gördüğüm için. Bu riski almak mantıklı geldi çünkü AI tarafından domine edilen bu endüstride artık %98 bile mükemmel kabul edilirken çok daha nadir olabilecek bir durum için bütün özellikleri kullanılıyorduk ve bu sistemi hatrı sayılır derecede yavaşlatıyordu.
Önerimden sonra bir sessizlik ve akabinde eleştirel bir hava oluştu toplantıda.
“Peki ya demoda müşteri tam o ürünün tam o özelliğiyle alakalı bir arama yaparsa?”. Devamını getirmedi ama ben kafamda tamamladım: “Ya çalışmazsa? Ya hiçbir şey döndürmezse? Ya bu durum bize anlaşma iptaline yol açarsa?” Yöneticim (CTO) bu eleştiriyi haklı buldu ve ve riski almamamız gerektiğini söyledi. Ne varsa al içeri. İstisna yok.
Karşı çıkmalıydım. “Sorarlarsa sorsunlar”, demeliydim. “Bu özelliği sorgularında kullanmaları on binde birden az bir ihtimalken ne gerek var eklemeye, ayrıca sorarlarsa da çok önemli bir özellikse sonradan ekleriz” demeliydim. Sistemin 100% doğruluk gibi bir iddiası olmadığını iddia etmeye gerek yoktu. Hiçbir sistem mükemmel değildi ve gerçeklik bunu gerektirirdi.
Ama demedim. “Tamam” dedim.
Ve bütün o nadir özelliklerle, ekstrem senaryolara bile hazır sistemle devam ettim. Bu arada olay sadece veritabanından ve sorgulardan ibaret değil. Zaten öyle olsa 300 küsür değerin veritabanına etkisi ne olacak sanki? Asıl sorun başka yerdeydi. Her bir özellik için paralel de olsa bir LLM request atıyorduk ve daha çok demek daha yavaş olması demekti. Dediğim gibi çok detaya inmeyeceğim, burada sözüme güvenin: herşeye karşı hazırlıklı olmak sistemi oldukça yavaşlattı. Ekstrem özelliklerin (%0.1 den daha az sık) çıkarıldığı senaryoda sistemin %60-75 oranında hızlanacağını kestirebiliyordum.
Bu kadar teknik laga luga yeter. Son olarak uzun zaman boyunca kaçırdığım başka bir sinyalden bahsedip bitireceğim.
İşten çıkarılmamdan 4 hafta kadar önce yöneticime mail üzerinden 3 ay sonrası için 1 haftalık izin talebinde bulunmuştum. Almanya’da ufak kalp rahatsızlığıyla doğmuş olan oğlumun büyük bir kontrolünde yanında olmak istemiştim, bunu da yazıda belirterek. 1 hafta geçti ve cevap gelmedi. İç yazışmalarda kullandığımız chat uygulamasından maili görüp görmediğini sordum ve gördüm sana döneceğim dedi. Dönmedi.
2 hafta daha geçti ve başka bir durum kendini belli etmeye başladı. Başta tesadüfi görünen ama tekrarlayan ve yok saymayı zor bir durum. Her gün daily toplantımızda sıra bana geldiğinde yöneticimin kamerası kapanırdı. Bir keresinde sıra bana gelip ben konuşmaya başladığım anda toplantıdan aniden çıktığı bile oldu. Sanki sözsüz bir mesaj gibiydi: Sen çoktan gittin. Ya da onun ağır darbeden önce hafifletmek için gönderdiği sinyallerden biriydi. Ya da basit düşünürsek: Birkaç gün sonra burda olmayacak olan seni dinlemeye neden zaman harcayayım ki? Hangisi? Bilmiyorum. Bildiğim şu ki yavaş yavaş önemsiz bir konuma atıldığımı, sanki silüetimin odadan yavaşça silindiğini hissediyordum. Ama kovulmakla bağdaştıramadım. O anda değil.
Bu iki haftanın sonunda DM’den tekrar ulaştım ve izin isteğimin durumunu sordum. Bana kısaca “Alabilirsin” dedi. O kadar. Sanki ondan önceki sessizliğin hiçbir anlamı yokmuş gibi. Sanki ben tekrar sormasam soru göz önüne bir daha asla gelmeyecekmiş gibi. Şimdi dönüp baktığımda anlıyorum ki bu konunun daha önemli başka bir konu (kovulma) konusu konuşulana kadar arka planda kaybolmasını istiyordu. Bütün bu küçük şeyler, geç gelen cevaplar, cevaplanmayan mailler, toplantılarda duvara konuşuyormuş hissim…hepsi tek bir şeye işaret ediyordu.
Ve ben bunu göremedim.
Herşey haftanın son günü olan Perşembe (Cuma 1 Mayıs tatiliydi) günü son iş saatlerinde aniden aldığım “müsaitsen bağlanalım” diye gönderdiği ve 3. Kişi olarak bir insan kaynakları çalışanını eklediği bir toplantı isteğini aldığımda belirginleşti. İK’yı o toplantıda gördüğüm an toplantıda bana neyin söyleneceğini anlamıştım. Bir anda gelen bir farkındalık ama biraz fazla geç. Bunu çok önceden fark etmeliydim, ama etmedim.
Bu tecrübemde çok fazla hatam oldu. En büyük dersimi de aldım: Yöneticini mutlu etmeye çalışma, sadece işini iyi yap. Ürün iyiyse diğer herşey onunla beraber gelecektir. Bu hataları korkudan yaptım. Eğer sert, burnu dik, muhalif biri olursam kapının erken gösterileceği korkusuyla.
İşe girmeden önce girdiğim mülakatların birinde CEO (CTO değil) bana bu şirkette rahatça konuşulduğunu, çekinmemem gerektiğini ve sistemde bir arıza ya da hatrı sayılır bir geliştirme imkanı gördüğüm zaman çekinmeden konuşmam gerektiğini söylemişti. Şirket kültürünün yazdığı dökümanda da bu net biçimde vurgulanıyordu. Bunu özümseyerek ilk haftamın son Cuma gününde bir işe kalkıştım.
Tüm kodlara bir hafta içinde hızlıca bir bakış attım. Bazen Claude da kullanarak bug ve geliştirme imkanları aradım. Ve buldum da. Çoğu ufak şeylerdi, bir tanesi ise Python’a ek olarak kullandığımız başka bir dilden başka bir framework’un gereksizliğiyle alaklıydı. Sadece Python kullanarak da halledilebilecek ve bir şey de kaybedilmeyecek bir durumda nedense iki dil + fazladan bir framework kullanma yolu seçilmişti. Sanki sadece kullanmış olmak için kullanılmış izlenimi vermişti bana. Bu arada, bu framework de Google ekosistemindendi. Garip bir tesadüf mü?
Diğer birkaç ufak önerinin yanında bu framework’ü terk edip tamamen Python ile ilerleme tavsiyesinde bulundum. Tüm bunları dökümanladım ve iki CEO’yu ve yöneticimi (CTO) de alıcılara ekleyerek gönderdim. CEO’lar teknik insanlar değildi. Biri yazım için teşekkür edip konuyu yöneticime devretti. Yöneticimden gelen cevapsa bambaşka bir boyuttaydı. Uzun, sanki mahkemede kendine savunma yazıyormuş gibi ciddi bir tonda, teşekkür ibaresi olmayan, “gizli yükler, görünmeyen costlar” gibi soyut ifadelerin bulunduğu bir yazıydı. Birkaç kere okudum. Sonuç çıkarmaya çalıştım ama çıkarabilecek bir şey bulamadım. İkna edici bir şey yoktu. Ama ben altta yatan mesajı anlamıştım:
Çok kurcalama. Öyle yaptık gitti, bununla ilerle işte.
Bu cevaptan sonra yeni alevlendirmeye çalıştığım muhalif tarafımın ateşi de tamamen sönmüş oldu. Dediğim gibi, zaten doğuştan gelen sesimin emin olmayışı hikayesiyle de birleşince bu denememde duvara toslamış oldum. Yapmak istediğim şeye ulaşamadım ve her zaman olduğum o kararsız ve kabul etmeye yatkın adam olmaya geri döndüm.
Geriye dönüp baktığımda bunun ordaki aldığım en kötü kararlardan biri olduğunu çok net görebiliyorum.
Komik olan ise bu işimi kaybetme korkum tamamen kuruntudan ibaretmiş. Kovulduktan sonraki 72 saat içinde 3 tane iş mülakatı ayarladım bile. Keşke dediğim şey ise daha cesur olup fikirlerimi daha sert savunmak. En kötü olduğunu düşündüğüm şey o kadar da kötü değilmiş, bu şimdi belli oluyor. “Ölüm korkusu, ölümden daha beter”miş.
Herneyse, hayat devam ediyor. Mandela’nın dediği gibi “Ben asla kaybetmem. Ya yenerim, ya öğrenirim.”
Ben de büyük bir şey öğrendim.