Yazılımcı Gözünden Meslekler #2: Öğretmenler 25 Kişilik Sınıfı Aynı Anda Debug Ediyor

Yazılımcı Gözünden Meslekler serisinin ikinci bölümündeyiz. Geçen hafta mutfağa girmiştik; bu hafta zil çalıyor ve sınıfa geçiyoruz.

Yazılımcılar karmaşık sistemleri sever. Dağıtık mimari, eşzamanlı istekler, öngörülemeyen kullanıcı davranışı... Peki hiç 25 farklı process'in aynı anda çalıştığı, her birinin kendi hızında ilerlediği, bazılarının sebepsiz yere uyku moduna geçtiği bir sistemi gün boyu ayakta tutmayı denedin mi? Öğretmenler bunu her sabah yapıyor. Üstelik dokümantasyonsuz ve loglara erişim olmadan.

Yoklama = health check

Ders başlamadan önce ilk iş yoklamadır. Her isim okunur, her biri "burada" diye cevap verir. Bu, sistemdeki her servise atılan bir health check'tir: GET /ogrenci/42/status → 200 OK. Cevap gelmeyen isim için öğretmen bir sonraki adımı bilir: kontrol et, not al, gerekirse veliye ulaş. Bizim monitoring panellerimizin yapmaya çalıştığı şeyi o bir defter ve bir kalemle yapar.

Ders planı = sprint planning

Her dönemin bir müfredatı, her haftanın bir hedefi, her dersin bir planı vardır. Ama her yazılımcının bildiği gibi, plan ilk temasla değişir. Bir konu beklenenden uzun sürer, bir soru tüm sınıfı başka bir yöne çeker, bir tören programı dersi yarıya indirir. İyi öğretmen planı bırakmaz, scope'u yeniden düzenler. Buna biz agile diyoruz; onlar sadece "öğretmenlik" diyor.

"Anlamayan var mı?" = ACK beklemek

Öğretmen bir konuyu anlatır ve sorar: "Anlamayan var mı?" Sessizlik. Tecrübesiz biri bunu onay sayar. Tecrübeli öğretmen ise bilir ki sessizlik bir ACK değildir; çoğu zaman bir timeout'tur. O yüzden bir soru daha sorar, tahtaya birini kaldırır, küçük bir alıştırma verir. Yani yazdığı kodu gerçek veriyle test eder.

Ödev = asenkron iş

Ödev, sınıfta başlatılıp evde tamamlanması beklenen bir arka plan işidir. await odev.teslim() diye yazılır ama herkes bilir ki bazı promise'ler hiç resolve olmaz. Sonra o meşhur hata mesajı gelir: "Yaptım ama evde unuttum." Bu, yazılımcıların Bende Çalışıyordu cümlesinin sınıftaki ikizi. Öğretmen bunu kaç kez duyduğunu saymayı çoktan bırakmıştır ama yine de her seferinde sabırla bir retry hakkı verir.

Sınav okuma = code review

Bir yığın kâğıt, kırmızı kalem ve uzun bir akşam. Sınav okumak, tek kişilik ve çok satırlı bir code review'dur. Üstelik öğretmen sadece sonucun doğru olup olmadığına bakmaz; çözüm yolunu da okur. "Sonuç yanlış ama mantık doğru, kısmi puan" demek, iyi bir reviewer'ın "yaklaşım güzel, sadece bir edge case kaçmış" yorumunun aynısıdır. Bir de kenara yazılan o küçük not var: "Aferin, çok gelişmişsin." Bunu PR yorumlarında daha sık görmek isterdik.

Okul öncesi = sıfırdan kurulan sistem

Okul öncesi öğretmenleri ayrı bir başlığı hak ediyor. Karşılarındaki kullanıcılar henüz arayüzün nasıl çalıştığını bilmiyor, input'lar beklenmedik, hata mesajları ise genelde ağlama şeklinde geliyor. Bir yazılımcı için bu, tasarımını, testini ve kullanıcı eğitimini aynı anda yaptığın sıfırdan bir projedir. Ayakkabı bağlamak, sıra beklemek, paylaşmak: bunlar sistemin en temel kütüphaneleri ve hepsini onlar yazıyor. Yıllar sonra her şey düzgün çalıştığında kimse ilk commit'i kimin attığını hatırlamaz. Ama biz söyleyelim: onlardı.

Teneffüs = garbage collection

Kırk dakika boyunca biriken enerji, sorular, yorgunluk... Zil çalar ve on dakikalık bir temizlik başlar. Teneffüs olmazsa bellek taşar, sistem yavaşlar, son ders tam bir OutOfMemoryError'a döner. Öğretmenler bunu bilir; kendileri o on dakikayı nadiren dinlenerek geçirse de.

Pazartesi sabahı = cold start

Hafta sonundan sonraki ilk ders, sunucunun soğuk başlatılması gibidir. Herkesin cache'i boşalmış, geçen haftanın konusu bellekten silinmiştir. Öğretmen kısa bir tekrarla sistemi ısıtır. Bu sırada sınıfın yarısının yüzünde açıkça okunan bir 404 Motivasyon ifadesi vardır ve öğretmen onu da gülümseyerek yönetir.

Veli toplantısı = stakeholder meeting

Her paydaş kendi önceliğiyle gelir, herkes kendi modülünün en önemli modül olduğunu düşünür ve süre her zaman yetmez. Öğretmen burada hem teknik lider hem ürün yöneticisi hem de iletişim uzmanıdır. Zor bir durumu kırmadan anlatmak, yazılım ekiplerinin yıllarca öğrenmeye çalıştığı bir beceri. Öğretmenler onu her dönem yeniden pratik ediyor.

Asıl deploy yıllar sonra

Yazılımcılar yaptıkları işin sonucunu genelde hemen görür: deploy edersin, metriklere bakarsın. Öğretmenlerin deploy'u ise yıllar sonra gerçekleşir. Bir gün eski bir öğrenci kapıyı çalar ve "Siz olmasanız bu mesleği seçmezdim" der. Hiçbir dashboard o metriği ölçemez.

Belki de bu yüzden en iyi yazılımcıların aklında hep bir öğretmen vardır: döngüleri ilk anlatan, ilk hatayı sabırla düzelten, "bir daha dene" diyen biri.

24 Kasım Öğretmenler Günü yaklaşıyor. Bu yazıyı hayatına dokunmuş bir öğretmene ya da öğretmen bir arkadaşına gönder; belki bugün onun yüzünü güldüren mesaj bu olur. Kod yazan bir öğretmen tanıyorsan Yazılımcıya Hediye sayfamızda ona uygun bir şey bulabilirsin.

Gelecek hafta: çiftçiler, ya da hava durumuna bağlı çalışan en eski production ortamı.

// bug değil, tarz.