#DRY – don’t repeat yourself
#KISS – Keep it simple, stupid
#YAGNI – you aren’t gonna need it
#SLAP – Single Level of Abstraction
#4CS – clean code, clever code
#SOC – Separation of concerns
#GRASP – General Responsibility Assignment Software Pattern
#SRP – Single Responsibility

Kinds of bugs
Bloombug – a bug that accidentally generates money.
Counter bug – a bug you present when presented with a bug caused by the person presenting the bug.
Excalibur bug – when all developers within a company have tried to fix a particular bug but none are worthy have succeeded, so far.
Heisenbug – a bug that disappears or alters its characteristics when an attempt is made to study it.
Higgs-Bugson – a hypothetical bug predicted to exist based on a small number of possibly related event log entries and vague anecdotal reports from users, but it is difficult (if not impossible) to reproduce on a dev machine because you don’t really know if it’s there, and if it is there what is causing it. To find these you will need to invest in a Large Hadron debugger.
Hindenbug – a catastrophic data destroying bug – “Oh the humanity!”.
Loch Ness Monster Bug/Bug foot – a bug which cannot be reproduced or has only been sighted by one person.
Schrödin bug – refers to a function/feature that appears to fluctuate between buggy and correct (like Schrödinger’s cat, fluctuating between alive and dead), until somebody looks at the source code (opens the box), at which point it becomes permanently bugged.
Sorcerer’s apprentice mode bug – a bug in a protocol where, under some circumstances, the receipt of a message causes multiple messages to be sent, each of which, when received, triggers the same bug.
UFO bug – a bug presented by customers, who, even when they’re shown that it doesn’t exist, will repeatedly report it again and again, believing it is real.