ANTI-PATTERNS

Reinvent The Wheel Anti-Pattern Nedir?

Onur Dayıbaşı
Architectural Patterns
3 min readJun 11, 2021

--

Tekerleği yeniden icat etmeye gerek yok. Bir problem veya bir sorun olunca onu kendi yöntemlerimiz ile çözmeyi severiz. Ama bu konuyu iyi tartmak lazım. Çünkü kendi çözümlerinizi geliştirdiğinizde, ekiptekilere bir takım aktarımlar yapmanız lazım;

  • Dokümantasyon
  • Üzerinde çalıştırılan örnekler
  • Güncellemeri, çıkan hataları gidermesi, bakımı
  • Farklı farklı ortamlarda testlerinin çalıştırılması
  • ve bir çok ekstra işi sizin çözmeniz gerekir.

Bu yüzden Tekerleği yeniden icat etmek yerine, çevrenizde birileri bu problemi çözen bir şeyler geliştirmiş mi, bu işin best-practice neymiş diye bakmak en mantıklı çözümdür.

Yazılımlar, hatta bulut sistemi ile donanım altyapıları günümüzde çok kolay şekilde soyutlanabilen ve tekrar kullanılabilen birimlere dönüştürülmüştür. Aşağıda bu konuya örnekler ile biraz değinmek istiyorum.

Soyutlama ve Tekrar Kullanılabilirlik

Kod: OpenSource geldiği noktalar inanılmaz. GitHub bireylerden tutun , en büyük şirketlerin kütüphanelerini açık kaynak olarak sundukları ortamlar. NPM, MVN gibi kod kütüphaneleri bizim bu yapıları alıp ürünlerimize entegrasyonunu inanılmaz hızlandırmış durumda.

Oyun Geliştirme Ortamları: Unity, Unreal Engine vb…Asset Store hazır birçok tekrar kullanabilir kaynak ve altyapılar ile çok hızlı bir şekilde oyun geliştirmenizi sağlıyor. Eskiden oyun motoru geliştirmek için çok uğraşırdık (Not: Zamanında uğraşmış olduğum SWEngine ,SWTutorials)

NLP: Yapay zeka konusunda AWS, Google, Microsoft vb büyük firmaların;

Word2Vec, GloVe gibi veri gösterim algoritmaları ve bunların hazır olarak sunulduğu FastText gibi kütüphaneler ile sunuluyor. İlerleyen süreçte büyük şirketler Google(Google AI), Elon Musk kurguğu (OpenAI) ve Salesforce (Einstein AI) ve diğer büyükler arasında Dil Modellemesi ve sonuçta insansı cevap verebilen, insansı dil çıktı oluşturabilen eğitilmiş modeller ortaya çıkardılar. Bu modellerden en son duyrulanı GPT-3 çok büyük verinin(tüm internetin metinlerinin kullanılarak) , milyarlarca parametreyle insan beynindeki bilgi ağına benzer bir yapı oluşturuldu ve Geldiğimiz noktada bu yapılar bize Metin alanında inanılmaz insansı yetenekler sunuyor.

Örnek Data Ortamı: Kaggle içerisinde hazır bir çok veri seti bulunuyor.

Bulut Hizmeleri: AWS Serverless Servisleri ile Uygulama Geliştirmenin Avantajları yazısında Managed Servislerin biz geliştiricilere kazandırdığı avantaj olarak uygulama ve altyapı geliştirme sırasında;

  • scalability,
  • reliability,
  • elasticty,
  • resillence,
  • security,
  • vb..

Kalite yeteneklerini soyutladığını, bize bunları para ile kiralayabildiği bir altyapı sunabiliyor. İşte AWS burada size. Tekerleği Yeniden İcat Etmek Yerine API’leri kullanarak kendi işinize odaklanın diyor. Aynısı Microsoft, Google ve Diğer Bulut Servisleri içinde aynı.

SaaS hizmeleride benzer imkanlar sunuyor. Kütüphaneleri direk sisteminize dahil edip sizin yönetmeniz yerine bu işlemleri 3rd Party hizmet olarak sunuyor. Örneğin Auth0, Atlas, Stripe, Mailgun, SendGrid vb sisteminize çok rahatlıkla takıp bir anda production(canlı) seviyesinde hizmetleri sisteminize entegre edebilirsiniz.

Özetle

Elinizin altında internet varken aşağıdaki servisleri kullanarak tekerleği tekrar icat etmeden ürünlerinizi geliştirebilirsiniz. Bazen tabi projenize eklediğiniz kütüphane, framework veya saas servislerinde ufak değişiklikler ile genişletme veya değiştirme ihtiyacınız olabilir. Bu durum dahi birşeyleri yeniden oturup yazmaktansa, bu sistemlere pluginler geliştirerek ekosisteme dahil olmak, oturup yeniden yazmaktan daha avantajlıdır.

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--