29 puan yazan GN⁺ 2025-12-06 | 2 yorum | WhatsApp'ta paylaş
  • Büyük ölçekli teknik borcu olan şirketlerde, kopyalanmış kod ve eski framework’ler nedeniyle verimsizlik ortaya çıkar
  • Proje ilerlerken yönetimin güvenini kaybetmek ve organizasyon içindeki değişim direnci başlıca engeller olarak öne çıkar
  • Teknik borcun temel nedenleri belirsiz gereksinimler, gerçekçi olmayan takvimler, eski teknolojilere bağlılık, yönetimin kısa vadeli tepkileri, kişisel ego gibi insan kaynaklı etkenlerdir
  • Proje başarısı için yalnızca teknik çıktı değil, algı yönetimi ve iletişim de kritik önemdedir
  • Mühendislerin teknik yetkinliklerinin yanında organizasyon içinde iş birliği yapma ve insan ilişkilerini dengeleme becerilerine de sahip olması gerekir

Teknik borç ve kopya kod sorunu

  • Yazarın daha önce çalıştığı bir şirkette, milyonlarca satır kod, birim testlerinin yokluğu ve 10 yıldan eski framework’lerin kullanımı nedeniyle ciddi teknik borç vardı
    • Windows’a özel modülleri Linux’ta çalıştırmak için yüz binlerce satır kod kopyala-yapıştır ile taşınmıştı
    • Bunun sonucunda iki ayrı kod tabanı oluştu ve özellik ekleme ile hata düzeltme işlemlerinin her biri ayrı ayrı yapılmak zorunda kaldı
  • Bu tür bir durum bakımı imkânsız bir yapı doğurur ve zamanla kod tabanları arasındaki fark giderek büyür

İnsan sorunlarının yarattığı teknik borç

  • Teknik borç projelerinde yönetimi ikna etmek zordur; sonuçta işlevsel değişim çok az olduğu için görünür çıktı da sınırlıdır
    • Proje geciktikçe yönetimin güveni kaybolur
  • Sorunun özü teknoloji değil, insanların tutumu ve organizasyon kültürüdür
    • Pek çok geliştirici değişime direnç gösterir ve geçmişteki yöntemlere tutunur
    • Kod yapısı, onu yazanın karakterini ve değişimi kabul etme düzeyini yansıtır
    Reklam
  • Teknik borç; net olmayan gereksinimler, gerçekçi olmayan sözler, eski teknoloji seçimleri, yönetimin projeyi durdurma kararları, kişisel ego gibi nedenlerden doğar
    • Değişimden özellikle kaçınan ekiplerin kodunda da bu direnç açıkça görülür
  • Birçok geliştirici yıllardır aynı şekilde çalışıyordu; hatta “yeni bir şey öğrenmek istemiyorum” diyenler bile vardı
  • Böyle bir ortamda borcun birikme hızı, temizleme hızından yüksek olduğu için, borcu azaltmadan önce yeni borç oluşmasını engellemek öncelik olmalıdır
    • Acil servisteki triage (önceliklendirme) benzetmesinde olduğu gibi, önce “kanamayı durdurmak” gerekir

İdeal dünya ile gerçeklik arasındaki fark

  • Mühendislik sorunlarını politikadan ya da organizasyon bağlamından bağımsız çözecek ideal ortam neredeyse hiç yoktur
    • Çoğu projede teknik olmayan paydaşlar bulunur
    • “Biz hallediyoruz, bize güvenin” yaklaşımı işe yaramaz
  • Başarı algısını yönetmek, gerçek başarı kadar önemlidir
    • Teknik olmayan kişiler, teknik borç temizliğinin gerekliliğini sezgisel olarak anlamadığından, bunu sayısal ve iş değeri üzerinden açıklamak gerekir
    • Liderliğin mühendislik geçmişi yoksa, görünür metrikler ve etkiler sunmak gerekir
    Reklam
  • Sonuç olarak ekibin üretken görünüyor olması da gerçek üretkenlik kadar önemlidir

Kıdemli mühendisler için gerekli yetkinlikler

  • Kıdemli ve üstü roller için departmanlar arası iş birliği ve insan ilişkilerini dengeleme becerisi zorunludur
    • Bilgisayar mühendisliği eğitimi, karakter, ego, ilişki yönetimi gibi “insanla çalışma” tarafını öğretmez
  • Çok güçlü teknik becerilere sahip mühendisler bile büyük ölçekli ve organizasyonel değişim gerektiren sorunlarda zorlanabilir
    • Bireysel üretkenlikleri yüksek olabilir ama organizasyonel etkileri sınırlı kalabilir
  • Heads up coder rolü önemlidir
    • Derin teknik yetkinliği korurken aynı zamanda proje risklerini erken fark edip ekibi yönlendirebilen kişidir
    • Tek çekirdek gibi tek başına hızlı çalışmak yerine, tüm ekibi verimli biçimde yönlendiren bir rol üstlenir
    • Saf teknik odaklı mühendislerden farklı olarak, organizasyonun bağlamını ve risklerini birlikte okuyup buna göre hareket edebilir
    Reklam

Özet

  • Teknik sorunların kökeninde her zaman insanlar vardır
    • Teknik sorunların çoğu eninde sonunda insan, kültür ve iletişim sorunlarına dayanır
  • Teknik borç, kodun değil organizasyonun davranış kalıplarının ve kültürünün ürettiği bir sonuçtur
    • Teknik borcu çözmek için önce organizasyonun değişimi kabul etmesi ve liderliğin bunu anlaması gerekir
  • Ayrıca, kariyerin ilerleyen aşamalarında yalnızca teknik mükemmeliyetle çözülemeyen daha büyük sorunlar sizi bekler
    • Gerçek kıdemli mühendis, teknik yetkinlik ile insanı anlama becerisini birlikte taşıyan dengeli bir liderdir

2 yorum

 
GN⁺ 2025-12-06
Hacker News görüşü
  • Sorunların çoğunun aslında iletişim sorunu olduğunu hissettim
    Mühendisler ürün vizyonundan ya da müşteriden kopuk oluyor, ürün ekibi ise mühendislere adeta şirket içi bir taşeron ekip gibi davranıyor
    Satış ve CS ekipleri, verdikleri sözlerin ürün yol haritasını nasıl etkilediğini anlamıyor
    Sonunda hedefler ve başarı metrikleri birbirinden kayıyor, herkes farklı yöne kürek çekmeye başlıyor
    Çözüm “daha iyi insanlar” değil; herkesin aynı hedefe odaklanması ve kendi rolünün bütünün içine nasıl oturduğunu anlaması
    Eski teknik borç da aynı şekilde, görmezden gelince ortadan kaybolmuyor. Bu borcun şirkete getirdiği maliyet ve riski sayısallaştırıp diğer hedeflerle dengelemek ve geri ödeme planı yapmak gerekiyor

    • Bu yüzden BigCo’daki iç araçlar ekibi için bir Shadow Sessions programı oluşturdum
      Kullanıcının hemen yanında olduğun, onunla doğrudan tanışıp arkadaş olduğun, günlük akışını ve bağlamını öğrendiğin oturumlar bunlar
      Her 3 haftada bir otomatik planlanıyor ve herhangi bir aksiyon maddesi olmadan yapılıyor. İnsanlar her seferinde şaşırıyor, küçük bug’lar çözülüyor ve bağlantılar kuruluyor
      Slack API ile entegre çalışan otomatik bir planlayıcı geliştirip kullanıyorum; en zor kısım takvimleri uydurmak ve katılımı teşvik etmek
    • Bence sebep, şirketlerin insanların birbirini dinlemesini teşvik etmemesi
      Yönetim astlarını dinlemiyor, astlar da dikkat çekebilmek için birbirleriyle yarışıyor
      Yakın zamanda bizim departmanda da bir danışman yeni bir platforma geçilmesini önerdi; kimse katılmadı ama yine de durdurulamadı. Sonuçta kimse kimseyi dinlemiyor
    • “O teknik borcun şirkete maliyetini hesapla” sözü etkileyiciydi; bunu somut olarak nasıl yaptıklarını merak ediyorum
    • Elbette “daha iyi insanlar” birçok sorunu çözüyor. Hepsini değil ama oldukça büyük bir kısmını çözüyor
    • Ürün ekiplerinin mühendislere taşeron gibi davranmasının sebebi, “bu benim fikrim ve siz sadece uyguluyorsunuz” türü bir üstünlük duygusu
      “Bunu neden yapıyoruz?” sorusuna genelde “güven bana” tarzı cevaplar geliyor
      Bu PM davranışının değişeceğini sanmıyorum. Bu yüzden mühendisler iletişim boşluğunu kapatmak için doğrudan ürün rollerini üstlenmeye başlıyor
  • Birçok insanın aslında işiyle gurur duymadığını fark ettim
    Bazıları için bu sadece maaş
    Özellikle daha yaşlı çalışma arkadaşları, sistemlerin çöktüğünü daha önce gördükleri için aynı şeyin tekrar olmasını engellemeye çalışıyor
    Her yeni işe geçtiğimde ilk 90 gün içinde net yönergeler koymaya çalışıyorum ama sonuçta işin özü ekip
    Bazı ekipler değişime aç, bazıları ise değişimi engelliyor
    Lider bilgisizse ya da sadece en hızlı ve en ucuz seçeneği seçiyorsa işler daha da zorlaşıyor
    Birleşik Krallık’taki Post Office skandalı gibi, içeride sorunun bilindiği ama önünün kesildiği vakalar aklıma geliyor

    • İnsanların işlerinden gurur duymayı bırakmasının sebebi sahiplik duygusunun kaybı
      Eskiden nüfusun yarısından fazlası kendi işini yapıyordu, bugün bu oran yaklaşık %10
      Artık ürettiğimiz şey “bizim” değil, “işverenin”
      Daha çok çalışsan da ödüllendirilmiyorsun; aksine üstüne daha fazla iş yükleniyor
      Sonunda insanlar birer kaynak gibi görülüyor ve ihtiyaç kalmayınca atılıyor
    • Çoğu şirket çalışanını gerçekten umursamıyor, çalışanlar da bunun farkında
      Kriz anında ilk işten çıkarılan çalışanlar oluyor, CEO ise milyonlarca dolar alıyor
      Böyle bir düzende çalışanlardan şirket için fedakârlık beklemek imkânsız
    • Gururun neden kaybolduğu çok açık
      Daha az çalışan daha yüksek maaş alıyor, sen ise maaşının yarısına çalışacak bir yedek yüzünden işini kaybedebiliyorsun
      Mülakatlar giderek zorlaşıyor, emeklerin başkaları tarafından sahipleniliyor, enflasyon maaşı eritiyor
      Sonunda “gurur neden kayboldu” sorusu bir gizem gibi sunulsa da cevabı aslında çok net
    • Gurur ile pazardan alışveriş yapamazsın ve ne kadar çok çalışırsan çalış maaş aynı kalır
    • İnsanların yaptıkları işi ilginç bulması gerekir ki gerçekten önem versinler
      Ama şirketler, çoğu insanın aslında yapmak istediği işi yapamadığını biliyor ve bunun yerine süreçlere ve iş akışlarına odaklanıyor
      Birey açısından en iyi senaryo, sevdiğin işi yapıp karşılığında iyi ücret almak
  • Bir geliştiricinin “yeni şeyler öğrenmek istemiyorum” demesi mutlaka kötü bir şey değil
    JavaScript ekosistemindeki her gün değişen framework yorgunluğu ile Go ya da LTS tabanlı teknik istikrar aynı şey değil
    İstikrar, ürün çevikliğine de yardımcı olur
    Eski bir C++ kod tabanıyla çalışan kıdemli bir mühendistle pazarlık etmek zorunda kalabilirsin ama buna doğrudan teknik borç demek önyargılı olur
    Bir kod tabanının teknik borç olup olmadığına, o kod tabanından sorumlu lead IC ve onu yöneten yönetici karar verebilir

  • Mülakatta insani sorunlardan bahsetmek, elenmenin en iyi yollarından biri
    Birçok mülakatçı yalnızca teknik cevapları doğru kabul ediyor, insani içgörüleri görmezden geliyor
    Ben tam tersine böyle bir bakış açısını değerli buluyorum ama ekip arkadaşlarımla bunu kabul ettirmek için ayrıca mücadele etmem gerekiyor

    • Neyse ki blog yazıları mülakatlar gibi puanlanmak zorunda değil :)
    • Yakın zamanda bir mülakatta tüm mülakatçılar olumlu not verdi ama bir kişi karşı çıktı
      Mesaj hacmine bağlı olarak batch processing’in yeterli olabileceğini söyleyince, bunun “queue bilmemek” anlamına geldiğini iddia etti
      10 yılı aşkın süredir petabayt ölçekli veri ürünleri üzerinde çalıştığımı anlattım ama onun sistem tasarımı kalıbına uymadığım için elendim
      Şimdi de o ekip tüm microservice’leri tek bir API’nin arkasında toplama işi yapıyor
    • Ben mülakatta iki tarafın trade-off’larını birlikte anlatma yöntemini kullanıyorum
      Eğer ekip bu dengeyi anlayamıyorsa, o ekibe katılmamak da sorun değil
    • Konu dışı ama, Graph DB çok havalı göründüğü için gereğinden fazla kullanılıyor olabiliyor
  • Big Tech’te veri mühendisi olarak en zor iki problemim var
    Birincisi, Conway’s Law yüzünden her departmanın farklı bir toolchain’i ve veri felsefesi olması
    İkincisi, her silo kendi yönteminin tek doğru yol olduğunu savunurken bir yandan da başkalarının verisini istemesi
    Standardizasyonun imkânsız olmasının sebebi, her bölüm liderinin kendi yaklaşımının tek çözüm olduğuna inanması
    Gerçekte bakınca çoğu yaklaşım hem doğru hem yanlış taraflar barındırıyor
    Dışarıdan teknik bir sorun gibi görünüyor ama sonuçta bu da insan sorunu

    • Buna ek olarak, gereksinimler baştan net değil ve otomasyon eksikliği yüzünden en ufak taleplere boğuluyorsun
      Upstream sistemlerdeki değişiklikler bildirilmediği için ancak downstream tarafta alarm çalınca haberdar oluyorsun
      O kadar çok anlık istek geliyor ki sprintler anlamsızlaşıyor, dokümante edilmemiş bilgi de cabası
      Bu deneyimler bana daha alt seviyedeki bilgisayar bilimlerini öğrenmek için motivasyon verdi
    • Bu tür sorunlar IT’deki en temel insan odaklı problemler
      Değişimi yönlendirmek için ağ kurmak, insanları bir araya getirmek ve değişimi şeffaf biçimde yaymak gerekiyor
      Ama gerçek değişim için director ya da VP seviyesinde üst düzey lider desteği şart
      AWS bu tür organizasyonel dönüşüm için rehber yayınladı; AWS Prescriptive Guidance mükemmel bir taslak
    • Büyük kurumsal sistemler uygulanırken en büyük engel departmanlar arası güvensizlik
      Her şey “herkesi tek bir çözümde birleştirelim” diye başlıyor ama kısa süre içinde bölüm bazlı ayrı projelere bölünüyor
      Bunu önlemek için güçlü yetkileri olan bir lider gerekiyor
      Özellikle kamu tarafında, birimlerin birbirinden hoşlanmaması işleri daha da zorlaştırıyor; özel sektörde ise en azından ortak bir işi koruma hedefi olabiliyor
  • Jerry Weinberg’in Secrets of Consulting kitabında dediği gibi,
    “Yüzeyde teknik bir problem gibi görünse bile, her zaman insan problemidir
    Teknik sorunların kökünde sonuçta insanların tercihleri, iletişimi, yönetimi ve yetkinliği yatıyor

    • Ben de tam bunu söylemek için gelmiştim. Onun içgörüsü yıllar geçse de geçerliliğini koruyor
  • Bir sistem değiştirme projesinde analist olarak çalıştım
    Eski sistem işleri basit bir round-robin yöntemiyle dağıtıyordu, yeni sistem ise herkesin iş yükünü dikkate alarak daha adil dağıtım yapıyordu
    Ama bazı çalışanlar sistemi meşgul görünecek şekilde manipüle etti ve sonuçta dürüst çalışanlar daha fazla iş yükü aldı
    Biz sorunun özünün teknoloji değil, denetim eksikliği olduğunu açıkça anlattık ama yine de teknik bir çözüm dayatıldı

    • Bence bu aslında iki teknik seçenek arasındaki bir problemdi
      İnsan doğası gereği iş, kendisine ayrılan zamanı dolduracak şekilde genişler; bu tür ters teşvikleri teknik olarak kontrol etmek gerekir
      Sistemi ideal insanlar varmış gibi tasarlarsan başarısız olursun
  • Jerry Weinberg, daha 1971’de yayımlanan The Psychology of Computer Programming’den beri
    görünüşte teknik olan problemler için bile “her zaman insan problemidir” ilkesini vurguluyordu
    Kitapları bugün bile okunmaya değer

    • Başlığı görür görmez aklıma Jerry geldi
  • “İşinle gurur duymuyorsun” diye suçlayan tavrı sevmiyorum
    Çalışanların çoğu işin sahibi değil, sahibi şirket
    Şirket belli bir yönü dayatıyor ve itiraz edersen bunun bedelini ödüyorsan, neden mücadele edesin
    Sonuçta biz sadece makinenin dişlileriyiz ve bize böyle davranılıyorsa ona göre davranırız
    Yazının sahibindeki benmerkezci tavır rahatsız edici geliyor

    • Gelişmiş olmayan bir ülkede çalışınca bu durum daha da net görülüyor. Herkes sadece geçinmek için çalışıyor
  • Artık oldukça kıdemliyim ve fon sağlayan sponsorlarla, gereksinim sahipleriyle doğrudan çalışıyorum
    Onlar “şunu yap, maliyeti ne?” diye soruyor ama ben 30 dakikalık toplantının 18. dakikasında kabaca bir tahmin çıkarmak zorunda kalıyorum
    Teknolojiyi bilmiyorlar ama para ve politikanın dilini mükemmel biliyorlar
    Bazı sorunları tek bir mesajla çözdüm, bütçe ise 6 milyon dolardı
    Başka projeleri ise başka ekipler aldı, 35 milyon dolar harcayıp başarısız oldular
    Bütçeyi elinde tutan sponsorların çoğu için öncelik siyaset, hedef ise “bir sonraki makam”
    Kariyerlerine bakınca sık sık “bu insanlar o konuma nasıl geldi?” diye düşünüyorsun

 
chebread 2025-12-07

Bununla ilgili daha ayrıntılı bilgi edinmek isteyenlere, Peopleware kitabını okumalarını tavsiye ederim!