Programlamayı seven ama programlama sektöründen nefret eden geliştirici
(deathbyabstraction.com)- Programlamanın kendisinden alınan keyfin aksine, yazılım iş ortamı tasarımın amacı ve başarı ölçütlerini sormaktan çok daha fazla kod üretmeyi talep eden bir ortam gibi hissediliyor
- 2023’te birkaç hafta boyunca iş ilanlarına bakma deneyimi, “daha iyi bir yer” beklentisini kırdı; özellikle startup kültürü “soruları azalt, üretimi artır” tutumunu açıkça ortaya koyuyor
- Büyük teknoloji şirketlerinde de geliştiriciler backend stack’in ölçeği, mülakat puanı, performans değerlendirme puanı gibi sayılar olarak görülüyor; kod yazma biçimine dair bireysel yargılar daha da anlamsızlaşıyor
- “Daha çok üret, daha az sor” tutumu kod miktarını artırabilse de daha kötü yazılıma yol açıyor; moda teknolojiler ve atalete dayalı alışkanlıklar dil, kütüphane, framework ve kod kalıplarına kadar sızıyor
- Yazarın istediği iş, toplumda zaten var olan ihtiyaçlardan yola çıkan mühendislik problemlerini çözmek; bir sistemin “neden”i dil, paradigma, mimari ve sözdizimine kadar her şeyi belirlemeli
Yazılım işlerinde hissedilen uyumsuzluk
- Yazar, çalıştığı yazılım mühendisliği rollerinin hiçbirine tam olarak uyum sağlayamadığını söylüyor
- Bir codebase’in iç mantığını bir ölçüde anladıktan sonra teknik taraf sıkıcı hale geldi; sonrasında daha fazlasını yapmaktan çok farklı yapmayı istemeye başladı
- Tasarım kararları ve amaçlar konusunda şu soruları sürekli düşündü
- Bu işi neden yapıyoruz
- Neden bu şekilde yapıyoruz
- Daha iyi bir yol yok mu
- Başarıyı değerlendiren metrik nedir ve neden onu kullanıyoruz
- Bu soruları her zaman dile getirmese de, daha fazla kod çıkarabileceği zamanda “çok fazla düşünüyorsun”, “çok fazla önemsiyorsun” sözlerini duydu
- Bunun yalnızca yetenek ile rolün uyuşmaması meselesi olmadığını; örgütlerin işleyiş biçimine katılmakta zorlandığını ve onu sürdürmektense değiştirmek istediğini belirtiyor
Startup iş ilanları ve “daha çok üretip daha az sormak”
- 2023’te birkaç hafta boyunca iş ilanlarına bakması, “daha iyi bir yer vardır” beklentisini yıktı
- İş tanımlarının %90’ında, işe alınacak kişinin yazacağı kodun yalnızca insanlığın değil, bireyin önemli sorunlarından da kopuk göründüğünü değerlendiriyor
- Startup kültürü, sektörün “daha fazla kod üret ve daha az soru sor” tutumunu en çıplak haliyle gösteren örnek olarak sunuluyor
- Pek çok startup’ın yatırımcı parasını el değiştirdiği; sınırlı ölçüde faydalı ürünlerin kullanıcılara gerekli olduğuna onları ikna ederek ücretli kullanıcı kazanmaya çalıştığı eleştiriliyor
- Startup’lar genellikle başarısız olur ve geriye, aylar değil haftalar içinde yazılması için baskı yapılan, bakımı zor spaghetti code kalır
- Bu tür kodlara kötü kodlama pratiklerine örnek olmak dışında bir daha bakılmaz; mühendisin zamanı boşa gider, venture capital ise zaten kayda değer sermayeye sahip kişilere akar ve yeniden başka startup’lara yatırılabilir
- İş ilanlarının bu işleri insanların hayatlarını zenginleştiren ve mühendislik gelişimini teşvik eden heyecan verici işler gibi paketlediği eleştiriliyor
Büyük teknoloji şirketlerinde de kaybolan özerklik
- Yerleşik teknoloji şirketleri startup’lardan organizasyon ve finans yapısı bakımından farklı olsa da kültürel olarak büyük bir karşıtlık sunmuyor
- FAANG’de yazılan kod gerçek kullanıcılara ulaşabilir; ancak kod yazmanın herhangi bir yönüne dair bireysel düşünceler daha da alakasız hale gelir
- Geliştiricinin şu şekillerde makinenin dişlisine dönüştüğü eleştiriliyor
- Ürünün kapitalizmin en kötü yönlerini giderek daha sinsi biçimlerde otomatikleştirme olasılığı vardır
- Pratikte ise backend stack’in ölçeği, teknik mülakat puanı, performans değerlendirme puanı gibi sayılara indirgenir
- Sorun yalnızca bu gerçekliğin kendisi değil; mühendislerden boş ve aşağılayıcı tekrarlı emeği diğer çalışanlardan daha çok arzulamaları beklenmesi ve bunun hiçbir yönünü sorgulamalarının daha güçlü biçimde engellenmesidir
Eleştirel düşüncenin dışlandığı mühendislik
- Programcılar yalnızca nasıl sorusuna odaklanmaya, ne yapılacağına nadiren dahil olmaya ve neden yapıldığını neredeyse hiç soramayan bir konuma yerleştirilir
- Ürettiği sistemleri eleştirebilen ve eleştirmek isteyen geliştiriciye bile bu tutumu iş yerinin dışında bırakması mesajı verilir
- Geliştirici, rolün içindeki özerklik ve yaratıcılık eksikliğini tespit etmenin bile yasaklandığını hisseder; daha çok üretebilse de farklı ya da daha iyi üretmenin zor olduğunu düşünür
Kod miktarı artarken yazılımın kötüleştiği yapı
- Teknoloji sektörünün do-more-ask-less tutumu daha fazla kod üretebilir, ancak aynı zamanda daha kötü yazılıma yol açar
- Sermaye ve dış koşullar sürdürülebilir, olumlu ya da en azından pratik açıdan faydalı yazılım üretmeye alan açtığında bile, atalet yüzünden çoğu zaman bu yapılmaz
- Trendi takip etmek ve mevcut durumu yeniden üretmek daha kolaydır ve genellikle daha uygulanabilirdir
- Aynı atalet, toplumsal olarak işe yaramayan ürünlerin üzerine çıktığı tüm teknoloji stack’ine de sızar
- Dil
- Kütüphane
- Framework
- Kod kalıpları
- Gerçek inovasyon yerine yenilik ve gimmick’i öne çıkarma eğilimi tüm sektörü rahatsız eder; alışılmadık problemler çözülmüyorsa alışılmadık mühendisliğe de ihtiyaç kalmaz
İstenen mühendisliğin ölçütü
- En ilginç mühendislik problemleri, teknolojik ilerlemenin kendisini amaç edinmek ya da var olmayan pazar talebini yapay olarak yaratmakla ilgili olanlar değil; toplum içinde doğal olarak ortaya çıkan problemlerdir
- Toplumsal ihtiyaç, inovasyonu yönlendiren en iyi güçtür; erken dönem bilişimin çığır açan başarıları da daha büyük bir kamu yararı için gerçekleşti
- İstenen çalışma biçiminde, sistemi kurmanın nedeni tüm nasılları yönlendirir
- Programlama dili
- Paradigma
- Mimari
- Tek bir kod satırı
- Sözdizimi öğesi
- Bu “neden”, kendi başına var olan iş metrikleri değil, gerçekten var olan gerçek bir ihtiyacı yansıtmalıdır
Aynı değerlere sahip insanları bulma çağrısı
- Yazar, şimdiye kadar bu değerleri anlamlı biçimde paylaşan ve bu tür mühendislik işleri yapmak isteyen biriyle karşılaşmadığını söylüyor
- Sektörle etkileşimlerinde sık sık yalnızlık hissetse de kendi çalışma değerlerinden ve söylemesi gereken şeylerin öneminden emin
- Böyle biri varsa kendisiyle iletişime geçmesini istiyor; böyle bir yerin zaten var olup olmadığını öğrenmek istiyor, yoksa birlikte kurmanın faydalı olacağını düşünüyor
- Kendi ilgi alanlarında olan ve değerleriyle makul ölçüde uyumlu danışmanlık işlerine açık
1 yorum
Hacker News yorumları
OP’nin nefret ettiği şey “programlama sektörü”nden ziyade kurumsal dünya. “Gerçek dünyanın” geliştiricilerden ne beklediğine dair beklentileri uyuşmayan geliştiricilerle çalıştım; ben de zamanında öyleydim.
Şirketler zarafete, soyutlamaya, zekice ya da güzel koda ilgi duymaz. İş gereksinimlerine göre özellikleri peş peşe çıkaracak geliştiriciler isterler.
Yöneticiler, üst düzey yöneticiler, çalışma arkadaşları gibi dişlilerin içindeki bireyler, programlamanın “sanatını” icra etmenize izin vereceklerini söyleyebilir; ama şirkete ekonomik katkı sağlayamazsanız sonunda yük olarak görülürsünüz.
Programlamanın keyfini ve sanatsallığını şirketlerin dışında aramak daha iyi; “sektörün” programlamanın nasıl ya da neden yapıldığıyla ilgilendiğini beklememek de öyle. Ekrana yazdığınız karakterleri nakde çevirip çevirmediğinize bakarlar. Bunu kabul ederseniz hayat çok daha az bunaltıcı olur, işte de eğlence bulabilirsiniz. Sadece bunun illa “sanat” olması gerekmeyebilir.
Ama “şirketler zarafete, soyutlamaya, nükteye, güzel koda ilgi duymaz” denince, o zaman kurumsal dünya ben miyim diye düşünüyorum.
Çalışma arkadaşlarıma söylemek istediğim şey şu: Zarafet, soyutlama, nükte ya da güzellik denemeden önce onu spesifikasyona uygun çalışır hale getirin. Aksi halde hepsi değersizdir.
Doğru çalışır hale getirmekte belli bir ölçüde ustalaştıktan sonra ancak doğru yapabilirsiniz; belki hızlı da yapabilirsiniz.
Sevdiğiniz işi kendi işiniz haline getirseniz bile, örneğin mobilya yapsanız bile, müşterinin “yanlış” şeyi istemesi ya da daha iyi, nadir malzemelerin parasını ödemek istememesi gibi durumlar olur.
İş unsuru olmayan bir hobi olarak, sadece sevdiğiniz şeyi yapmak her zaman daha iyidir.
Para almamızın nedeni teslimat yapmaktır. Verimli olup olmadığı, sorunu çözüp çözmediği, para kazandırıp kazandırmadığı, kutucuğu işaretleyip işaretlemediği benim derdim ya da kontrolümde olan şey değil. Yapılacak işi planlayın, yapın, insanlara nazik davranın ve saat 5’te çıkın.
Kötü kod yazmak ya da kararların aşağı yöndeki etkilerini umursamamak gibi baştan savma davranmamak gerekir. Bu nedenle işten çıkarılan insanlar da var.
Daha önemlisi aşırıya kaçmamaktır. Ürünün nasıl evrileceğini öngörüp her senaryoyu kapsamaya çalışmayın; bariz biçimde daha iyi bir tasarımı zorla kabul ettirmeye çalışmayın; daha hızlı teslim etmeye çalışmayın; size verilen işi yaparken bulduğunuz başka hataları düzeltmeye çalışmayın. Terfi peşinde koşmak, kendi başıma açtığım en kötü streslerden biriydi.
İçinde bulunduğunuz projenin yüksek tempolu mu, yüksek büyümeli mi, olgunluk aşamasında mı, yoksa yakında kesintiye uğrayacak bir hedef mi olduğunu anlamalı ve buna göre davranmalısınız.
Ayrıca topu sahiplenmeli ve görünür olmalısınız. Her çeyrekte bir demo yapın, başkalarının kodunu review edin, tasarım toplantılarına katılıp soru sorun, saat 17.00’den önce gelen e-posta ya da mesajlara hızlı yanıt verin ve yapacağınızı söylediğiniz işi teslim edin. Yararlı bir kaynak gibi görünün; ama teslimat baskısına dair en ufak bir işaret görürseniz bunu davranışlarınızla geri itin.
Son olarak, her zaman 2 hafta içinde bir sonraki mülakata girebilecek şekilde hazır olmak iyi olur.
İş yeri yalnızca iş yeridir. Aile değildir, personel kiralama bürosu da değildir.
Uçuş sırasında kanatların yerinde durması temel performans göstergelerini artırmıyorsa, böyle alakasız kaygılara zaman harcayan herkesi işten çıkaralım gibi bir noktaya varır.
Örtük hedef, yeterince yaygınlaşıp programcıların kolektif olarak “kurumsal dünyada” söz hakkına sahip olmaları gerektiği konusunda uzlaştığı noktaya ulaşmak. Örneğin yeni özellikleri “basma” hızını yavaşlatıp yazılım kalitesine daha fazla yatırım yapılmasını talep etmek gibi.
30 yılı aşkın süredir geliştirici olarak çalışıyorum ama ne yazık ki OP’nin yazısında ciddi biçimde karşı çıkabileceğim pek bir şey yok. Keşke karşı çıkabilsem.
Gençlere teknoloji ve yazılım üretmenin, doğuştan gelen tutkularını kullanabilecekleri yaratıcı bir faaliyet olduğu öğretiliyor. Sembollere, soyutlamaya ve yinelemeli faaliyetlere ilgi duyan belli bir düşünce biçimi bu işe çekiliyor. Yıllar geçiyor, hissedarlar semiriyor.
Gerçek şu ki yazılım geliştirme neredeyse tamamen ekonomik bir faaliyet ve üstelik sömürücü bir yönü de var. Çalışma ortamı altın ya da boksit çıkarmaktan kesinlikle daha iyi, ama çoğumuz başkalarını zengin etmek için kod damarlarından kod kazıyoruz. Köşe ofislerde oturan insanlar, onların üstünde de yat sahibi olanlar yani.
Onlar ne yaptığımızı, bunu sanat ya da zanaatkârlık sayan gösterişimizi, bizim önemli sandığımız şeyleri umursamıyor. Aslında çoğu bizi vaktini boşa harcayan kaybedenler olarak görüyor https://ribbonfarm.wpenginepowered.com/wp-content/uploads/2009/10/hughMcLeodCompanyHierarchy.jpg
Burada başkalarının da söylediği gibi temel hata, kurumsal işlerde anlam aramakta. Ama insanın anlama ihtiyacı var ve tek bir hayatımızın fazlasıyla büyük bir kısmını işe harcamak zorunda olduğumuz için çok fazla alternatif yok. Cevabı bilmiyorum.
Yazılım “alt sınıfını” kaybeden olarak gören insanların en az iki türü var.
Biri, bu işin beceri gerektirdiğini, çalışanların değerli bir uzmanlığa sahip olduğunu ve dinlenmeye değer olduklarını düşünen kesim. Buna rağmen onları maaş alan bir metadan ibaret, kendileri gibi “odadaki en zeki kişi” ya da “lider” olup büyük ödülleri toplayan gerçek oyuncular olmadıkları için kaybeden sayıyorlar.
Diğeri ise yazılım işini düşük vasıflı angarya, çalışanı geçici bir zorunlu kötülük olarak görüyor; ücret ve sadakat konularında küstah olduklarını ve yerlerini bilmediklerini düşünüyor. Onların fikirlerini değersiz sayıyorlar. Elbette iş dünyasında yazılım çalışanları gerçek oyuncular gibi hareket edip kişisel çıkar sağlayamadıkları için kaybeden kabul ediliyor.
İkincisi çok daha kötü bir durum.
Yaptığım şey bir başkasını zengin ediyorsa bu iyi. Çünkü yaptığım şeyin değeri olduğu anlamına gelir. Ürettiğim her şeyin değerli olmasını isterim.
Bir gün yeterince pratik yapıp öğrenir, deneyim ve birikim edinirsem, başkalarını sorumlu biçimde istihdam edebilmeyi umarım.
İyi bir fikrim olur ve doğru şekilde hayata geçirirsem benim de o yata sahip olma ihtimalim var. Buna ekonomik teşvik, ya da motivasyon diyoruz.
“Sektörün gittiği yön” bence uzun zamandır dolandırıcıların içeri sızma süreci. Yazılım yazarak yaratılabilecek değer muazzam ve teknoloji sektöründeki yüksek maaşlar bunu yansıtıyor. Bu servet her türden dolandırıcıyı kendine çekiyor.
Nitelikli mühendisleri işe alma konusundaki kedi-fare oyununda bu en açık şekilde görülüyor. İşe alım hunisinin üstü ile altı arasındaki oran hiç olmadığı kadar yüksek.
Daha az belirgin biçimde de ürün yöneticisi, scrum master gibi bütün bir “dolandırıcı rolleri” sınıfı ortaya çıktı. İçeri girdiklerinde sayıları ne kadar çok olursa o kadar güvende oldukları için daha fazlasını getiriyorlar.
Yenilik yapabilecek zeki insanlar artık yaratıcılık, inovasyon, araştırma, keşif ve mühendislik süreçlerinde yetersiz kişilerin elinden tutup onlara yol göstermek zorunda. Çünkü bu yetersiz kişiler çoğu zaman zeki insanların zamanlarını nereye harcayacağı konusunda son karar yetkisine sahip oluyor.
Mühendisler toplantının ilk 10 dakikasında müşteri probleminin nasıl çözüleceğini anladıktan sonra, ürün yöneticilerinin sırayla aynı sonuca elinden tutularak götürüldüğü toplantıları yaşadıysanız, işte bu tam olarak böyle bir şey.
Performans sorunları, güvenlik açıkları, gözlemlenebilirlik eksikliği, kötü ölçeklenebilirlik, saçma sapan yapılandırma ya da bağımlılık problemleri ortaya çıkıyor.
Özellikle FAANG şirketleri bu tür çöplerle dolu. Terfi için “övünme yazılarına” malzeme olsun diye yazılmış, ucuz kestirmeler ortaya çıkmadan önce başka yerlere gidilerek fiilen terk edilmiş kodlar.
Sağlam tasarımdan çok pürüzsüz konuşma becerisi yazılım mühendisleri için en değerli beceri hâline geldi ve sonuçları her yerde görülüyor.
Kurumsal yazılım geliştirmede 10 yılı aşkın süre geçirince, sonuçlar ya da bu sirkin nereye gittiği artık umurumda olmamaya başladı.
Şu an umursadığım tek şey, saçma derecede yüksek maaşın yattığı bordro.
Buna ileride çok umursamamak için şimdi tam gerektiği kadar umursayarak geliştirme diyorum.
Programcı olarak 40 yıl geçirdim ama her zaman yaratıcılığımı ve hayal gücümü kullanmanın yollarını buldum; mekanik biçimde sadece kod yazan biri olmamaya çalıştım.
Son işimde küçük bir ekibe liderlik ederek stratejik açıdan önemli bir kod geliştirdim ve başarılı da olduk. O kod her zaman çalışmazsa her gün 100 bin kişi sinirleniyor, peş peşe öfkeli yöneticiler de ortaya çıkıyordu.
Sonunda fazla yoğun çalışmaktan yorulup emekli olmaya karar verdim.
İş size motivasyon vermiyorsa programcı olmanın yeni bir yolunu ya da yerini bulmanız gerekir. Kendi şirketinizi kurmak ya da yeni bir şey denemek gibi. Ya da başka bir meslek bulmanız gerekir.
Kendini yeniden yaratmak kolay değil ve günümüzde çok daha zor, ama yeterince isterseniz yapabilirsiniz.
Kurumsal efendiler için çalışırken bile programlama enerji veriyor. Makineleri ikna edip istediğim gibi hareket ettirmekten hiç sıkılmıyorum. Bütün gün yapsam da yorulmayabilirim
Nadiren yoğun programlama gereken dönemlerde zamanın nasıl geçtiğini anlamayıp 15 saat aralıksız yaptığımı sonradan fark ettiğim oluyor. Neredeyse 20 yıldır hep böyle
Ne yazık ki programlama işin yalnızca küçük bir parçası. Kariyer ilerledikçe bunun daha da belirginleştiği ortaya çıkıyor. Gerçekten kod yazdığım süre bazen haftada yalnızca bir iki saat oluyor
Geri kalanı gülünç toplantılara, okumayan insanların elinden tutup yol göstermeye, başka insanların makineleri ihtiyaç duyulan şekilde ikna etmesini sağlamaya, “planlamaya” ve benzeri gürültülere gidiyor. Tatmin edici tek kısım genç programcılara mentorluk yapmak
Devam etme nedenim, emekliliğe giden güvenli bir yol olması ve neredeyse oraya varmış olmam. Emeklilik sonrası planım, sırf keyif için yapmak istediğim şeyleri programlamak
Sorunun bir kısmının, birçok geliştiricinin şu anda $FAANG'de aldığı maaş ya da $STARTUP'ta alacağı hisse düzeyini korurken anlamlı projelerde ve iyi insanlarla çalışmak istemesinde olduğunu düşünüyorum
Gerçekte çalışanlar anlamı, bağımsızlığı, inisiyatifi ve iş-yaşam dengesini para birimi gibi görüyor; anlamlı bir iş elde etmek için maaş kesintisini bile göze alabiliyor
Daha iyi işler var. Ben de buldum. Ama şu anda bir reklam teknolojisi şirketinde ya da yapay zeka startup'ında çalışıyorsanız, alışık olduğunuzdan çok daha düşük bir maaş görmeye neredeyse kesinlikle hazırlıklı olmanız gerekir
Düşük gelirli bir ailede büyüdüm ve yetişkin olduktan sonra da birkaç kez çok az parayla yaşadım; bu yüzden bana doğal geliyor. Bazı açılardan neredeyse daha çok tercih bile ediyorum
Ruh sağlığım, sıkı bir bütçeden çok aşırı stres ya da anlamsızlık yüzünden daha kolay tehdit altına giriyor
Pek olumlu hissetmediğim, daha kötüsü yalnızca olumsuz duygular uyandıran bir işi sürdürmenin mantıklı olduğu tek durum, daha fazla kazanılan para için çok somut bir planın olması ve o planı uygulama olasılığının çok yüksek olmasıdır
Bu yaşam biçimi herkese uymaz; ama ortalamadan daha az materyalist olan ya da daha tutumlu yaşamaktan korkmayan biriyseniz bunu değerlendirmenizi güçlü biçimde öneririm. Özellikle de son zamanlarda haftada en az bir kez kendi kendinize “bu iyi işe” dağılmadan daha ne kadar dayanabileceğinizi soruyorsanız
Yaptığımız araçlar, gerçek şeyler inşa eden insanların daha güvenli ve verimli çalışmasını sağlıyor. Göz açıcı, elle tutulur projelerin inşa edildiğini görmek gerçekten harika
Söylendiği gibi FAANG ücretleri çok daha yüksek, ama şu an çalıştığım yeri gerçekten seviyorum ve birkaç yıl geçince başka bir yer aramam gerektiği dürtüsünü uzun zamandır ilk kez hissetmediğim bir yerdeyim
Çoğunun yüksek maaş verecek gücü yok. İlgili ve iç motivasyonu güçlü insanlara ihtiyaçları var. Çeşitli şekillerde esnek olmaya da istekli olmak gerekiyor; küçük şirketlerde çok daha fazla şey pazarlığa açık
Bu şirketler kolayca önünüze çıkmaz, onları bizzat aramanız gerekir
Çözüm, bağımsızlaşıp kendi fikirlerini yapmak ve tüketicilere satmak. Bu kendi startup'ınız olabilir; benim durumumda ise indie oyun geliştiricisi olmak anlamına geldi
Oyunlarımdan biri olan YOYOZO Ars Technica'nın “2023'ün En İyi Video Oyunları” listesine seçildi; bu yüzden kararımın doğru olduğunu hissediyorum
Seksi sevip fahişe olmak istememek gibi. Ne yaparsanız yapın, kendi koşullarınızla yapamıyorsanız mutsuz olabilirsiniz
LeetCode hakkında da benzer hissediyorum
Yazılım mühendisliğini seviyorum ama LeetCode yazılım mühendisliğinden nefret etmeme neden oluyor
Sadece harika şeyler yapmak istiyorum. LRU cache'i ya da başka bir orta-üst seviye LeetCode problemini 40 dakika içinde ezberden uygulamak istemiyorum
Elbette bu yüzden benimle konuşmayacak şirketler olacaktır, ama sorun değil. Zaten böyle mülakatları hiç geçemedim ve her zaman mülakat sırasında live coding yapmam gerekmeyen işlere sahip olmak zorunda kaldım
Beklenti fiilen en iyi çözümü kusursuz biçimde ezberlemiş olmanız. O en iyi çözümü de muhtemelen algoritmalar üzerine çalışan doktora düzeyinde biri bulmuştur
Sonunda ise aylık 1.000 aktif kullanıcısı olan bir CRUD için endpoint uygulamaktan başka bir şey yapmayacaksınız