ANTI-PATTERNS

Golden Hammer Anti-Pattern Nedir?

Altın Çekiç (Golden Hammer) .

--

Bu anti-pattern benzer bir konuya Yazılım Mimarının 5 Yanlışı yazısı içerisindeki Mimarın kullandığı yöntemlerde kendisine en çok güvendiği alanda sorunları çözmeye çalışır demiştim. Ama bu yöntem her zaman bizi doğru yola götürmez.

Ama genelde ekibinize verilen süre kısa, bütçe kaynağı az olur. Kısa zamanda çok iş başarmanız istenir. Bu durumda Maslow law of the instrument söylediği gibi, ufak bir çocuğa çekici verirseniz, tüm gördüğü şeylere çekiçle vuracaktır. Her şeyi(problemi) bir çivi olarak görmeye başlayacaktır.

“I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail. — Abraham Maslow said in 1966

Bütün sorunlarını, problemlerini aynı yöntem ile çözmeye çalışacaktır. (Maslow burda Metafor yapıyor aslında)

  • Çivi : problem, sorun, geliştirme, vb.
  • Çekiç : problemi çözme yöntemi.

Bu anti-pattern özellikle alternatif yöntemleri üzerine düşünmeyi önerir. Önceki projelerinizde çok büyük başarılar elde etmişseniz. Aynı;

  • modelin
  • yöntemin
  • yönetim modelinin
  • teknolojinin
  • kütüphanelerin
  • market stratejilerinin

yeni karşılaştığınız sorunlara aynı şekilde merhem olacağı, çözeceğinin garantisi yoktur. Bu ancak problem ne kadar önceki probleme benziyor ise o kadar geçerlidir. Hatta zaman faktörü ve kullanıcıların değiştiğini düşününce aynı yöntemin birebir çalışmayacağı bir gerçektir.

Burada mühendis olarak alternatifleri değerlendirme metodumuzun olup, bir problem geldiğinde direk bildiğimiz çözümü uygulamak yanında alternatiflerinide denemek, PoC (Proof Of Concept) çalışmaları yapmak çok önemlidir. Alternatifler arasında maliyet karşılaştırması yapıp, buna göre seçim yaparak teknoloji, kütüphane, yöntem seçmemiz daha doğru olur.

Önemli Not: Bazı yazılarda Golden Hammer Anti-pattern çözmek için biraz araştırma yapmanız yeterli şeklinde yazılar yazmışlar. Örneğin;

  • blog okuyun,
  • karşılaştırmalara bakın,
  • stackoverflow bakın
  • vb

yöntemler ile alternatifler oluşturun diyorlar. Gerçek dünya yukarıda bahsettiğimiz kadar basit değil.

Örneğin siz Spring Framework kullanıyorsunuz. Bu konuda yılları verip bir birikim yapmışsınız. Bu framework bir çok problemi çözüp veya nelerin çözülemeyeceğini öğrenmişsiniz.

Yeni bir problem var ve bu problem Spring ve B ürünü arasında karar veremiyorsunuz. B ürünü hatta daha uygun gibi gözüküyor. Ama geliştirme sırasında ihtiyaçlarınız daha genişledi ve B ürünü o kısımda yeterli desteği veremiyor ise işte ozaman sorunlar başlar. Bu sefer geçmişte Spring kısmında çözümüne ulaştığınız bir çok konuyu B ürünü içinde yapmaya çalışacak ve çok zaman harcayacaksınız.

İşte Gerçek Dünya;

  • Proje için zaman baskısı
  • Proje için bütçe ve kaynak baskısı
  • Proje için her an değişebilirlik ve yeni yetenek gereksinimleri
  • Proje içerisinde turnover rate yüksek olması
  • Müşteri ve Pazarın çok hızlı değişmesi.
  • Teknolojinin çok hızlı değişmesi
  • Regulasyon ve Pandemi gibi etkenler
  • vb..

Böyle çevik bir ortamda mühendislerin çözümü genelde hep altın çekiç olacaktır. Yani bildikleri araçları kullanmak. Ama bu paralel bir araştırma, okuma, denemelere engel değil. Belki yeterli bir araştırmadan sonra bu araçların bazılarını değiştirebiliriz. 😃

Okumaya Devam Et 😃

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

--

--