SlideShare a Scribd company logo
1 of 36
Burak Selim Şenyurt
DT - Turkuaz
Mali İşler ve Ortak Modüller
Beş Dakikalık
Yolu Bir Saatte
Gitmek
(Bir AntiPattern Macerası)
İç Sesimin Dile Gelişi
● Bugün dört bin yedi yüz üç satırlık kod parçasını debug etmeye çalıştım.
● Belge gönderimini test etmek için birkaç ekrandan ve bir sürü iş kuralından
geçmek gerekiyor.
● Zaten herkes yeni bir if koşulu eklemiş. Bir tanecik de ben eklesem bişeycik
olmaz.
● Şu hatanın Stackoverflow’ da mutlak yeşil oklu bir çözümü vardır. Hemen
onu adapte edeyim.
● Bukalemun diye bir framework çıkmış. Çok iyi diyorlar. Bunu projede
kullanacağım.
Yiğit Özgür
En Büyük
Günahımdır
Teknik Borç
Forbes’un 2016 tarihli
araştırmasına göre CAST, teknik
borcun kod satırı başına yarattığı
maliyeti ortalama 3,61$ olarak
tespit etmiş.
(Java vb uygulamalar için 5,42$)
Gartner 2011’de, 2015 için teknik
borç maliyetinin 1 Trilyon $
olacağını öngörmüş ve 2020’de
bu rakam 3 Trilyon $’a ulaşmış.
Teknik Borç…
●Değişim maliyetlerini yükseltir,
●Kod bakımını güçleştirir,
●Okunabilir koddan uzaklaştırır,
●Çalışma zamanı hatalarını çoğaltır,
●Motivasyonu düşürür,
●İş birimini kızdırır!
●Risk almayı erteler
CostofChange
High
Low
Time
ResponsivenesstoChange
High
Low
optimal line
optimal line
Tech
Debt
Sebep…
Anti-pattern is just like pattern, except that instead of
solution it gives something that looks superficially like
a solution, but isn't one.
Andrew Koenig, 1995
Journal of Object Oriented Programming
Yani diyor ki!
Anti Pattern, başlangıçta
ideal gibi görünen ama
zaman içerisinde
geliştirilmekte olan ürüne
olumsuz etkilerde
bulunan, farklı
kategorilerden disiplin ve
yaklaşımların oluşturduğu
çözümler bütünüdür.
Software Design Object-Oriented Design Programming
Software Engineering
Methodological Configuration Management
Abstraction inversion
Ambiguous viewpoint
Big ball of mud
Database-as-IPC
Gold planting
Inner-platform effect
Input kludge
Interface bloat
Magic pushbutton
Race Hazard
Stovepipe System
Anemic domain model
BaseBean
Call super
Circle-ellipse problem
Circular Dependency
Constant interface
God Object
Object cesspool
Object orgy
Poltergeists
Sequential coupling
Yo-yo problem
Accidental complexity
Action at a distance
Blind Faith
Boat anchor
Busy waiting
Caching failure
Cargo cult programming
Coding by exception
Error hiding
Hard code
Lava flow
Loop-switch sequence
Magic numbers
Magic strings
Repeating yourself
Shotgun surgery
Soft code
Spaghetti code
Lasagna Code
Copy and past Programming
Golden Hammer
Improbability factor
Not invented here
Invented here
Premature Optimization
Programming by Permutation
Reinventing the square wheel
Silver bullet
Tester driven development
Dependency hell
DLL hell
Extension conflict
JAR Hell
Organizational Project Management Analysis
Social and Business Operations
Analysis Paralysis
Cash cow
Design by commitment
Escalation of commitment
Management by perkele
Management by objectives
Moral hazard
Mushroom management
Stovepipe or Silos
Vendor lock-in
Avalanche
Death march
Groupthink
Overengineering
Smoke and mirrors
Software bloat
Bystander apathy
God Object – Object Oriented Design
Tasarımın tek bir
parçasının (ki burada
kastedilen bir sınıftır) çok
fazla sayıda fonksiyona
konsantre olması.
SOLID Düşmanı!
Golden Hammer -
Methodological
Favori bir çözümün evrensel anlamda
kabul gördüğünü düşünmek, onu
sahiplenmek.
(Oysaki bazı problemler aynı yöntemler
ve yaklaşımlarla çözülmez)
Lava Flow -
Programming
Lüzumsuz veya düşük kaliteli
kodları, kaldırma maliyetlerinin
yüksek olması veya öngörülemeyen
sebepler nedeniyle barındırmaya
devam etmek.
(Single-Developer veya Lone Wolf
Written Code)
Over Engineering – Project Management
Bir projeyi (hatta sprint
içindeki bir görevi)
gereğinden daha
karmaşık ve güç hale
getirmek için kaynak
harcamak.
(Bir problemi
olduğundan daha
karmışık gibi algılayıp
çözmeye çalışmak)
Boat Anchor - Programming
Herhangi bir amaçla
kullanılmayan bir sistem
parçasını tutmak/unutmak.
(“Daha sonra bu fonksiyona
ihtiyacımız olabilir” denilerek
yazılan fakat yazıldığı yerde
unutulan kod parçaları)
Reinventing the Square Wheel -
Methodological
Var olan bir çözüm yerine
ondan daha kötü olan özel bir
çözüm üretme hatasına
düşmek.
(Belli çözüm yöntemleri ve
prensipleri bilmeden veya
düşünmeden yol almak)
Spaghetti Code -
Programming
Özellikle kod yapılarının kötü
kullanılması nedeniyle güç
anlaşılır programların oluşması.
(Neredeyse her iş süreci için ayrı
birer fonksiyonun yazılması söz
konusu olduğunda...)
Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt
Copy-Paste Programming - Methodological
Daha generic bir çözüm
üretmek yerine var olan
kodları kopyalayarak
geliştirme yapmak.
(Yazılımın herhangi bir
yerinde uygulanan kodun,
ihtiyaç olunan başka bir
yerde aynen kopyalanarak
kullanılmaya devam
etmesi)
Cargo Cult Programming - Programming
Desen ve metotları ne/nasıl/niçin
olduğunu anlamadan kullanmak.
(Geliştirici bir çözüm için kullandığı
bileşenleri, prensip ile desenleri,
kod parçalarının nasıl
çalıştığını/niye kullanıldığını
bilmeden uygular)
Teşhis
ve
Tedavi
Sormak Gerek
●Bir tasarım kalıbını veya kod parçasını nasıl çalıştığını anlamadan
kullanıyor muyuz?
●Ne kadar iş kuralı varsa hepsini arayüz arkasına gömüyor muyuz?
●Kabul görmüş bir çözüm yerine problemin özel olduğunu düşünüp
tekrardan yazıyor muyuz?
●Bir zamanlar deneme amaçlı yazılmış kütüphaneleri bir ürünün
geliştirilmesinde doğrudan kullanıyor muyuz?
●Kernel, Utility, Helper isimli çok amaçlı devasa sınıflar kullanıyor muyuz?
●Bir başkasının yazdığı kodu, içeriğinde birazcık değişiklik ile çoğaltıyor
muyuz?
●Yıllar sonra hiç kullanılmayan kodlara rastlıyor muyuz?
Sonarqube ile Kalite Kontrolü
Fortify ile Açıkların Tespiti
Sürekli Test Edilebilir Kalmak
CI/CD Pipeline Avantajı
Çeviklik
Code Review
Sofradan Eksik
Olmamalı
Çekirdekten Yetiştirmek Şart
Her şey bir yana
birey olarak teknik
borç üretmekten
uzak durmalıyız.
Dikkatinizi Çektiysem...

More Related Content

Similar to Beş Dakikalik Yolu Bir Saatte Gitmek - Bir AntiPattern Macerası

GDO'suz Yazılım Geliştirme Teknikleri
GDO'suz Yazılım Geliştirme TeknikleriGDO'suz Yazılım Geliştirme Teknikleri
GDO'suz Yazılım Geliştirme TeknikleriLemi Orhan Ergin
 
Yasayan Bir Organizma: YAZILIM - YTU-KVK Finans ve Yazilim Gunleri - 18.11.2013
Yasayan Bir Organizma: YAZILIM - YTU-KVK Finans ve Yazilim Gunleri - 18.11.2013Yasayan Bir Organizma: YAZILIM - YTU-KVK Finans ve Yazilim Gunleri - 18.11.2013
Yasayan Bir Organizma: YAZILIM - YTU-KVK Finans ve Yazilim Gunleri - 18.11.2013Hakan ERDOGAN
 
Eticaret akademi Yazılım ve IT süreçleri
Eticaret akademi Yazılım ve IT süreçleriEticaret akademi Yazılım ve IT süreçleri
Eticaret akademi Yazılım ve IT süreçleriMurat Kader
 
E-ticarette Bilgi Teknolojileri - Bilgi Üniversitesi E-ticaret Akademi 2012.0...
E-ticarette Bilgi Teknolojileri - Bilgi Üniversitesi E-ticaret Akademi 2012.0...E-ticarette Bilgi Teknolojileri - Bilgi Üniversitesi E-ticaret Akademi 2012.0...
E-ticarette Bilgi Teknolojileri - Bilgi Üniversitesi E-ticaret Akademi 2012.0...Hakan ERDOGAN
 
Kod Kalitesinin Sürekli Denetimi: SonarQube
Kod Kalitesinin Sürekli Denetimi: SonarQubeKod Kalitesinin Sürekli Denetimi: SonarQube
Kod Kalitesinin Sürekli Denetimi: SonarQubeEmre Dündar
 
CETurk Cevik Günü
CETurk Cevik GünüCETurk Cevik Günü
CETurk Cevik Günüersanbilik
 
Software development life cycle yazılım geliştirme yaşam döngüsü
Software development life cycle   yazılım geliştirme yaşam döngüsüSoftware development life cycle   yazılım geliştirme yaşam döngüsü
Software development life cycle yazılım geliştirme yaşam döngüsüMesut Günes
 
Erp Yolculuguna Cikacaklara Oneriler
Erp Yolculuguna Cikacaklara OnerilerErp Yolculuguna Cikacaklara Oneriler
Erp Yolculuguna Cikacaklara OnerilerÖzer Mustafa Onar
 
Bilgisayar Mühendisliğinde Kariyer ve Çevik Yazılım
Bilgisayar Mühendisliğinde Kariyer ve Çevik Yazılım Bilgisayar Mühendisliğinde Kariyer ve Çevik Yazılım
Bilgisayar Mühendisliğinde Kariyer ve Çevik Yazılım Murat Çabuk, MBA
 
CADENAS PARTsolutions - Stratejik Parça Yönetim Sistemi
CADENAS PARTsolutions - Stratejik Parça Yönetim SistemiCADENAS PARTsolutions - Stratejik Parça Yönetim Sistemi
CADENAS PARTsolutions - Stratejik Parça Yönetim SistemiAkın Terzi
 
CBAP Uluslararası İş Analisti Sertifikasyonu
CBAP Uluslararası İş Analisti SertifikasyonuCBAP Uluslararası İş Analisti Sertifikasyonu
CBAP Uluslararası İş Analisti SertifikasyonuMuhammed Özdemir
 
Hepsiburada Micro Frontends Dönüşümü
Hepsiburada Micro Frontends DönüşümüHepsiburada Micro Frontends Dönüşümü
Hepsiburada Micro Frontends DönüşümüOğuzhan Aslan
 
Programlama danismani
Programlama danismaniProgramlama danismani
Programlama danismanisersld96
 
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleriVisual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleriMurat Başeren
 

Similar to Beş Dakikalik Yolu Bir Saatte Gitmek - Bir AntiPattern Macerası (20)

GDO'suz Yazılım Geliştirme Teknikleri
GDO'suz Yazılım Geliştirme TeknikleriGDO'suz Yazılım Geliştirme Teknikleri
GDO'suz Yazılım Geliştirme Teknikleri
 
Yasayan Bir Organizma: YAZILIM - YTU-KVK Finans ve Yazilim Gunleri - 18.11.2013
Yasayan Bir Organizma: YAZILIM - YTU-KVK Finans ve Yazilim Gunleri - 18.11.2013Yasayan Bir Organizma: YAZILIM - YTU-KVK Finans ve Yazilim Gunleri - 18.11.2013
Yasayan Bir Organizma: YAZILIM - YTU-KVK Finans ve Yazilim Gunleri - 18.11.2013
 
Eticaret akademi Yazılım ve IT süreçleri
Eticaret akademi Yazılım ve IT süreçleriEticaret akademi Yazılım ve IT süreçleri
Eticaret akademi Yazılım ve IT süreçleri
 
E-ticarette Bilgi Teknolojileri - Bilgi Üniversitesi E-ticaret Akademi 2012.0...
E-ticarette Bilgi Teknolojileri - Bilgi Üniversitesi E-ticaret Akademi 2012.0...E-ticarette Bilgi Teknolojileri - Bilgi Üniversitesi E-ticaret Akademi 2012.0...
E-ticarette Bilgi Teknolojileri - Bilgi Üniversitesi E-ticaret Akademi 2012.0...
 
Kod Kalitesinin Sürekli Denetimi: SonarQube
Kod Kalitesinin Sürekli Denetimi: SonarQubeKod Kalitesinin Sürekli Denetimi: SonarQube
Kod Kalitesinin Sürekli Denetimi: SonarQube
 
CETurk Cevik Günü
CETurk Cevik GünüCETurk Cevik Günü
CETurk Cevik Günü
 
Software development life cycle yazılım geliştirme yaşam döngüsü
Software development life cycle   yazılım geliştirme yaşam döngüsüSoftware development life cycle   yazılım geliştirme yaşam döngüsü
Software development life cycle yazılım geliştirme yaşam döngüsü
 
Erp Yolculuguna Cikacaklara Oneriler
Erp Yolculuguna Cikacaklara OnerilerErp Yolculuguna Cikacaklara Oneriler
Erp Yolculuguna Cikacaklara Oneriler
 
Bilgisayar Mühendisliğinde Kariyer ve Çevik Yazılım
Bilgisayar Mühendisliğinde Kariyer ve Çevik Yazılım Bilgisayar Mühendisliğinde Kariyer ve Çevik Yazılım
Bilgisayar Mühendisliğinde Kariyer ve Çevik Yazılım
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
CADENAS PARTsolutions - Stratejik Parça Yönetim Sistemi
CADENAS PARTsolutions - Stratejik Parça Yönetim SistemiCADENAS PARTsolutions - Stratejik Parça Yönetim Sistemi
CADENAS PARTsolutions - Stratejik Parça Yönetim Sistemi
 
CBAP Uluslararası İş Analisti Sertifikasyonu
CBAP Uluslararası İş Analisti SertifikasyonuCBAP Uluslararası İş Analisti Sertifikasyonu
CBAP Uluslararası İş Analisti Sertifikasyonu
 
Design Patterns in PHP
Design Patterns in PHPDesign Patterns in PHP
Design Patterns in PHP
 
Çevik Yaklaşım ve Scrum
Çevik Yaklaşım ve ScrumÇevik Yaklaşım ve Scrum
Çevik Yaklaşım ve Scrum
 
Erlang web-frameworks
Erlang web-frameworksErlang web-frameworks
Erlang web-frameworks
 
Hepsiburada Micro Frontends Dönüşümü
Hepsiburada Micro Frontends DönüşümüHepsiburada Micro Frontends Dönüşümü
Hepsiburada Micro Frontends Dönüşümü
 
Programlama danismani
Programlama danismaniProgramlama danismani
Programlama danismani
 
Çevik testler
Çevik testlerÇevik testler
Çevik testler
 
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleriVisual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
 
Hora sunum
Hora sunumHora sunum
Hora sunum
 

More from Burak Selim Şenyurt (19)

Monolitik Yapılarda Teknik Borçlardan Kurtulmak
Monolitik Yapılarda Teknik Borçlardan KurtulmakMonolitik Yapılarda Teknik Borçlardan Kurtulmak
Monolitik Yapılarda Teknik Borçlardan Kurtulmak
 
Bugün Yarınların için Ne Yapacaksın?
Bugün Yarınların için Ne Yapacaksın?Bugün Yarınların için Ne Yapacaksın?
Bugün Yarınların için Ne Yapacaksın?
 
Kaosu Körüklemek
Kaosu KörüklemekKaosu Körüklemek
Kaosu Körüklemek
 
Bir .Net Geliştiricisinin Ruby ile İmtihanı
Bir .Net Geliştiricisinin Ruby ile İmtihanıBir .Net Geliştiricisinin Ruby ile İmtihanı
Bir .Net Geliştiricisinin Ruby ile İmtihanı
 
SOA Gerçekleri
SOA GerçekleriSOA Gerçekleri
SOA Gerçekleri
 
Finans Sektöründe Verimli Yazılımcı Olabilmek
Finans Sektöründe Verimli Yazılımcı OlabilmekFinans Sektöründe Verimli Yazılımcı Olabilmek
Finans Sektöründe Verimli Yazılımcı Olabilmek
 
Enterprise Applications
Enterprise ApplicationsEnterprise Applications
Enterprise Applications
 
NoSQL - Yazılımcı Bakışıyla
NoSQL - Yazılımcı BakışıylaNoSQL - Yazılımcı Bakışıyla
NoSQL - Yazılımcı Bakışıyla
 
Anti-Patterns
Anti-PatternsAnti-Patterns
Anti-Patterns
 
C# Akademi 2005
C# Akademi 2005C# Akademi 2005
C# Akademi 2005
 
Netron Techweek 2007 WCF
Netron Techweek 2007 WCFNetron Techweek 2007 WCF
Netron Techweek 2007 WCF
 
Yazilim Zirvesi 2008
Yazilim Zirvesi 2008Yazilim Zirvesi 2008
Yazilim Zirvesi 2008
 
Ready to Rock
Ready to RockReady to Rock
Ready to Rock
 
C# 4.0 new features - innova
C# 4.0   new features - innovaC# 4.0   new features - innova
C# 4.0 new features - innova
 
Bankacılık ve SOA
Bankacılık ve SOABankacılık ve SOA
Bankacılık ve SOA
 
Trakya Üniversitesi Workshop
Trakya Üniversitesi WorkshopTrakya Üniversitesi Workshop
Trakya Üniversitesi Workshop
 
Kariyerini Çiz
Kariyerini ÇizKariyerini Çiz
Kariyerini Çiz
 
Geleceğin Programıcısı
Geleceğin ProgramıcısıGeleceğin Programıcısı
Geleceğin Programıcısı
 
Tfs ile duzenli proje gelistirme
Tfs ile duzenli proje gelistirmeTfs ile duzenli proje gelistirme
Tfs ile duzenli proje gelistirme
 

Beş Dakikalik Yolu Bir Saatte Gitmek - Bir AntiPattern Macerası

  • 1. Burak Selim Şenyurt DT - Turkuaz Mali İşler ve Ortak Modüller Beş Dakikalık Yolu Bir Saatte Gitmek (Bir AntiPattern Macerası)
  • 2.
  • 3.
  • 4. İç Sesimin Dile Gelişi ● Bugün dört bin yedi yüz üç satırlık kod parçasını debug etmeye çalıştım. ● Belge gönderimini test etmek için birkaç ekrandan ve bir sürü iş kuralından geçmek gerekiyor. ● Zaten herkes yeni bir if koşulu eklemiş. Bir tanecik de ben eklesem bişeycik olmaz. ● Şu hatanın Stackoverflow’ da mutlak yeşil oklu bir çözümü vardır. Hemen onu adapte edeyim. ● Bukalemun diye bir framework çıkmış. Çok iyi diyorlar. Bunu projede kullanacağım.
  • 7. Forbes’un 2016 tarihli araştırmasına göre CAST, teknik borcun kod satırı başına yarattığı maliyeti ortalama 3,61$ olarak tespit etmiş. (Java vb uygulamalar için 5,42$) Gartner 2011’de, 2015 için teknik borç maliyetinin 1 Trilyon $ olacağını öngörmüş ve 2020’de bu rakam 3 Trilyon $’a ulaşmış.
  • 8. Teknik Borç… ●Değişim maliyetlerini yükseltir, ●Kod bakımını güçleştirir, ●Okunabilir koddan uzaklaştırır, ●Çalışma zamanı hatalarını çoğaltır, ●Motivasyonu düşürür, ●İş birimini kızdırır! ●Risk almayı erteler
  • 11. Anti-pattern is just like pattern, except that instead of solution it gives something that looks superficially like a solution, but isn't one. Andrew Koenig, 1995 Journal of Object Oriented Programming
  • 12. Yani diyor ki! Anti Pattern, başlangıçta ideal gibi görünen ama zaman içerisinde geliştirilmekte olan ürüne olumsuz etkilerde bulunan, farklı kategorilerden disiplin ve yaklaşımların oluşturduğu çözümler bütünüdür.
  • 13.
  • 14. Software Design Object-Oriented Design Programming Software Engineering Methodological Configuration Management Abstraction inversion Ambiguous viewpoint Big ball of mud Database-as-IPC Gold planting Inner-platform effect Input kludge Interface bloat Magic pushbutton Race Hazard Stovepipe System Anemic domain model BaseBean Call super Circle-ellipse problem Circular Dependency Constant interface God Object Object cesspool Object orgy Poltergeists Sequential coupling Yo-yo problem Accidental complexity Action at a distance Blind Faith Boat anchor Busy waiting Caching failure Cargo cult programming Coding by exception Error hiding Hard code Lava flow Loop-switch sequence Magic numbers Magic strings Repeating yourself Shotgun surgery Soft code Spaghetti code Lasagna Code Copy and past Programming Golden Hammer Improbability factor Not invented here Invented here Premature Optimization Programming by Permutation Reinventing the square wheel Silver bullet Tester driven development Dependency hell DLL hell Extension conflict JAR Hell
  • 15. Organizational Project Management Analysis Social and Business Operations Analysis Paralysis Cash cow Design by commitment Escalation of commitment Management by perkele Management by objectives Moral hazard Mushroom management Stovepipe or Silos Vendor lock-in Avalanche Death march Groupthink Overengineering Smoke and mirrors Software bloat Bystander apathy
  • 16. God Object – Object Oriented Design Tasarımın tek bir parçasının (ki burada kastedilen bir sınıftır) çok fazla sayıda fonksiyona konsantre olması. SOLID Düşmanı!
  • 17. Golden Hammer - Methodological Favori bir çözümün evrensel anlamda kabul gördüğünü düşünmek, onu sahiplenmek. (Oysaki bazı problemler aynı yöntemler ve yaklaşımlarla çözülmez)
  • 18. Lava Flow - Programming Lüzumsuz veya düşük kaliteli kodları, kaldırma maliyetlerinin yüksek olması veya öngörülemeyen sebepler nedeniyle barındırmaya devam etmek. (Single-Developer veya Lone Wolf Written Code)
  • 19. Over Engineering – Project Management Bir projeyi (hatta sprint içindeki bir görevi) gereğinden daha karmaşık ve güç hale getirmek için kaynak harcamak. (Bir problemi olduğundan daha karmışık gibi algılayıp çözmeye çalışmak)
  • 20. Boat Anchor - Programming Herhangi bir amaçla kullanılmayan bir sistem parçasını tutmak/unutmak. (“Daha sonra bu fonksiyona ihtiyacımız olabilir” denilerek yazılan fakat yazıldığı yerde unutulan kod parçaları)
  • 21. Reinventing the Square Wheel - Methodological Var olan bir çözüm yerine ondan daha kötü olan özel bir çözüm üretme hatasına düşmek. (Belli çözüm yöntemleri ve prensipleri bilmeden veya düşünmeden yol almak)
  • 22. Spaghetti Code - Programming Özellikle kod yapılarının kötü kullanılması nedeniyle güç anlaşılır programların oluşması. (Neredeyse her iş süreci için ayrı birer fonksiyonun yazılması söz konusu olduğunda...) Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt
  • 23. Copy-Paste Programming - Methodological Daha generic bir çözüm üretmek yerine var olan kodları kopyalayarak geliştirme yapmak. (Yazılımın herhangi bir yerinde uygulanan kodun, ihtiyaç olunan başka bir yerde aynen kopyalanarak kullanılmaya devam etmesi)
  • 24. Cargo Cult Programming - Programming Desen ve metotları ne/nasıl/niçin olduğunu anlamadan kullanmak. (Geliştirici bir çözüm için kullandığı bileşenleri, prensip ile desenleri, kod parçalarının nasıl çalıştığını/niye kullanıldığını bilmeden uygular)
  • 26. Sormak Gerek ●Bir tasarım kalıbını veya kod parçasını nasıl çalıştığını anlamadan kullanıyor muyuz? ●Ne kadar iş kuralı varsa hepsini arayüz arkasına gömüyor muyuz? ●Kabul görmüş bir çözüm yerine problemin özel olduğunu düşünüp tekrardan yazıyor muyuz? ●Bir zamanlar deneme amaçlı yazılmış kütüphaneleri bir ürünün geliştirilmesinde doğrudan kullanıyor muyuz? ●Kernel, Utility, Helper isimli çok amaçlı devasa sınıflar kullanıyor muyuz? ●Bir başkasının yazdığı kodu, içeriğinde birazcık değişiklik ile çoğaltıyor muyuz? ●Yıllar sonra hiç kullanılmayan kodlara rastlıyor muyuz?
  • 27. Sonarqube ile Kalite Kontrolü
  • 30.
  • 35. Her şey bir yana birey olarak teknik borç üretmekten uzak durmalıyız.