Şunu en baştan söyleyeyim:
Kod yazmak yazılım mühendisliğinin özü falan değildir. Hatta çoğu zaman en önemsiz parçasıdır.
Bugün herkes “developer”. Herkes framework biliyor. Herkes YouTube’dan React, FastAPI, Node öğrenmiş. Herkes bir şeyler “çalıştırabiliyor”.
Evet, çalıştırabiliyor. Ama anlamıyor.
Kod yazmak bir zanaattır.
Yazılım mühendisliği ise bir disiplindir.
Aradaki farkı hâlâ kavrayamayan bir sektörle karşı karşıyayız.
Bir yazılım mühendisi, kendisine verilen görevi satır satır kodlayan insan değildir. O bir problem çözücüdür. Daha da önemlisi: Problemin var olduğunu bile bilmediğiniz yerleri ortaya çıkaran insandır.
İyi bir yazılım mühendisi şunu sorar:
“Bu gerçekten çözmemiz gereken problem mi?”
“Bu sistemi böyle kurarsak üç ay sonra ne patlar?”
“Bu akışta hangi durumlar log’a bile düşmeyecek?”
“Bu karar ölçeklenebilir mi, yoksa iki kat trafikle çöker mi?”
Kötü yazılımcı ise şunu yapar:
“Task geldi, kod yazdım, bitti.”
Kod yazmayı herkes öğrenebilir.
Ciddiyim. Herkes.
Bir çocuğa altı ay ver, düzgün kaynak ver; API çağırmayı, CRUD yazmayı, form bağlamayı öğretirsin. Ama aynı çocuğa şunları öğretemezsin:
– Sistem düşüncesini
– Edge case sezgisini
– Failure senaryosu tasarlamayı
– Teknik borcu önden görmeyi
– İş gereksinimini mühendisliğe çevirmeyi
– İnsanların farkında bile olmadığı problemleri keşfetmeyi
Bunlar tutorial’la gelmez.
Bunlar “kod yazdım oldu” kafasıyla hiç gelmez.
Bugün sektör şuna dönmüş durumda:
Birine framework öğret →
Birine iki pattern ezberlet →
Birine Docker komutu yazdır →
“Senior developer” ilan et.
Sonra ne oluyor?
– Sistemler çöküyor
– Veriler tutarsız
– Performans rezalet
– Log yok
– Geri alınamaz hatalar
– Bir değişiklik her yeri bozuyor
– Kimse nedenini bilmiyor
Ama CV’ler dolu:
“10 yıl deneyim”, “Microservice mimarisi”, “Kubernetes”, “Event-driven architecture”.
Gerçekte olan şu:
Hiçbiri mühendislik yapmıyor. Sadece kod yazıyorlar.
Gerçek yazılım mühendisliği şudur:
– Önce problemi tanımlarsın
– Sonra problemi sınırlandırırsın
– Sonra yanlış problemleri elersin
– Sonra çözümü tasarlarsın
– Sonra sistem davranışını simüle edersin
– Sonra kırılacağı yerleri önden bulursun
– Sonra ancak en sonda kod yazarsın
Kod, en sonda gelir.
Kod, bir araçtır.
Ama bugün araç, amaç hâline gelmiş durumda.
En tehlikeli cümle şudur:
“Çalışıyor ya.”
Hayır.
Çalışıyor olması doğru olduğu anlamına gelmez.
Çalışıyor olması sürdürülebilir olduğu anlamına gelmez.
Çalışıyor olması güvenli olduğu anlamına gelmez.
Çalışıyor olması yarın da çalışacağı anlamına gelmez.
Ama bizim sektörde standart budur:
“Şimdilik çalışıyor.”
İşte o “şimdilik”:
Altı ay sonra patlayan prod incident’tır.
Bir yıl sonra taşınamayan sistemdir.
İki yıl sonra baştan yazılan çöplüktür.
Gerçek yazılım mühendisleri:
– Kodla övünmez
– Framework saymaz
– Stack gösterisi yapmaz
– GitHub yıldızı kovalamaz
Onlar şunlarla ilgilenir:
– Sistem davranışı
– Veri tutarlılığı
– Performans sınırları
– Failure modları
– Geri dönüş planları
– Uzun vadeli evrim
Ve en önemlisi:
“Bu sistem büyüdüğünde ne olacak?”
Bu soruyu sormayan herkes sadece kod yazıyordur.
Mühendislik yapmıyordur.
Son söz:
Kod yazmayı öğrenmek marifet değildir.
Yazılım mühendisliği yapmak marifettir.
Ve bugün sektörün büyük kısmı mühendis değil.
Kod operatörü.
Bunu kabul etmeden hiçbir yere ilerlemeyeceğiz.
Arda Akgür
Arc Corp – CTO
Arda Argür
Toplumsal analizleri ve özgün bakış açısıyla ajansımızın vizyoner kalemlerinden biri.
Tüm Makaleleri Görüntüle