Teknolojik gerici gibi mi davranıyorum?

programlamakendimce

2 ay önce 3 yorum

Akşam akşam düşündüm de bazı yeniliklerin zamanımı alacağını ve bu yüzden onlara bakmak yerine ilkel temellere inmeyi tercih ettiğimi farkettim. Bunu uzun zamandır düşünüyordum. Bir anda gelen bir fikir değildi.

Şöyle yüzeysel alayım ilk önce. Bir altyapı oluşturmuşsunuz ve bu size göre oldukça stabil, ancak yeni çıkmış bir X yöntemi bunun böyle olmaması gerektiğini söylüyor. Ve, ve, ve, ve... siz de:

Yahu zaten bi şekilde çalışıyor şimdi bunu ne diye değiştirelim?

Diye düşündüğümü mü düşünüyorsunuz? kocaman bir

HAYIR

İnsan olarak evrende bir amaca hizmet ettiğimizi düşünüyorum. Bu blogu okuyarak, ufka dalarak, birkaç personelin maaşını hesaplayarak... Kısaca okuyarak. Bence amaç sayılacak şeylerden birisi okumak. Kendini okumak, etrafını okumak, okumak.

Okumak deyince aklıma bildiğim her şey geliyor. Bir ilerleme kaydedeceksek bunun değişiklikten oluşacağını düşünüyorum. 10 bin asal sayıyı bulduktan sonra insanlık neden hala asal sayı veren bir matematik fonksiyonu bulmaya çalışsın? Çünkü asal sayılar açık anahtarlı şifrelemede kullanılıyor, bir amaç var. Başka bir örnek vereyim, Fermat'nın son teoremi 1995 yılına kadar 300 küsür yıldır kanıtlanamadı. Kısaca şöyle bir teorem:

Herhangi x, y, z ve n pozitif tam sayılar ve n>2 olmak koşuluyla aşağıdaki denklemin çözümü yoktur.

{\displaystyle x^{n}+y^{n}=z^{n}\;}

Matematikten girmemin sebebi üstte bahsettiğim şeylerin anlaşılır olmasındandı. Görünürde basit gibi görünen bu teoremlerin altında nelerin gizlendiğini hiç düşündünüz mü? Eğer biz değişmeseydik görüntü işlemeyle koyun saymak yerine ağıldan ağıla koyun saymaya devam ederdik.

Hadi biraz bilgisayarlardan bahsedelim

Modern bilgisayarın kurulmasında büyük öncülük etmiş insanlar var. Alan turing, Jhon von Neumann, Mohamed Atalla vs. Bu insanlar o zamanın en iyileri miydi sizce? Bence evet. Peki şu anki zamanın en iyileri mi? Bence hayır. Geçmişten bu insanları getirseydik ve günümüzde çalışmalar yapmalarını sağlasaydık. Tamam bu adamlar "Yea 8086 mimarisine sahip işlemci çok mantıklı ne diye arm mimarisine geçmeye çalışıyoruz, overclock edelim salla" diyecek adamlar değiller. Ancak şunu unutmamak lazım, 1970'li yıllardaki teknolojik alan sayısı ile şu anki farklı sayıda. Şimdi bu insanların oturup bir de C/C++ öğrenmesi lazım, yok yeni framework çıkmış onu öğrenmesi lazım, aman CI/CD anahtarlarını commit etmemesi lazım, falan falan.

Kanımca her insan kendi döneminin daha da yapılacak bi şey kalmadı kafasıyla yaşıyor. Yani artık tren'i bulduk demiryolu falan, şimdi biz bununla kömür taşırız yeter bize, uçmaya gerek yok diyenler olmuştur. Şu anda da aynısını yapıyor olabilir miyiz acaba?

Yeni dil çıkmış da niye çıkmış ekstradan ne katıyor? Yaw zaten script language vardı şimdi ne diye python çıkardınız, JavaScript'i düzenleyeydik ya! Mantığıda ilerlediğimizde de işte başlıkta bahsettiğim gibi gerici olunuyor. Artık dönem öyle bir dönem ki pazarın sahipleri teknolojiyi belirliyor, ufak bir dükkan'da işletim sistemi geliştirme devri de kapandı. Çünkü şimdi siz ben yazılımcıyım abi, ufak tefek web işi alıyorum yapıp satıyorum diyebiliyorsunuz. Zamanında bu işin kahrını çeken insanlar zaten senin için hazırladı bunu. Kodu yazdığın platformdan editörüne framework'üne kadar zaten sen bir şey yapmadın, her şey hazırdı. Sen her zaman senin için en kısa sürecek yönteme odaklanıyorsun. Durum buna döndü.

Peki bu durum kötü mü? Değil, ancak "yazılımcı tembelliği" denilen, alt yapıdan bi haber olma durumu oluşuyor. Sen karşına gelen bir problemi çözmek için bir lib daha kullanıyorsun, bir tane daha lib kullanıyorsun... Günün sonunda Laravel developer, Flutter developer, React Native developer, Vue developer oluyorsun. Ve istiyorsun ki bunlar dışında iş yapmayım. Benden söz: "Sonuna kadar haklısın!"

Ama bulunmaz bir lib geldiğinde seni tıkıyor ve oturup ağlıyorsun :) Sonra başlıyorsun artık tanıdık, tanımadık herkesin kapısını çalıp abi bu nasıl olur nasıl ederiz diye sormaya.

Tam bu noktada şunu diyorum abi

Platform bağımlı olan bir yazılımcı ağlamaya mahkûmdur. Oysa ki sen iyi bir base'e ve derin bilgiye sahip olsaydın bırak lib kullanmayı, kendi lib'ini kendin yazardın. İşte yazıya girişimde dediğim gibi ilkel temelleri öğrenmek sana bulutların üstünde ne olduğunu gösteriyor.

Örneğin elektirik hakkında temel bilgilere sahip değilsen bir cpu geliştiremiyorsun. Şimdi bazı yabancı kaynaklarda meme'leri de geçer bu konunun. Derler ki "JavaScript öğrenmek istiyordum ama temelleri öğrenmek için kendi CPU'mu programlamaya başladım". Ve benim de hoşuma gider bu durum. Artık uzun zamandır uğraştığımdan mıdır nedir; ben de bu meme'lerdeki gibi düşünmeye başladım. Kendi CPU'mu programlıyorum, kendi lib'imi yazıyorum. 

Ben kimseye yeni şeyler kullanmayın her şey size ait olsun demiyorum :D zaten yazının amacı bu. Ben diyorum ki bir gün birisi sorguya çeker, işe alır veya yabancı bir yerde ülkemizi temsil ediyoruzdur; hazır olalım!

Nasıl bir doktor mide ameliyatı yaparken diğer organlara zarar vermemek için giden tüm damarları öğrenmesi gerekiyorsa; aynı o şekilde bir yazılımcı da bilgisayarda neler olup bittiğini bilmeli.

Birkaç örnek ile yazıyı taçlandırmak istiyorum

Diyelim bir mobil oyun geliştiriyorsunuz, framework'ün size sunduğu imkanlarla takılıyorsunuz. Öyle bir an geldi ki arayüzde çok fazla nesne tutmanız gerekti. Oyununuz tam o sahneye geliyor ve bi anda crash oluyorsunuz. Hatayı teşhis etmeniz için şunlar sebep veriyor olabilir

- Telefonun memory yetersiz geliyordur
- Telefon memory swap yapmıyordur.
- CPU 16 bittir, sayı taşıyordur.
- Gerekli stream veya pipe sistem çağrısına yansımıyordur.
- Hatta ve hatta kullandığınız framework doğru çalışmıyordur.

 Diyelim ki video görüşme sistemi kurmanız gerekti, internetten de bir video izlediniz adam yapmış hazırlamış, siz de uygulamaya çalışıyorsunuz. Bi nokta geldi ki bazı kişiler görüntülü görüşmelere katılamıyor. Ardından şunları merak etmek lazım

- Bu sistem RTP mi kullanıyor TCP mi?
- UDP kullanıyorsa bilgisayarının NAT çıkışı izin vermiyor olabilir mi?
- Araya kurulan load balancing işini doğru yapıyor mu
- proxy server yükü karşılarken tıkanıyor olabilir mi?
- SSL/TSL eklerken public anahtara tüm chain doğru eklenmiş mi
- Kişi ipv6 mı kullanıyor acaba

Video işleyen ve kaydeden bir uygulama yapmak istediniz diyelim (ör: instagram, tiktok). Sürükle bırak ile bi şekilde ekranda kullanıcıya videoyu  yaptırdınız. Bu uygulamanın video'yu sıkıştırması ve varsayılan encoding'de ayarlaması gerekiyor ki farklı cihazlarda da video oynatılabilsin. Bunu cihazda yapmak için native'e girmeniz gerekecek. ios veya android işletim sisteminde video sıkıştırma nasıl yapılıyor bilmek gerekecek. Üst katmanda ne kullandığınız önemli olmayabilir (React N., Flutter) Öyle bir an gelir ki cross platform'dan iyi bir performans vermesini istersiniz bu durumda da platform'a özel kod yazmanız gerekir.

Bir bankanın bilgi işleminde çalıştığınızı düşünelim. Ve eski yazılmış bir servisi yeniden yazmak istiyorsunuz. Örneğin bankada hesap açanların bir servisi olduğunu düşünelim. Bu hesap ekleme işi nerdeyse milattan kalma, yani legacy bir kodla çalışıyor ve onu güncellemek sizin en son tercihiniz. Diyorsunuz ki biz servisi yeni bir X teknolojisiyle geliştirelim tüm test durumlarını da hazır edelim. Bu yazdığımız servisi bazı memurlara açalım, kullansınlar. Biz de yeni yazdığımız sistemdeki verileri legacy'ye aktaran ayrı bir servis yazalım. Eğer biz aktarım yapılan noktalarda teknolojik çözümleri bilmezsek bu teknolojik soruna dönüşebilir. Örneğin rabbitmq ile çözdüğümüzü düşünelim, consume veya reduce eden taraf ile ilgili ölçeklendirmeyi bilmezsek tam olarak geçiş yapamayız demektir. Bakın yapmak demiyorum, bilmek diyorum; çünkü bir şekilde yapılabilir yani tutorial takibi yaparak. Ama bu durumda sen rabbitmq'nun huyunu bilmezsen bilinmeyen hatalara merhaba diyebilirsin. Ama o da sana "Seni tanımak güzeldi. Güle güle.." diyebilir :)

Şu ana kadar anlattıklarım "sistemin kölesi olmuşsunuz ne kullandığınızı bilin" bilinçlenmesi oluşturmak değil. Ben herhangi bir (bilgisayar) teknolojinin en fazla ne gibi ihtiyaçlar doğuracağını kestirebiliyorum bu yüzden de o teknolojiye karşı muhalif sözlerimin bir temeli var siz bunu gericilik diye anlamayın'ı anlatmaktı. Başlarda da belirttiğim gibi ben ilkel temelleri öğrenmeyi çok seviyorum, o yüzden de yeni bir X teknolojisi geldiğinde onun benim açımdan uğraşılabilir olduğunu söylemem uzun sürüyor. Bütün anlatmak istediğim bu. Ne demiş Rag'n'Bone Man

I'm only human after all

Yorumlar ({{totalCommentCount}})

  • Kübra

    {{commentLike171Count}} beğenme 2 ay önce

    Yine beyinleri açacak bir yazı olmuş teşekkürler avare kodcu her yazında tekrar düşünmeye ittiğin için ????
    Beğen Beğendin
  • esra

    {{commentLike172Count}} beğenme 2 ay önce

    O kadar haklısın ki ????????????????????????
    Beğen Beğendin
  • Ahmet Buğra

    {{commentLike173Count}} beğenme 2 ay önce

    Yazıda kendimi gördüm :D
    Beğen Beğendin
  • Düşündüklerin nedir ?

    Abdurrahman Eker

    (1010 Eylül 11111001100)

  • Full Stack Developer at Detaysoft Turkey/Sivas
  • İnternette Avare Kodcu
  • codewars
  • github
  • linkedin
  • superpeer
  • youtube
  • Yeni içeriklerden haberdar olmak ister misin ?