Modern JavaScript ve web geliştirme dünyasında aramızda sürekli dolaşan o meşhur şakayı bilirsiniz: "Yeni bir JavaScript framework'ü daha çıkmadan önce bari şu kahvemi bitireyim."

Dışarıdan komik gelse de, içeriden bakıldığında bu durum pek çok yazılımcı için ciddi bir anksiyete kaynağıdır. Kariyerimin özellikle ilk yıllarında ben de bu girdabın tam merkezindeydim. Her hafta Twitter'da, Reddit'te veya HackerNews'te trend olan yepyeni bir kütüphaneyi, daha hızlı olduğu iddia edilen yeni bir veritabanını, oyunun kurallarını değiştirdiği söylenen yeni bir "state-management" (durum yönetimi) aracını hemen öğrenmek zorunda hissediyordum. Buna sektörde "JS Fatigue" (JavaScript Yorgunluğu) veya genel anlamda FOMO (Fear Of Missing Out - Gelişmeleri Kaçırma Korkusu) diyoruz.

Eğer o anki en popüler, en yeni aracı projemde kullanmıyorsam, kendimi geri kalmış, demode ve sektörün gerisinde kalmış yetersiz bir mühendis gibi hissediyordum. React, Vue, Svelte, Solid, Next, Nuxt, Astro... CSS-in-JS, Tailwind, Styled Components... Redux, Zustand, Recoil... Liste asla bitmiyordu. Her biri çıkıyor, eskisinin kötü olduğunu iddia ediyor ve kendi "devrimsel" mimarisini satıyordu.

Sonra bir gün durdum. Gerçekten durdum ve bu araçların arka planda, kaputun altında (under the hood) aslında tam olarak ne yaptığını incelemeye başladım. Çok radikal bir şey fark ettim: Hepsi aslında aynı şeyin farklı bir renge boyanmış haliydi. Hepsi temelde HTTP istekleri yapıyor, hepsi DOM manipülasyonu gerçekleştiriyor, hepsi tarayıcının bellek yönetimi (garbage collection) sınırları içinde çalışıyor ve günün sonunda hepsi 0'lar ve 1'lere dönüştürülmek üzere derleniyordu.

O gün, o an yeni bir framework öğrenmeyi bıraktım. Bütün o "Trend" olan tutorial videolarını kapattım. Gidip temel ağ protokollerini (TCP/IP, UDP, DNS) en ince ayrıntısına kadar incelemeye başladım. Linux çekirdeğinin hafızayı (RAM) nasıl yönettiğini, CPU'nun process ve thread'leri nasıl zamanladığını (scheduling) okudum. Yıllardır ORM (Prisma, Sequelize vs.) arkasına saklanarak yazdığım veritabanı sorgularının aslında arka planda diskte B-Tree indekslerini nasıl aradığını (raw SQL mekanizmasını) öğrendim.

İşte "Fundamentals" (temeller) dediğimiz bu konuları anladığınızda, ortadaki o teknolojik sihir kayboluyor. Yerini derin bir mühendislik anlayışı alıyor.

Bugün karşıma yepyeni, devrimsel olduğu iddia edilen ve herkesin öve öve bitiremediği bir teknoloji çıktığında artık eskisi gibi paniklemiyorum. Çünkü biliyorum ki o yeni framework aslında benim yıllardır bildiğim temel bir mekanizmanın (örneğin Proxy objeleri, Event Loop, veya Virtual DOM konseptinin) sadece biraz daha farklı ve tatlı bir API (Syntax Sugar) ile paketlenmiş hali. Altında yatan temel mekanizmayı bildiğim için, o "yepyeni" aracı öğrenmem taş çatlasa bir hafta sonumu alıyor.

Teknoloji dünyasında üst katmanlar, frameworkler, kütüphaneler her ay değişir, eskir ve yerini yenilerine bırakır. Ama temeller (Linux, network, veri yapıları, algoritmalar) on yıllardır aynıdır ve bir on yıl daha aynı kalacaktır. Modayı takip etmeyi bırakıp rüzgarda savrulmamak için köklerimi temellere (Fundamentals) salmak, bu meslekte verdiğim açık ara en iyi karardı.